[freebsd] zfs, nfs4 acls, запрет удаления.

2013-08-30 Пенетрантность Eugene V. Boontseff

Коллеги!

А на 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@ всем запрещено файл удалять.
Тем не менее, кому дано право на запись (в примере хозяину) спокойно 
может удалить этот файл.

Оно не работает или что-то неправильно делаю я?
Как разрешить запись, но запретить удаление?

Система 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

Что не так? И как правильно?


[freebsd] Re: [freebsd] zfs, nfs4 acls, запрет удаления.

2013-08-30 Пенетрантность Anton Sayetsky
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 и смежными опциями.


Re: [freebsd] zfs, nfs4 acls, запрет удаления.

2013-08-30 Пенетрантность George L. Yermulnik
Hello!

On Fri, 30 Aug 2013 at 15:16:09 (+0400), Eugene V. Boontseff wrote:

 Как разрешить запись, но запретить удаление?

Если нужно запретить только удаление и вообще всем, то почему бы не
использовать флаг sunlnk у chflags?

-- 
George L. Yermulnik
[YZ-RIPE]


Re: [freebsd] Re: [freebsd] zfs, nfs4 acls, запрет удаления.

2013-08-30 Пенетрантность Eugene V. Boontseff

30.08.2013 15:38, Anton Sayetsky пишет:

30 августа 2013 г., 14:16 пользователь Eugene V. Boontseff
eug...@wdc.spb.ru написал:
ЕМНИП удаление файла в UNIX (вне зависимости от ФС) - суть операция
над каталогом, в котором файл содержится. Проверяется легко: sudo
touch /home/me/file  sudo chmod 400 /home/me/file  rm -f file -
данная операция проходит успешно.

В man setfacl для nfsv4acls есть два запрещения удаления:

 d  delete_child

 D  delete

я предположил d выставляется на каталог и запрещает удаление внутри 
каталога, а D защищает от удаления сами файлы и каталоги, на которых 
они определены. Но нет. Вы правы. Если у родительского каталоге есть 
D, внутри него файлы и каталоги защищены от удаления. К чему d не 
понятно вообще. Потому как если она есть у родительского каталога это не 
защищает потомков от удаления..


Eugene


Re: [freebsd] zfs, nfs4 acls, запрет удаления.

2013-08-30 Пенетрантность Eugene V. Boontseff

30.08.2013 16:35, George L. Yermulnik пишет:

Hello!

On Fri, 30 Aug 2013 at 15:16:09 (+0400), Eugene V. Boontseff wrote:


Как разрешить запись, но запретить удаление?

Если нужно запретить только удаление и вообще всем, то почему бы не
использовать флаг sunlnk у chflags?

Пользовался. Но это не совсем то, что нужно.
Во-первых, это действительно для всех.
А нужно запретить в каталоге, который является корнем самбовской шары, 
удаление подкаталогов и файлов, но разрешить все это ниже для 
определенных групп пользователей.
Флаги не наследуются, так что их приходится отдельно выставлять на всё 
вновь созданное в корне шары.

Вообщем, разобрался немного.
Если на корень шары дать для какой-нибудь группы права на запись с 
наследованием и запрет на удаление без наследования, то для членов этой 
группы так и будет: они смогут в корне шары создавать каталоги и файлы, 
но не смогут их удалить потом. А в подкаталогах удалять смогут.



--
Eugene


Re: [freebsd] zfs, nfs4 acls, запрет удаления.

2013-08-30 Пенетрантность Slawa Olhovchenkov
On Fri, Aug 30, 2013 at 05:16:25PM +0400, Eugene V. Boontseff wrote:

 30.08.2013 16:35, George L. Yermulnik пишет:
  Hello!
 
  On Fri, 30 Aug 2013 at 15:16:09 (+0400), Eugene V. Boontseff wrote:
 
  Как разрешить запись, но запретить удаление?
  Если нужно запретить только удаление и вообще всем, то почему бы не
  использовать флаг sunlnk у chflags?
 Пользовался. Но это не совсем то, что нужно.
 Во-первых, это действительно для всех.
 А нужно запретить в каталоге, который является корнем самбовской шары, 
 удаление подкаталогов и файлов, но разрешить все это ниже для 
 определенных групп пользователей.
 Флаги не наследуются, так что их приходится отдельно выставлять на всё 
 вновь созданное в корне шары.
 Вообщем, разобрался немного.
 Если на корень шары дать для какой-нибудь группы права на запись с 
 наследованием и запрет на удаление без наследования, то для членов этой 
 группы так и будет: они смогут в корне шары создавать каталоги и файлы, 
 но не смогут их удалить потом. А в подкаталогах удалять смогут.

Обычно наследование понимается как прописывание данного acl во вновь
создаваемый объект. На уже существующие влияние это не оказывает.


Re: [freebsd] zfs, nfs4 acls, запрет удаления.

2013-08-30 Пенетрантность Slawa Olhovchenkov
On Fri, Aug 30, 2013 at 05:24:30PM +0400, Slawa Olhovchenkov wrote:

 On Fri, Aug 30, 2013 at 05:16:25PM +0400, Eugene V. Boontseff wrote:
 
  30.08.2013 16:35, George L. Yermulnik пишет:
   Hello!
  
   On Fri, 30 Aug 2013 at 15:16:09 (+0400), Eugene V. Boontseff wrote:
  
   Как разрешить запись, но запретить удаление?
   Если нужно запретить только удаление и вообще всем, то почему бы не
   использовать флаг sunlnk у chflags?
  Пользовался. Но это не совсем то, что нужно.
  Во-первых, это действительно для всех.
  А нужно запретить в каталоге, который является корнем самбовской шары, 
  удаление подкаталогов и файлов, но разрешить все это ниже для 
  определенных групп пользователей.
  Флаги не наследуются, так что их приходится отдельно выставлять на всё 
  вновь созданное в корне шары.
  Вообщем, разобрался немного.
  Если на корень шары дать для какой-нибудь группы права на запись с 
  наследованием и запрет на удаление без наследования, то для членов этой 
  группы так и будет: они смогут в корне шары создавать каталоги и файлы, 
  но не смогут их удалить потом. А в подкаталогах удалять смогут.
 
 Обычно наследование понимается как прописывание данного acl во вновь
 создаваемый объект. На уже существующие влияние это не оказывает.

Ах да, создаваемы каталог должен так же наследовать и атрибут для наследования.


Re: [freebsd] zfs, nfs4 acls, запрет удаления.

2013-08-30 Пенетрантность Eugene V. Boontseff

30.08.2013 17:24, Slawa Olhovchenkov пишет:


.
Если на корень шары дать для какой-нибудь группы права на запись с
наследованием и запрет на удаление без наследования, то для членов этой
группы так и будет: они смогут в корне шары создавать каталоги и файлы,
но не смогут их удалить потом. А в подкаталогах удалять смогут.
Обычно наследование понимается как прописывание данного acl во вновь
создаваемый объект. На уже существующие влияние это не оказывает.

Совершенно с тобой согласен. Нечеткость формулировок присутствует.
Имелось в виду вот что:
setfacl -m g:somegroup:rwx:fd:allow somedir присвоит права rxw самому 
somedir и будет наследоваться всеми потомками, будь они файлы или 
каталоги. (aclinherit=passthrough).
а setfacl -m g:somegroup:D::deny somedir присвоит запрет на удаление 
самому somedir, но это поведение не будет наследоваться потомками.


--
Eugene