
Итак, у меня есть каталог, www\
который выглядит так:
[eugene@server ~]$ ll всего 0 drwxrwx---. 2 евгений евгений 57 дек 10 16:04 www
Я хочу сделать так, чтобы все новые файлы, создаваемые в этом каталоге, принадлежали группеapache
ииметь разрешения 770
.
Так я и сделал:
[eugene@server ~]$ chgrp apache www/ [eugene@server ~]$ setfacl -Rm u:eugene:rwx,d:g:apache:rwx,d:o:--- www/ [eugene@server ~]$ ll drwxrwx---+ 2 eugene apache 43 дек 10 16:10 www [eugene@server ~]$ echo 123 > www/test.txt [eugene@server ~]$ ll www/ -rw-rw----+ 1 евгений евгений 4 дек 10 16:11 test.txt [eugene@server ~]$
Как вы видите, test.txt
был создан без ожидаемой группы apache
. Также не было x
установлено разрешение (на выполнение)...
Что я здесь упускаю?
решение1
Для того чтобы файлы в вашем каталоге создавались с группой Apache, вам лучше установить бит SETGUID:
chmod +2000 www
Что касается прав по умолчанию на создание файлов, вы не можете сделать это с помощью ACL, потому что стандартная Linux umask всегда побеждает. Umask не позволяет создавать файлы с любыми 7 цифрами (rwx) в правах создаваемых файлов.
Вместо этого вы можете создать сценарийmkfileсо следующим содержимым:
touch $1
chmod 770 $1
сделать его исполняемым:
chmod 750 mkfile
и поместите его в папку /usr/local/bin. Теперь вы можете создавать файлы с правами 770 везде:
mkfile my_file