Я хочу, чтобы оба моих пользователя «tobias» и «www-data» могли читать и писать в определенный каталог.
С этой целью я добавил его tobias: www-data, добавил tobias в группу www-data и добавил setguid в каталог. Файлы и подкаталоги создаются правильно, группа www-data владеет ими.
Следующим шагом, насколько я понимаю, является использование ACL для получения определенной маски umask для этого конкретного каталога. Я хочу, чтобы это было 002, чтобы контент получил разрешение rw-rw-r. Поэтому я добавил acl к моему монтированию в / etc / fstab и перемонтировал диск. Все идет нормально.
Вот конфигурация ACL для моего каталога:
$ getfacl app/cache/
# file: app/cache/
# owner: tobias
# group: www-data
# flags: -s-
user::rwx
user:www-data:rwx
user:tobias:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:www-data:rwx
default:user:tobias:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
Но даже с настроенным ACL он по-прежнему создает новые файлы и подкаталоги с разрешением rw-r - r--. Так что либо я сделал что-то не так, либо я неправильно понял концепцию. Может ли кто-нибудь помочь мне понять, что и что мне делать, чтобы он работал?
Кажется, здесь работает:
ubuntu-amd64% id | tr ',' '\n' | grep www-data
33(www-data)
ubuntu-amd64% mount | grep ' / '
/dev/sda1 on / type ext4 (rw,errors=remount-ro,acl)
ubuntu-amd64% sudo sh
ubuntu-amd64# cd /var/www
ubuntu-amd64# mkdir -p app/cache
ubuntu-amd64# chown fission:www-data app/cache
ubuntu-amd64# chmod 2775 app/cache
ubuntu-amd64# ls -ld app/cache
drwxrwsr-x 2 fission www-data 4096 2011-07-23 11:21 app/cache
ubuntu-amd64# setfacl -dm u::rwx,g::rwx,o::rx app/cache
ubuntu-amd64# getfacl app/cache
# file: app/cache
# owner: fission
# group: www-data
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
ubuntu-amd64# exit
ubuntu-amd64% umask
022
ubuntu-amd64% touch /var/www/app/cache/test
ubuntu-amd64% ls -l /var/www/app/cache/test
-rw-rw-r-- 1 fission www-data 0 2011-07-23 11:23 /var/www/app/cache/test
Честно говоря, я мало что знаю о списках ACL Linux, но мне кажется, что mask
вариант - это не то, что вам нужно - его должно хватить для default:{user,group,other}
параметры должны быть установлены, как указано выше.