Так что у меня есть каталог: www\ который выглядит так:

[eugene@server ~]$ ll
total 0
drwxrwx---. 2 eugene eugene 57 Dec 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 Dec 10 16:10 www
[eugene@server ~]$ echo 123 > www/test.txt
[eugene@server ~]$ ll www/
-rw-rw----+ 1 eugene eugene       4 Dec 10 16:11 test.txt
[eugene@server ~]$  

Как вы видите, test.txt был создан без ожидаемой группы apache . Также не было установлено разрешение x (execute) ...

Что мне здесь не хватает?

1 ответ1

0

Чтобы файлы в вашем каталоге создавались с помощью группы apache, вам лучше установить бит SETGUID:

chmod +2000 www

Что касается прав по умолчанию для создания файлов, вы не можете сделать это с помощью ACL, потому что по умолчанию Linux umask всегда побеждает. Umask не позволяет создавать файлы с любыми семизначными (rwx) правами на создаваемые файлы.

Вместо этого вы можете создать скрипт mkfile со следующим внутри:

touch $1
chmod 770 $1

сделать его исполняемым:

chmod 750 mkfile

и поместите его в папку /usr /local /bin. Теперь вы можете создавать файлы с разрешениями 770 везде:

mkfile my_file

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .