Второй день бьюсь над задачей. Перечитал кучу советов и уже окончательно запутался во всём. Подскажите в конкретном решении, как мне кажется, очень простой задачи:Есть расшаренный ресурс самбы. Необходимо внутри него разграничить права. На ресурс могут заходить только доверенные лица, создавать файлы и папки, но удалять и изменять файлы может только владелец/автор этих файлов. Вот с последним загвоздка
smb.conf следующий:
==============================
path = some/pat/to/dir
valid users = admin,buh1,buh2
write users = admin,buh1,buh2
read only = no
create mask = 0744
force create mode = 0744
directory mask = 0754
wide links = yes
==============================Но при попытке создать файл из под любого пользователя, он создаётся с правами 0764 -rwxrw-r-- и получается что любой пользователь из группы может удалить этот файл.
Вместо советов читали бы mancreate mask
...
Note that this parameter does not apply to permissions set by Windows NT/2000 ACL editors. If the administrator wishes to enforce a mask on access control lists also, they need to set the security mask....
Default: security mask = 0777
>[оверквотинг удален]
>
>create mask
>...
>Note that this parameter does not apply to permissions set by Windows
>NT/2000 ACL editors. If the administrator wishes to enforce a mask
>on access control lists also, they need to set the security
>mask.
>
>...
>Default: security mask = 0777Security Mask = 0744 сработало. Права теперь правильно выставляются. Но по-прежнему user2 может удалить файл созданный user1.
Права на директорию в файловой системе полные стоят.
Пора вам прочитать man chmod и вообще что-нибудь по стандартным правам в никс системах. Обратите внимание на sticky-бит.
>Пора вам прочитать man chmod и вообще что-нибудь по стандартным правам в
>никс системах. Обратите внимание на sticky-бит.На самом деле эта задача куда красивее и проще решается через ACL. Точнее простановкой Default ACL на директорию.
>Пора вам прочитать man chmodВ мане не написано, что "в никсах" для удаления файла нужны права на запись на содержащую его _директорию_. В отличие от Win/Dos, где read-only _файл_ не удаляется, но преспокойно удаляется writable файл из r/o директории. В Lin* -- всё наоборот.
> и вообще что-нибудь по стандартным правам в никс системах.
Где про этот нюанс "вообще" может быть написано?...
И кстати, как самба меняет (и меняет ли?) семантику файловой системы для ничего не подозревающих [виндовых] програм и пользователей?
>Пора вам прочитать man chmod и вообще что-нибудь по стандартным правам в
>никс системах. Обратите внимание на sticky-бит.Спасибо, то что надо. Установил sticky-bit командой chmod +t /путь/к/папке и теперь удалять может только автор.
От вас я хотел получить конкретный ответ, типа этого:
---------------------------------------------------------------------------------------
Бит sticky. Никак не расшифровывается, переводится как "липкий". :-)
Выглядит в permissions как ********t (если вместе с битом x для "всех остальных") или ********T (если соответствующего бита x нет).Для директорий его смысл заключается в том, что удалить файл из такой директории (или переименовать) может только владелец файла. Напомню, что в обычном случае (без такого бита) возможность удалять файлы (как и создавать) определяется правом записи (бит w) на директории. То есть, если какой-либо юзер принадлежит к категории, для которой разрешена запись в директорию, он может удалить в ней любой файл, независимо от атрибутов (владельца, группы, permissions) самого файла.
---------------------------------------------------------------------------------------
man chmod/chown были моим единственным руководством на тему permissions/owner, ну и эксперименты конечно же. Если честно, несмотря на DOSовское прошлое, как то естественно предположил, что на удаление влияют биты w и x на директориях, а не на самом файле. Наверное помогло умение мыслить логически. Чтение манов позволит вас узнать еще пару полезных моментов, о которых в случае прямого ответа вы бы остались в неведении. Заметьте что эти маны очень короткие, man по bash или iptables я бы читать не посоветовал.Когда-то на одной работе удивлялся тесту на знание permissions для сисадминов, однако чем дальше, тем чаще вижу, что такая простая вещь для многих китайская грамота. И плодят эти ребята ACL где надо и где не надо.
А если с каталоге на который установлен stiky-бит пользователь создает свой каталог и туда пишет файлы - из этого каталога снова могут удалять удалять все.
Может кто-то подскажет Samba умеет сама ставить stiky-бит на создаваемые каталоги (что-то мне говорит что вряд-ли) и как тогда эту проблему решаете, коллеги?
У меня другой вопрос, есть расшаренный ресурс, права одни - write list = @emit
В этой группе несколько человек (из них два какбы главные). Подключаются они нормально. В шаре есть папка, к которую все должны иметь права на запись. НО там есть файл (настроечный), который нужно запретить на удаление и изменение всем, кроме этих двоих людей. Как сделать, чтобы остальные его не могли удалить! Запрещаю на запись - работает, но он удаляется!!! Причем мне нужно, чтобы они могли его читать. Права -rw-rw-r-- на нем не спасают от удаления. Изменять права могу везде и на ufs и на самбе. Не подскажите как намудрить, чтобы этот файлик (не в корне, а след папке на шаре), запретить на удаление.
В классических rwx правах для этого служит sticky bit на директорию. Если включены какие-либо ACL/MAC, то можно через них. Как это используется/игнорируется самбой надо читать в ее мане в разделе про отображение никсовых прав в виндовые ACL.