samba smbpasswd pdebit smbclient

  • Samba, SMB - протокол для создания общих папок между Linux-Linux, Linux-Windows и Windows-Windows.

  • Samba-клиент - устройство для подключения к общей папке

  • Samba-сервер - устройство, на котором находится общая папка

  • Основной конфигурационный файл /etc/samba/smb.conf

Установка

  1. Установить пакет samba
apt install samba -y

Пользователи

pdebit groupadd useradd usermod passwd smbpasswd 2. Создать пользователей и группы 1. Создать группу 2. Создать пользователей 3. Присвоить пользователям соответствующие группы 4. Выдать пользователям пароли

groupadd workers             # создание группы
 
# создание пользователя
 
usermode -g workers user1    # изменение основной группы пользователя
 
passwd user1                 # установка пароля
  1. Добавить необходимых пользователей в базу samba
smbpasswd -a username
 
# При добавлении пользователя будет запрошен пароль
# Если необходимо создать записи для большого 
# количества пользователей с одним паролем, сделайте так:
 
echo "123456" > pass
echo "123456" >> pass
 
# 2 раза потому что нужно повторить диалог
 
smbpasswd -as user1 < pass
smbpasswd -as user2 < pass
smbpasswd -as user3 < pass
smbpasswd -as boss < pass
 
# Если пароли должны быть разные, необходимо будет писать скрипт
  1. Проверка пользователей
pdbebit -L
 
user1:10001:
user2:10002:
user3:10003:

Настройка сервера

