Установка в Linux Ubuntu/Debian:
sudo apt install samba
Создание резервной копии конфигурационного файла на всякий случай:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
Открытие конфига для редактирования, например в редакторе nano:
sudo nano /etc/samba/smb.conf
Коротко опишу параметры стандартного конфига:
[global] # netbios имя netbios name = ИМЯ # Имя рабочей группы workgroup = WORKGROUP # Описание сервера server string = %h server (Samba, Ubuntu) # Включение функций WINS (Windows Internet Name Service) сервера. WINS сервер регистрирует связки NETBIOS-имени с IP-адресом. # wins support = no # Адрес другого существующего в сети WINS сервера. ; wins server = w.x.y.z # Делать ли запрос к DNS серверу если WINS сервер не смог разрешить NetBIOS имя dns proxy = no # Параметр определяет в каком порядке использовать сервисы имен для получения IP адреса (lmhosts - искать IP в файле lmhosts самбы, host - /etc/hosts, wins - через wins сервер указанный в "wins server", bcast - послать широковещательный запрос на все сетевые интерфейсы) ; name resolve order = lmhosts host wins bcast # Определяет какие будут использоваться интерфейсы ; interfaces = 127.0.0.0/8 eth0 # Указывает что нужно строго использовать только интерфейсы указанные в "interfaces" ; bind interfaces only = yes # Адрес размещения файла логов log file = /var/log/samba/log.%m # Более детальный уровень логов log level = 3 debug timestamp = yes # Максимальный размер файла в килобайтах, если размер превышен, то создается новый, а к существующему добавляется расширение .old, "0" - без ограничения по размеру) max log size = 1000 # Записывать ли логи в системный журнал syslog # syslog only = no # Уровень логов которые будут писаться в системный журнал syslog (0 - LOG_ERR, 1 - LOG_WARNING, 2 - LOG_NOTICE, 3 - LOG_INFO) syslog = 0 # Доступ к ресурсам осуществляется по: user - имени пользователя и паролю, share - паролю, server - переадресация проверки на другой сервер (если не получится будет использоваться "security = user", domain - имитация работы сервера домена Windows # security = user # Шифрование передающихся между клиентом и сервером паролей encrypt passwords = true # Механизм хранения информации о пользователях (smbpasswd, tdbsam, ldapsam) passdb backend = tdbsam # Использование PAM для аутентификации obey pam restrictions = yes # Cинхронизация пароля UNIX с паролем SMB при изменении зашифрованного пароля SMB в файле smbpasswd unix password sync = yes # Программа которая будет использоваться для смены паролей UNIX passwd program = /usr/bin/passwd %u # Строка управляющая обменом “chat” между демоном smbd и программой смены паролей passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . # Использование PAM для смены паролей UNIX вместо указанной программы в "passwd program" pam password change = yes # (Never - запросы с неправильным паролем отклоняются; Bad User - запросы с неправильным паролем отклоняются, но если имя пользователя существует, будет произведена попытка входа гостем; Bad Password - запросы с неправильным паролем обрабатываются как попытка зайти гостем; Bad Uid - в режиме security = domain/ads когда пользователь прошел аутентификацию, но не имеет учетной записи UNIX будет считаться гостем. map to guest = bad user ########## Domains ########### # Поддержка службы входа в сеть для Windows 9X ; domain logons = yes # Путь к директории где будут хранится пользовательские профили (Application Data, Рабочий стол, NTuser.dat, ...) ; logon path = \\%N\profiles\%U # logon path = \\%N\%U\profile # Путь присоединения домашней директории для рабочих станций Windows NT ; logon drive = H: # Домашняя директория при авторизации клиента # logon home = \\%N\%U # Файл сценария, который будет скачан и выполнен на клиентском компьютере при входе в систему. ; logon script = logon.cmd # Путь к сценарию, который будет выполнен демоном smbd от пользователя root при обстоятельствах описанных ниже ; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u # Путь к сценарию который запускается при добавлении учетной записи компьютера в домен SAMBA ; add machine script = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u # Путь к сценарию который запускается от root пользователя smbd при создании новай группы ; add group script = /usr/sbin/addgroup --force-badname %g ########## Printing ########## # Отображение всех принтеров # load printers = yes # Определяет какая статусная информация о принтере будет интерпретироваться в системе. ; printing = bsd # Переопределение вкомпилированного printcap name ; printcap name = /etc/printcap ; printing = cups ; printcap name = cups ############ Misc ############ # Присоединение и обработка другого конфигурационного файла ; include = /home/samba/etc/smb.conf.%m # SO_RCVBUF=8192 SO_SNDBUF=8192 # Параметры сокета для обслуживания клиентов # socket options = TCP_NODELAY # Команда выполняющаяся при получении сервером сообщения WinPopup ; message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s; rm %s' & # Сопоставление списка просмотра сети. Мастер браузеры в изолированных подсетях передадут свои локальные списки просмотра и запросят законченную копию списка для всей глобальной сети. # domain master = auto # Диапазон пользовательских идентификаторов для сопоставления SIDов UNIX пользователей SIDам NT пользователей. ; idmap uid = 10000-20000 # Диапазон групповых идентификаторов для сопоставления SIDов UNIX групп SIDам NT групп ; idmap gid = 10000-20000 ; template shell = /bin/bash ; winbind enum groups = yes ; winbind enum users = yes ; usershare max shares = 100 # Разрешить не аутентифицированным пользователям получить доступ к общим ресурсам пользователей usershare allow guests = yes #======================= Share Definitions ======================= ;[homes] # комментарий к папке ; comment = Home Directories # Общий ресурс отображаться в списке доступных общих ресурсов в сетевом окружении и в списке просмотра ; browseable = no # Запрет на изменение и создание файлов ; read only = yes # Права доступа для создаваемого файла ; create mask = 0700 # Права доступа для создаваемой директории ; directory mask = 0700 # Список пользователей, которым разрешен доступ ; valid users = %S ;[netlogon] ; comment = Network Logon Service ; path = /home/samba/netlogon # Не требовать для подключения пароль ; guest ok = yes ; read only = yes ;[profiles] ; comment = Users profiles ; path = /home/samba/profiles ; guest ok = no ; browseable = no ; create mask = 0600 ; directory mask = 0700 [printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700 [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no ; write list = root, @lpadmin ;[cdrom] ; comment = Samba server's CD-ROM ; read only = yes ; locking = no ; path = /cdrom ; guest ok = yes # Команда запускаемая при подключении к сервису ; preexec = /bin/mount /cdrom # Команда запускаемая при отключении от сервиса ; postexec = /bin/umount /cdrom # Разрешает только указанными IP адресам присоединяться к Samba-серверу, по умолчанию всем разрешено, можно не ограничивать - закомментировать строку, а ограничить фаерволом, например iptables hosts allow = 172.16. 192.168.1. 192.168.0. 127. 10.
Приведу пример конфигурации шары пользователя «ixnfo»:
[ixnfo] path = /srv/samba/ixnfo comment = ixnfo browseable = yes writable = yes read only = no create mask = 0770 directory mask = 0770
Проверить корректность параметров конфигурации можно командой:
testparm
Проверка демона:
netstat -nlp
Узнать версию samba можно так:
smbd --version
Пример создания директории для шары:
sudo mkdir -p /srv/samba/anonymous_share sudo chown nobody.nogroup /srv/samba/anonymous_share/
Просмотр привилегий на файлы и папки:
ls -l /srv/samba
Добавление пользователя «ixnfo» в Ubuntu:
sudo useradd ixnfo
Добавление samba пользователя (пользователь с таким именем уже должен быть создан в системе командой выше):
sudo smbpasswd -a ixnfo
Активация пользователя:
sudo smbpasswd -e ixnfo
Создание файла пользователей:
sudo touch /etc/samba/smbusers sudo nano /etc/samba/smbusers ixnfo = Admin
Пример указания привилегий:
sudo chown ixnfo:ixnfo -R /srv/samba/ixnfo/ sudo chmod -R 0770 /srv/samba/ixnfo/
Применим изменения:
sudo smbcontrol all reload-config
Или перезагрузим samba:
sudo service samba restart sudo restart smbd sudo restart nmbd
Или так перезагрузим:
sudo /etc/init.d/smbd restart sudo /etc/init.d/nmbd restart sudo systemctl restart smbd sudo systemctl restart nmbd
Пример просмотра сетевой информации компьютера в Windows:
net config workstation
Пример команды подключения сетевого диска в Windows (можно добавить в автозагрузку bat файлом)
net use K: \\192.168.1.5\dir /persistent:no /user:USER PASSWORD
Смотрите также мои статьи:
IPTables правила для Samba
Детальные логи в Samba
system-config-samba
Решение ошибок:
Проблемы с автозапуском Samba в Linux
WARNING: The «syslog» option is deprecated
System error 1231 has occurred
«Unable to connect to CUPS server» и «failed to retrieve printer list»
«rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)»
Спасибо огромное за отличную статью, мне очень помогли ваши рекомендации.