Поднимаем файловый сервер на Samba под CentOS

9 ноября 2015

Samba — это открытый пакет программ для nix-систем, в которых реализованы некоторые фичи, предоставляемые Windows Server. Samba может выступать в качестве контроллера домена, сервиса Active Directory, может шарить принтеры и директории по сети. В рамках этой заметки мы рассмотрим использование Samba в качестве файлового сервера. Мотивация для использования именно Samba, а не, скажем, FTP, может быть разная. Как минимум, с ее помощью и вправду очень удобно перекидывать файлы между Windows- и Linux-машинами. Просто монтируешь каталог и вперед.

Ниже будет рассмотрена установка Samba под CentOS. Установка под другие дистрибутивы Linux практически ничем не отличается. Далее по тексту предполагается, что Samba поднимается на машине с адресом 10.24.5.42.

Шарим каталог всем

Установка Samba:

sudo yum install samba

Проверяем, что в /etc/samba/smb.conf в секции [global] не закомментирована строчка:

security = user

Также можно поменять название workgroup. У меня было написано так:

workgroup = MYGROUP

В конце файла дописываем:

[share]
    comment = Samba File Server Share
    path = /srv/samba/share
    browsable = yes
    guest ok = yes
    read only = no
    create mask = 0755

Далее выполняем команды:

sudo mkdir -p /srv/samba/share
sudo chown nobody:nobody /srv/samba/share/

sudo service smb start
sudo service nmb start

# запуск сервисов при старте системы
sudo chkconfig nmb on
sudo chkconfig smb on

Теперь, скажем, в дэфолтном файловом менеджере Unity можно прицепиться к smb://10.24.5.42/share, создать там каталогов и залить в них файлов. А также проверить, что эти изменения происходят не только локально, но и на сервере.

Логи Samba лежат в /var/log/samba/. Используемые Samba порты — 139 и 445. Их можно пробрасывать через SSH или с помощью Ncat. Это работает, я проверял.

Доступ по логину и паролю

Давать доступ к каталогу всем подряд небезопасно. Давайте исправим эту ситуацию:

sudo adduser smbuser
sudo smbpasswd -a smbuser
sudo mkdir -p /srv/samba/smbuser
sudo chown smbuser:smbuser /srv/samba/smbuser

В /etc/samba/smb.conf дописываем:

[smbuser]
    path = /srv/samba/smbuser
    available = yes
    valid users = smbuser
    read only = no
    browsable = yes
    public = yes
    writable = yes

Говорим:

sudo service smb restart
sudo service nmb restart

Монтируем каталог в Linux и Windows:

Файловый сервер на Samba

Ура, файлы успешно шарятся между Windows и Linux!

Монтирование через CLI

Если GUI недоступен, примонтировать каталог можно так:

sudo yum install samba-client samba-common cifs-utils
mkdir smbuser
sudo mount.cifs //10.24.5.42/smbuser /home/eax/smbuser \
  -o user=smbuser,password=PASSWORD,uid=1000 # 1000 - uid нашего юзера

Если каталог стал больше не нужен, говорим:

sudo umount /home/eax/smbuser/

Заметьте, что если система крутится в контейнере вроде Docker или OpenVZ, это может не работать, так как вы не сможете подгрузить нужные модули ядра.

В этом случае mount.cifs ругнется:

mount error: cifs filesystem not supported by the system

… а команда modprobe cifs покажет:

FATAL: Module cifs not found.

Это все, о чем я хотел рассказать. Надеюсь, вы нашли данную информацию полезной.

Дополнение: Вас также могут заинтересовать посты Основы использования NFS на примере FreeBSD и Памятка по использованию WebDAV.

Метки: .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.