Це питання добре підходить для Linux acl
. Оскільки ви не заявляєте свою ОС, я припускаю Linux у наступному. Ось приклад сесії.
Я не знаю дійсно хорошого acl
підручника, але ви можете зробити гірше, ніж http://www.vanemery.com/Linux/ACL/linux-acl.html
Зауважте, що за замовчуванням acl
поводиться як локальний umask. Оскільки принаймні в Linux умаски застосовуються в усьому світі, це єдиний спосіб, який я знаю, щоб отримати ефект локальної умаски. Чомусь це маловідома особливість. Мережа заповнена людьми, які запитують про перебір місцевого умаску, але майже ніхто не думає використовувати acl
.
Також зауважте, що вам потрібно змонтувати розділ, в якому ви працюєте, з acl
підтримкою, наприклад.
/dev/mapper/debian-acl /mnt/acl ext3 defaults,acl 0 2
Сесія наступна:
/mnt/acl$ mkdir foo
/mnt/acl$ getfacl foo
# file: foo
# owner: faheem
# group: faheem
user::rwx
group::r-x
other::r-x
Встановіть групу , foo
щоб бути staff
, і встановити ACL групи і користувача foo
до rwx
.
/mnt/acl$ chgrp staff foo
/mnt/acl$ setfacl -R -m u::rwx,g::rwx foo
/mnt/acl$ getfacl foo
# file: foo
# owner: faheem
# group: staff
user::rwx
group::rwx
other::r-x
Установіть також типи acls користувача та групи rwx
. Це визначає дозволи, від яких успадковують файли та каталоги foo
. Таким чином, всі файли та каталоги, створені під foo, матимуть групові дозволи rw
.
/mnt/acl$ setfacl -d --set u::rwx,g::rwx,o::- foo
/mnt/acl$ getfacl foo
# file: foo
# owner: faheem
# group: staff
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::---
Тепер створіть деякі файли foo
як користувачі faheem
та john
.
/mnt/acl$ cd foo
/mnt/acl/foo$ touch bar
# switch to user john for this next command.
/mnt/acl/foo$ touch baz
Список файлів. Зауважте, що як файли, що належать, так faheem
і файли, які належать john
, створюються з груповими дозволами rw
.
/mnt/acl/foo$ ls -la
total 3
drwxrwxr-x+ 2 faheem staff 1024 May 9 01:22 .
drwxr-xr-x 4 faheem faheem 1024 May 9 01:20 ..
-rw-rw---- 1 faheem faheem 0 May 9 01:20 bar
-rw-rw---- 1 john john 0 May 9 01:22 baz