На самой настройке Samba, я не буду заострять внимание, ибо материалов на эту тему — тонны.
Я лишь расскажу, как правильно подготовить и установить samba на Fedora.
Ну и приведу мой махонький файлик smb.conf для примера.
Установка
Установка достаточно проста.
Ставим пакеты:
1 | yum install samba |
Настройка samba
Редактируем файл /etc/samba/smb.conf по вкусу, я использую простенький и понятный файл, такого вида:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | [global] workgroup = WORKGROUP server string = Alexei Laptop netbios name = ALEX-LAPTOP printcap name = cups load printers = yes printing = cups cups options = raw log file = /var/log/samba/log.%m max log size = 50 encrypt passwords = yes map to guest = bad user security = user dns proxy = no case sensitive = auto dos charset = 866 unix charset = UTF-8 passdb backend = tdbsam client ntlmv2 auth = yes [public] comment = Public Stuff path = /tmp/samba-shares force user = nobody force group = nobody writable = yes guest ok = yes create mask = 0664 directory mask = 0777 [alex] comment = Alexei stuff path = /home/alex force user = alex force group = alex writable = yes guest ok = yes create mask = 0644 directory mask = 0755 [media] comment = Media stuff path = /media force user = alex force group = alex writable = yes guest ok = yes create mask = 0644 directory mask = 0755 |
Обрати, друг, внимание, что force user и force group должны соответствовать правам на данные каталоги. Это важно, без этого не будет работать.
SELinux
Самое вкусное! Из-за нежелания, лени или еще чего-то, многие отключают SELinux, но я умею его готовить, потому не отключаю 😉
По-умолчанию SELinux в Fedora почти ничего samba-серверу не разрешает, это в общем-то правильно, ибо не фига.
Но на то мы и тут, давайте разрешать…
Список возможных «переключателей» разрешений, можно посмотреть такой командой:
1 | getsebool -a | grep -E "smb|samba" |
В ответ мы получим, что-то вроде:
allow_smbd_anon_write --> off samba_create_home_dirs --> off samba_domain_controller --> off samba_enable_home_dirs --> off samba_export_all_ro --> off samba_export_all_rw --> off samba_run_unconfined --> off samba_share_fusefs --> off samba_share_nfs --> off use_samba_home_dirs --> off virt_use_samba --> off
Ну и включаем логику, последовательно разрешаем то, что нам надо:
allow_smbd_anon_write | разрешить запись гостями (не авторизованными пользователями) |
allow_smbd_anon_write | разрешить запись гостями (не авторизованными пользователями) |
samba_create_home_dirs | samba может создавать домашние каталоги (обычно это полезно в доменах) |
samba_domain_controller | разрешить использование в качестве контроллера домена |
samba_enable_home_dirs | разрешить шарить пользовательские каталоги |
samba_export_all_ro | разрешить любой экспорт на «только чтение» |
samba_export_all_rw | тоже самое для «читать-писать» |
samba_run_unconfined | разрешить samba запускать скрипты с контекстом unconfined (это неопределённый контекст SELinux) |
samba_share_fusefs | разрешить шарить примонтированные fuse’ом каталоги (т.е. например в /media смотнирован ntfs-диск, который надо бы расшарить, вот этого сделать не получится, пока данный переключатель выключен) |
samba_share_nfs | тоже самое, но для NFS-монтировок |
use_samba_home_dirs | разрешает использовать каталоги /home |
virt_use_samba | виртуалы могут использовать samba с хоста |
Включаем командой setsebool -P имя=значение имя2=значение2. Т.е. например себе я включаю следущие «переключатели»:
1 | setsebool -P virt_use_samba=1 use_samba_home_dirs=1 samba_share_fusefs=1 samba_export_all_rw=1 samba_export_all_ro=1 samba_enable_home_dirs=1 allow_smbd_anon_write=1 |
Внимание! Команда выполняется достаточно продолжительное время.
Запускаем демоны
Для Fedora 14 мы запускаем сами демоны так:
1 2 | service smb start service nmb start |
А включаем запуск по-умолчанию при загрузке так:
1 2 | chkconfig smb on chkconfig nmb on |
Теперь демоны будут стартовать вместе с системой.
Для Fedora 15 и выше «правильные» команды немного другие, запуск демонов:
1 2 | systemctl start smb.service systemctl start nmb.service |
И включение демонов в автостарт, также, изменился:
1 2 | systemctl enable smb.service systemctl enable nmb.service |
Если кто-то из них не запускается, то значит намудрил ты, дружище с настройками 🙂
Firewall
Поскольку iptables (firewall) включен в Fedora по-умолчанию, сразу после установки системы. Постольку мы и его отключать не будем, а будем воспитывать.
Правильный путь воспитания — это запустить одну из нижеследующих команд:
system-config-firewall — для GUI интерфейса, или
system-config-firewall-tui — прямо в консоле.
Интерфейс этих приложений прост до утрированности, нам надо включить (разрешить) два набора портов: для Samba (для самого сервера, чтобы клиенты могли подключаться извне) и Клиент Samba (для nmbd, чтобы компьютер видел другие компьютеры, а они, в свою очередь — видели его).
Включили? Проверяем:
1 | grep -E "137|138|139|445" /etc/sysconfig/ip*tables |
Мы должны получить в ответ, что-то вроде этого:
1 2 3 4 5 6 7 8 9 10 11 12 13 | # grep -E "137|138|139|445" /etc/sysconfig/ip*tables /etc/sysconfig/ip6tables:-A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT /etc/sysconfig/ip6tables:-A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT /etc/sysconfig/ip6tables:-A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT /etc/sysconfig/ip6tables:-A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT /etc/sysconfig/ip6tables:-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT /etc/sysconfig/ip6tables:-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT /etc/sysconfig/iptables:-A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT /etc/sysconfig/iptables:-A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT /etc/sysconfig/iptables:-A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT /etc/sysconfig/iptables:-A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT /etc/sysconfig/iptables:-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT /etc/sysconfig/iptables:-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT |
Тогда всё отлично, если не получили — то: а) что-то не то тыкнули, б) утилита s-c-f не работает.
NetworkManager
При частых отключениях/переключениях сетей nmbd отваливается. Это старый баг, который в федоре почему-то считают фичей.
Лечится достаточно просто, надо добавить файл /etc/NetworkManager/dispatcher.d/20-samba с таким вот содержимым:
1 2 3 4 5 6 7 | #!/bin/sh case "$2" in up|down) /bin/systemctl restart nmb.service || : ;; esac |
И сделать его исполняемым:
chmod +x /etc/NetworkManager/dispatcher.d/20-samba
Ну или если используется старая Fedora (или CentOS/ScientificLinux/RHEL), то команда в строке 5 должна быть такой:
1 | /sbin/service nmb restart |
ОБНОВЛЕНИЕ!
Нашел очень важную опцию для smb.conf, когда Linux-тачка является клиентом, а не сервером:
1 | client ntlmv2 auth = yes |
Без этой опции в /etc/samba/smb.conf наутилус и прочие GUI отказываются нормально ходить на samba-сервер Mac OS X, например.
Вот и всё, таким образом мы получили рабочий samba-сервер.
Комментарии приветствуются! Я могу пропустить что-то важное, но буду рад дополнить материал.
а в AD рабочую станцию с Fedora вводить не пробовали?
когда-то очень-очень давно, и уже не помню, что тогда было и как