В заметке рассматривается установка на CentOS Samba для совместного использования файлов по сети по протоколу smb.
В приведенном примере установка производилась на CentOS 6.2 с включенной опцией SELinux.
Базовая установка производится с помощью привычной команды yum:
#yum install samba
После установки нужно откорректировать файл /etc/samba/smb.conf. Внизу файла находятся заготовки для создания расшареных папок. Их можно раскомментировать, получив готовые к шаре, к примеру, общую папку для всех пользователей или расшарить домашние папки пользователя.
Расшариваемые настройки интуитивно понятны. Кроме настроек внизу файла советую обратить на строку
hosts allow = {кто_может_подключиться}
У меня значение установлено как 127. 192.168.0 - позволяет подключаться или самому себе или любым иннтерфейсам сети 192.168.0. (пустым местом можно считать классовую маску, здесь /24). Пользователи, подключающиеся через интерфейс, который смотрит в Internet не смогут получить доступ к Samba.
Пароли и пользователи в Samba
Возможно вы захотите сделать копию файла passwd, который содержит обычные пароли системы для использования тех же учетных записей в Samba. Для этого выполните команду:
#cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
Это не отменяет команду #smbpasswd username для установки пароля пользователя при подключении.
Также, в конфигурационном файле /etc/samba/smb.conf в этом случае необходимо будет включить опцию, которая бы указывала, что пароли идут в шифрованном виде. Если соответствующей в файле нет, пропишите ее самостоятельно:
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
Это базовая настройка Samba на CentOS 6.2, расширенные опции всегда можно найти в документации или хелпе.
Samba и SELinux
Возможная проблема - после того как все настройки были сделаны, пользователи на удаленных компьютерах видят расшаренные папки в системе CentOS через Samba, но не могут получить к ним доступ. Изменение прав на эти папки проблему не решает.
Это вызвано действием SELinux, который по умолчанию включен. Необходимо указать контекст для SELinux по отношению к этим папкам. Для примера, общую расшаренную папку в CentOS можно пометить как:
chcon -R -t samba_share_t /{путь_к_общему_ресурсу}
ВНИМАНИЕ! Минус и тире - разные вещи :)
В случае, если необходимо расшарить доступ к домашним папкам пользователя, необходимо выполнить команду:
#setsebool -P samba_enable_home_dirs 1
это установка типа Boolean, соответственно, если вы хотите чтобы через Samba нельзя было получить доступ к домашним папкам в CentOS - просто выполните идентичную команду с 0 в конце.
Совмещение Apache и Samba
Если есть непосредственный доступ к Web-серверу CentOS, в случае работы над Web-проектом было бы удобно обращаться на прямую по сети с сайтом как с локальной папкой. Решением для этого может быть объединение прав на Самбу и Апач.
Однако, SELinux имеет разные контексты для работы двух демонов этих сервисов. Решением может быть применение общего контекста, который разрешен для обоих (вместо /var/www укажите место, где крутятся ваши сайты):
#chcon -R -t public_content_rw_t /var/www
После применения этого контекста общий доступ будет только на чтение, через Samba сохнарять изменения будет нельзя. Чтобы этого избежать, можно добавить флаг, разрешающий анонимные записи демоном smbd:
#setsebool -P allow_smbd_anon_write 1
|