30 августа 2013 г., 14:16 пользователь Eugene V. Boontseff <eug...@wdc.spb.ru> написал: > Коллеги! > > А на zfs acls запрет на удаления не работает? > > Делаю так: > setfacl -m everyone@:rwxpDAWCo::deny file.txt > eugene@s [/data/buffer> getfacl file.txt > # file: file.txt > # owner: eugene > # group: wheel > owner@:--------------:------:deny > owner@:rwxp---A-W-Co-:------:allow > group@:-w-p----------:------:deny > group@:r-x---a-R-c--s:------:allow > everyone@:rwxpD--A-W-Co-:------:deny > everyone@:------a-R-c--s:------:allow > Т.е. у хозяина на удаление право удалять в allow не прописано, а через > everyone@ всем запрещено файл удалять. > Тем не менее, кому дано право на запись (в примере хозяину) спокойно может > удалить этот файл. > Оно не работает или что-то неправильно делаю я? > Как разрешить запись, но запретить удаление? ЕМНИП удаление файла в UNIX (вне зависимости от ФС) - суть операция над каталогом, в котором файл содержится. Проверяется легко: sudo touch /home/me/file && sudo chmod 400 /home/me/file && rm -f file - данная операция проходит успешно.
> > Система 8.3-RELEASE-p5, zfs v28. > > И еще один вопрос: как сделать на каталог одни права , а для наследования > другие? > Например, хочу для корневого каталога определить права только rx, а для > потомков rxwp. > > Делаю так: > либо одной командой setfacl -m g:eugene:rxwp:fdi:allow,g:eugene:rx:fdn:allow > ttt > либо двумя последовательно > setfacl -m g:eugene:rxwp:fdi:allow ttt > setfacl -m g:eugene:rx:fdn:allow ttt > > результат одинаковый - применяется только последняя команда: > > getfacl ttt > # file: ttt > # owner: root > # group: wheel > group:eugene:r-x-----------:fd-n--:allow > owner@:--------------:fd----:deny > owner@:rwxp---A-W-Co-:fd----:allow > group@:-w-p----------:fd----:deny > group@:r-x---a-R-c--s:fd----:allow > everyone@:rwxp---A-W-Co-:fd----:deny > everyone@:------a-R-c--s:fd----:allow > > Что не так? И как правильно? Не могу гарантированно утверждать, но возможно стоит поиграться с aclinherit и смежными опциями.