Публикация каталога с с анонимным доступом

  1. Создайте каталог, например /opt/public
  2. Открыть конфигурационный файл /etc/samba/smb.conf
    • Удалить комментарии в vi можно командой: g/^[#\n;]/d

Конфиг samba делится на блоки: 1. global - блок с общими настройками демона samba (можно не трогать) 2. homes - каталог для монтирования домашних каталогов 3. прочие блоки - служат для публикации отдельных сетевых ресурсов

  1. Удалите блоки идущие от блока [homes]
    • Либо используйте параметры из них, что бы привести конфиг к следующему блоку:
[public]                     # можно использовать любое название
   comment = For all users   # комментарий
   path = /opt/public        # путь до папки
   browseable = yes          # видна или нет папка (типо как с скрытием WiFi)
   read only = yes           # доступно только для чтения
   guest ok = yes            # разрешить доступ анонимным пользователям
   create mask = 0700        # Права задаваемые новосозданным файлам
   directory mask = 0700     # Права задаваемые новосозданным каталогам
  1. Сохраните изменения и перезагрузите службу smbd

Публикация каталогов с ограниченным доступом

При настройке прав доступа к каталогу через samba, необходимо учитывать, что для того что б выполнить операцию чтения списка файлов пользователь и/или служба, должна иметь права на выполнение, поэтому минимальный размер прав будет равен 5

  1. Создайте каталоги: например /opt/documents
  2. Настройте права для каталога
chmod -R 700 /opt/documents
- Ключ "-R" говорит о том, что изменения должны коснуться и всех вложенных файлов и каталогов

3. Так как мы создавали каталог вручную, он получил владельцем нашего пользователя. А нам нужно установить uid и gid пользователя user1 1. Изменим владельца и группу каталога test1:

chown -R test1:test1 /opt/documents
 
# При использовании стандартных правил доступа, разграничить между пользователем и группой можно следующим образом:
 
chown boss:workers /opt/documents
 
 
# Таким образом, правила для пользователя будут одни, а для группы будут отдельными:
chmod 750 /opt/documents
  1. Добавьте в блок [global] параметр: inherit permissions = yes для включения наследования прав от каталога
  2. Для публикации каталога documents в сети, добавьте в основной конфигурационный файл samba, следующие блоки:
[documents]                         # название 
   comment = Documents for workers  # комментарий
   path = /opt/documents            # путь
   browseable = yes                 # видимость
   read only = no                   # только для чтения
   writeable = yes                  # возможность вводить изменения
   guest ok = no                    # разрешить доступ анонимным пользователям
   create mask = 0755               # права создаваемых файлов
   directory mask = 0760            # права создаваемых каталогов
   valid users = boss @workers      # у кого есть доступ к каталогу
   read list = boss @workers        # кто может читать
   write list = boss                # кто может писать
  1. Сохраните изменения и перезагрузите службу smbd

Возможные проблемы

  • Не удается создать пользователя

При создании обязательно использовать ключ -a. Также пользователя сначала нужно добавить в /etc/passwd с помощью команды useradd. Если проблема не решается, то попробуйте удалить пользователя командой

smbpasswd -x *username*

А после снова добавьте его. Иногда пользователя нужно активировать вручную командой `

smbpasswd -e
  • Сервер не запускается после смены конфигураций

Убедитесь в том, что созданы все папки и используйте команду для проверки конфигов:

testparm
  • Не получается подключиться
# etc/hosts
 
127.0.0.1     localhost  # не трогаем
127.0.1.1     debian     # меняем debian на заданное имя устройства
 
--че-то ещё--

Клиент

smbclient Для работы потребуется установить smbclient

apt install smbclient -y

Проверка

# Команда для проверки доступных файлов на сервере
smbclient -L //172.16.8.10/
 
Password for [WORKGROUP/root]:    # Можно просто нажать Enter
 
	Sharename       Type       Comment
    --------        ----       -------
	public          Disk       folder for all users
	documents       Disk       Documents for workers
	print$          Disk       Printer Drivers
  • -L - list опция отвечающая за вывод файлов
  • //172.16.8.10/ - сервер samba, 2 слеша в начале обязательны
    • При выполнении запросит пароль можно просто нажать Enter
# Команда для подключения 
smbclient //172.16.8.10/documents -U boss%123456
  • //172.16.8.10/ - сервер samba, 2 слеша в начале обязательны
  • /documents - папка к которой запрашиваем доступ. Указывается не физическое название, а логическое которое в файле конфигурации стоит как [documents] Папка documents находится по пути **/opt/documents**, но в команде нужно указывать только конечную папку
  • -U boss%123456 - username + password как видно должны записываться как пользователь%пароль, при этом можно ввести только пользователя -U boss тогда система запросит пароль

Клиент Windows

  1. Зайти в панель управления
  2. Программы -> Включение или отключение компонентов Windows
  3. Включаем “Поддержка общего доступа к файлам SMB 1.0/CIFS”
    1. Перезагружаемся

Конфигурационный файл

Global

[global]
   # Название рабочей группы готорой принадлежит сервер
   workgroup = WORKGROUP
   
   # Место храненния логов samba
   log file = /var/log/samba/log.%m
   
   # Максимальный размер файла логов в Кб
   max log size = 1000
   
   # Журнал будет вестись в файл
   logging = file
   
   # В случае сбоя выполнять panic-action
   panic action = /usr/share/samba/panic-action %d
   
   # Сервер одинок и не является частью домена
   server role = standalone server
   
   # Работать с ограничениями PAM или без них (no)
   obey pam restrictions = yes
   
   # Синхронизация учетных записей Samba и системы
   unix password sync = yes
   
   # Программа для изменения пароля
   # Вместо '%u' подставляется имя пользователя
   passwd program = /usr/bin/passwd %u
   
   # Сообщения при изменении пароля
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   
   # Использует PAM для изменения пароля
   pam password change = yes
   
   # Обрабатывать запросы от неизвестных пользователей в
   # качестве гостевых
   map to guest = bad user
   
   # Разрешает гостевой доступ тем у кого есть права на 
   # создание общих ресурсов
   usershare allow guests = yes

Homes и прочие

[homes]
   # Комментарий к ресурсу
   comment = Home Directories
   
   # Отображать ли каталог в списке доступных ресурсов
   # работает как с Wifi если отключить трансляцию ключа
   browseable = no
   
   # Доступ только на чтение?
   read only = yes
   
   # Доступ всем
   public = yes

   # возможность вводить изменения 
   writeable = yes               
   
   # Права задаваемые новосозданным файлам
   create mask = 0700
   
   # Права задаваемые новосозданным каталогам
   directory mask = 0700
   
   # Каким пользователям можно получать доступ к каталогу
   # %S - только пользователю с именем равным названию ресурса
   valid users = %S

  # Путь до директории которая должна быть доступна по сети
  path = /opt/sites

  # Запретить или разрешить доступ анонимным пользователям
  guest ok = yes
  
  # Пользователи с доступом на чтение
  read list = boss @workers
  
  # Пользователи с доступом на запись
  write list = @workers

  
  # Вы можете указать отдельного пользователя, указав его 
  # логин в списке
  # Либо указать целую группу, указав её названия и добавив в начало знак: @