Запретить пользователю samba переименование/удаление директории (если на родительскую диреторию у него права 777)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модератор: SLEDopit

vkapas
Сообщения: 190
ОС: Ubuntu 14.04, 16.04

Запретить пользователю samba переименование/удаление директории

Сообщение vkapas »

Запутался с правами родительских/дочерних директорий, помогите разобраться.

Есть общий ресурс на Самбе, есть группа sambashare, есть входящий в неё пользователь sambauser.
Общий ресурс размещается в директории share, куда у пользователя есть права записи, и есть директория share/xyz, куда пользователь должен иметь право ходить, но не должен иметь прав удалять или переименовывать её. При этом у владельца диретории (user) должны оставаться на неё полные права.

При текущих правах

Код: Выделить всё

$ getfacl share/
# file: share/
# owner: user
# group: user
user::rwx
user:sambauser:rwx
group::rwx
group:sambashare:r-x
mask::rwx
other::---

Код: Выделить всё

$ getfacl share/xyz/
# share/xyz/
# owner: user
# group: user
user::rwx
group::rwx
group:sambashare:r-x
mask::rwx
other::---

пользователь Самбы может делать с директорией самые непотребные вещи.

Можно ли ограничить пользователя Самбы только чтением дочерней директории, когда на родительскую у него есть право записи?

P.S. chmod 555 share/xyz не даёт удалить директорию, но по-прежнему позволяет её переименовать.
К тому же с 555 теряется доступ на запись у владельца (user), а ему это право нужно оставить.
Спасибо сказали:

Аватара пользователя
SLEDopit
Модератор
Сообщения: 4730
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Запретить пользователю samba переименование/удаление директории

Сообщение SLEDopit »

vkapas писал(а):
28.02.2017 01:45
Даже chmod 444 share/xyz ничего не меняет.
И не поменяет. Имена файлов и директорий хранятся именно в родительской директории. Наличие прав на запись в неё == возможность переименовывать файлы и директории независимо от прав на сам файл / директорию. Файлы можно даже удалять, если на него вообще никаких прав нет.
Т.е. вот такая штука вполне себе удалит файл file:

Код: Выделить всё

mkdir tmp ; chmod 777 tmp ; cd tmp ; touch file ; chmod 000 file ; rm -f file ;


Не уверен, что средствами samb'ы можно запретить операцию удаления/переименования.
Но можно воспользоваться sticky bit'ом (его по умолчанию используют, например, на /tmp). Эта штука позволяет производить операции с файлами и директориями исключительно владельцу (или руту). Однако это будет касаться всех файлов и директорий, а не только одной.
Т.е. в вашем случае это будет выглядеть примерно так:
chmod +t share # (ставим sticky bit)
chown user share/xyz # (где user -- любой пользователь отличный от sambauser)
С этого момента только user будет иметь право переименовать share/xyz. При наличии прав на запись на группу, с записью (и удалением) файлов внутри xyz не будет.
попробовать поставить владельца xyz пользователя отличного от sambauser и поставить на родительскую директорию sticky bit (chmod +t share).
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17911
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Запретить пользователю samba переименование/удаление директории

Сообщение Bizdelnick »

Это невозможно. Не давайте пользователю прав на запись в каталог верхнего уровня, и будет Вам счастье.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

vkapas
Сообщения: 190
ОС: Ubuntu 14.04, 16.04

Re: Запретить пользователю samba переименование/удаление директории

Сообщение vkapas »

SLEDopit, спасибо, sticky bit частично решает проблему, частично — потому что распространяет запрет удаления/переименования и на соседние директории, чего быть не должно. Возникшую проблему, конечно, можно решить, сменив владельца соседних директорий на sambauser, но в моём случае неприемлемо, потому что прав лишается user.
Чувствую, короче, что хочу слишком многого, либо задача изначально неправильно поставлена.
Спасибо сказали: