Установка в 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)»
Спасибо огромное за отличную статью, мне очень помогли ваши рекомендации.