Samba – запретить удаление файлов

Столкнулся с задачей настройки Samba таким образом, чтобы пользователи могли записывать файлы, но удалять не могли. Реализация под linux.

Припустим, у нас есть директория-шара. В smb.conf прописано:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Files]
comment = Files
path = /home/samba/Files
valid users = +UserGroup
read list = +UserGroup
write list = +UserGroup
inherit permissions = yes
browseable = yes
guest ok = no
create mask = 664
directory mask = 775

Нам интересны две последние строчки. Create mask означает маску для создаваемых файлов, directory mask — для директорий.

После этого нужно перезагрузить сервис самбы:

1
$ service smb restart

Далее нужно поставить бит стойкости, который не даст удалить файлы созданные другими пользователями. Свои же удаляться без проблем. Также в чужих директориях можно будет создавать/удалять свои и только свои.

1
$ chmod -R 1775 Files/

Добавить samba пользователя в Linux

Добавить Samba пользователя очень просто. Для начала нужно создать его. Если он есть, то пропускаем этот пункт:

1
# useradd valera -s /sbin/nologin

Последний параметр запрещает ему логиниться в шелл. В принципе, можно этот параметр опустить, без пароля командой passwd в шелл все-равно не пустит.

Далее добавляем пользователя, указывая SAMBA пароль:

1
# smbpasswd -a valera

Система запросит ввести пароль, два раза, для надежности. Обычно после этого нужно добавить пользователя в группу Samba. Это зависит от настоек:

1
# usermod -G mygroup1,testgroup valera

После этого нужно рестартонуть сервис:

1
# /etc/init.d/smb restart