Настройка файлового обмена между Windows и Linux.(Samba)

В моем любимом Windows окружение появился ноут с Debian. И конечно мне захотелось расшарить его на сеть, а это задача оказалась не как в винде, парой нажатий кнопок. На выручку пришел  программный пакет Samba.

Вообще Samba это очень мощный инструмент, которые позволяют обращаться к сетевым дискам и принтерам на различных операционных системах по протоколу SMB/CIFS. Samba может выступать в роли контроллера домена и сервиса Active Directory, совместимого с реализацией Windows 2000, и способна обслуживать все поддерживаемые Microsoft версии Windows-клиентов, в том числе Windows 10. Samba включена практически во все дистрибутивы Linux. Скорей всего у вас он тоже есть, проверьте это )

whereis samba

Если вдруг нету (

apt-get install samba

Basic настройка Samba

Конфигурационный файл /etc/samba/smb.conf содержит все основные настройки.

  • какие именно папки и принтеры будут видны пользователям других машин в сети;
  • кто и при каких условиях будет иметь доступ к файлам и принтерам;
  • смогут ли клиенты не только читать, но и записывать данные;
  • каким образом будут вестись логи;
  • каким образом будет осуществляться подключение и т. д.

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

adduser --system share # --system значит создаем системного пользователя с минимальным наборам прав.
chown share /home/share

Добавим теперь настройки в файл /etc/samba/smb.conf , не забудьте сделать резервную копию на всякий случай )

[public_share]
comment = No limits here. # Описание и т.д
path = /home/share        # Путь к папке
guest ok = yes            # Разрешает подключаться без логина и пароля, синоним public
browseable = yes          # Определяет, будет ли наша шара видна внутри сети
writable = yes            # Разрешает запись
create mask = 0644
directory mask = 0755
force user = share        # принудительно определяет каждого подключившегося как пользователя share

Управление доступом.

В качестве пользователей Samba рассматривает уже существующих пользователей Linux. Но пароль для них надо устанавливать отдельно. Для этого существует утилита  smbpasswd.

smbpasswd -a username #Установить пароль для пользователя username

smbpassword -e username # Деактивировать пользователя

Вместо username подставьте имя нужного (и обязательно существующего!) пользователя Linux. В процессе потребуется дважды ввести пароль.

Если у вас или других пользователей есть компьютер с Windows, где имя пользователя отличается от используемого в Linux, очень удобно создать псевдоним (алиас), указав его в файле /etc/samba/smbusers. По умолчанию этого файла нету создадим новый:

username = admin serega

usermane — имя пользователя в Linux, admin & serega алиасы.  Имена пользователей на компьютере с Windows. Так же нам надо добавить наши настройки в файл /etc/samba/smb.conf ,секцию [global] :

username map = /etc/samba/smbusers
Папки с ограниченным доступом.

Если папка еще не существует, создайте ее и убедитесь, что она доступна для записи и чтения нужным пользователям. Теперь добавим новый раздел в наш smb.conf.

[secret]
path = /путь/к/вашей/папке
browseable = no
writable = yes
read list = username             #список пользователей, имеющих доступ только для чтения
write list = username username2  #пользователи, имеющие право записи;
valid users = username username2 #ограничивает список пользователей, которые имеют право подключаться.
guest ok = no

С помощью опций hosts allow можно разрешить подключаться определенным IP или запретить hosts deny.