Пример настройки samba файлового хранилища

Первоисточник

Данная конфигурация будет содержать общую папку obmen, в которую будут иметь доступ авторизованные пользователи. И каждый пользователь будет иметь свою папку, которая доступна только ему и администратору сервера.

Реализация

Автоматически права на пользовательские каталоги и файлы выставляются в 775, что означает – разрешать записывать читать и выполнять файлы только пользователю и группе, остальным только чтение.

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

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

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

Создаём структуру каталогов например в /srv/samba (лучше использовать отдельный раздел в котором содержатся все сетевые директорий).

Создаём общий каталог:

mkdir /srv/samba/obmen

Создаём приватный каталог пользователя:

mkdir /srv/samba/user1

Создаём пользователей user1 и adminsmb:

useradd -d /dev/null -s /usr/sbin/nologin user1
useradd -d /dev/null -s /usr/sbin/nologin adminsmb

Устанавливаем пароль пользователям user1 и adminsmb:

smbpasswd -a user1
smbpasswd -a adminsmb

Создаём группу obmen (необходима для доступа к общей папке):

groupadd obmen

Добавляем пользователя user1 в группу obmen. Последующих пользователей также добавляем в эту группу. Это позволит им подключаться к общей сетевой папке obmen. Так же добавляем пользователя adminsmb в группу пользователя user1, чтоб Админ имел возможность редактирования файлов и каталогов пользователя. Необходимо включить пользователя user1 (и всех новых последующих пользователей) в группу администратора adminsmb для того, что бы пользователь мог редактировать свои файлы и папки после того как в них поковыряется администратор:

usermod -a -G obmen user1
usermod -a -G user1 adminsmb
usermod -a -G adminsmb user1

Проверяем успешность добавления:

groups user1

Устанавливаем группу obmen в качестве владельца папки /srv/samba/obmen и предоставляем всем право на запись:

chown -R :obmen /srv/samba/obmen
chmod 777 /srv/samba/obmen

Так же устанавливаем права и группу на каталог пользователя user1:

chown -R user1:user1 /srv/samba/user1
chmod 775 /srv/samba/user1

Создаём копию дефолтного файла конфигурации /etc/samba/smb.conf:

cp /etc/samba/smb.conf /etc/samba/smb.conf.default

В файлe /etc/samba/smb.conf удаляем все записи, и добавляем разделы с блоком общих настроек и блоки для созданных сетевых папок:

[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = redos
security = user
passdb backend = tdbsam
log file = /var/log/samba/log.%m
max log size = 50
[obmen]
comment = Obmen share with authenticated access
path = /srv/samba/obmen
browsable = yes
writable = yes
guest ok = no
valid users = @obmen adminsmb
force directory mode = 0777
force create mode = 0676
vfs objects = full_audit
[user1]
comment = Private share with user
path = /srv/samba/user1
browsable = yes
writable = yes
guest ok = no
valid users = user1 adminsmb
force directory mode = 0775
force create mode = 0674

Перезагружаем службу samba для вступления изменений в силу:

systemctl restart smb
systemctl enable smb

Пробуем использовать для работы первые 2-ве сетевые папки.
И видим что в них невозможно записать или создать файлы и каталоги. Чтоб это исправить, необходимо настроить SELinux для нашего сервера Samba:

semanage fcontext -a -t samba_share_t "/srv/samba(/.*)?"
restorecon -R -v /srv/samba

не помню точно, эти изменения моментально применяются или только после перезагрузки ОС.

Алгоритм создания новых пользователей

Создаём приватный каталог пользователя:

mkdir /srv/samba/user2

Создаём пользователя:

useradd -d /dev/null -s /usr/sbin/nologin user2

Устанавливаем пароль пользователю:

smbpasswd -a user2

Добавляем созданного пользователя в группу obmen, пользователя adminsmb в группу созданного пользователя, а так же не забываем добавлять нового пользователя в группу adminsmb (что бы пользователь мог редактировать изменения администратора):

usermod -a -G obmen user2
usermod -a -G user2 adminsmb
usermod -a -G adminsmb user2

Так же устанавливаем права и группу на каталог нового пользователя:

chown -R user2:user2 /srv/samba/user2
chmod 775 /srv/samba/user2

В файл /etc/samba/smb.conf добавляем раздел для созданной сетевой папки:

[user2]
comment = Private share with user
path = /srv/samba/user2
browsable = yes
writable = yes
guest ok = no
valid users = user2 adminsmb
force directory mode = 0775
force create mode = 0674

Перезагружаем службу samba для вступления изменений в силу:

systemctl restart smb

Скрипт для создания новых пользователей add_new_samba_user.sh:

#! /usr/bin/sh

echo -n "Введите имя нового пользователя: "
read new_samba_user
mkdir /srv/samba/$new_samba_user
useradd -d /dev/null -s /usr/sbin/nologin $new_samba_user
smbpasswd -a $new_samba_user
usermod -a -G obmen $new_samba_user
usermod -a -G $new_samba_user adminsmb
usermod -a -G adminsmb $new_samba_user
chown -R $new_samba_user:$new_samba_user /srv/samba/$new_samba_user
chmod 775 /srv/samba/$new_samba_user
echo "[$new_samba_user]
comment = Private share with user
path = /srv/samba/$new_samba_user
browsable = yes
writable = yes
guest ok = no
valid users = $new_samba_user adminsmb
force directory mode = 0775
force create mode = 0674"