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:
Ура, файлы успешно шарятся между 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.
А используете ли вы Samba и если да, то для решения каких задач?