Я собираюсь работать над веб-проектом и поэтому имею папку www
-folder внутри $HOME
. Я хочу, чтобы эта папка принадлежала user
группе www-data
. Я выдаю:
mkdir $HOME/www
chmod g+rxs,u+rwx,o-rwx $HOME/www
chown user.www-data $HOME/www
Затем ls -alh | grep www
выдает:
drwxr-s--- 2 user www-data 4,0K Aug 10 17:33 www
Кроме того, я хочу, чтобы разрешения по умолчанию устанавливались независимо от разрешений создающих процессов. Поэтому я делаю:
setfacl -m d:u::rwx,d:g::rx,d:o::- $HOME/www
Затем getfacl $HOME/www
выдает:
# file: www
# owner: user
# group: www-data
# flags: -s-
user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:other::---
Теперь я cd
в недавно созданной папке выдаю:
touch testfile
И затем ls -alh | grep testfile
дает:
-rw-r----- 1 user www-data 0 Aug 10 17:44 testfile
Как вы можете видеть, группа www-data
была унаследована из-за setgid
бита. Но списки ACL по умолчанию из каталога $HOME/www
не были унаследованы (как я ожидал). $HOME
имеет другие списки ACL по умолчанию по сравнению с $HOME/www
- но я бы ожидал, что ручное переопределение списков ACL по умолчанию для подкаталогов работает довольно просто.
Я хочу, чтобы подкаталоги и файлы внутри $HOME/www
имели разрешения по умолчанию, как указано выше. Что я здесь упускаю?
решение1
Файлы по умолчанию не получают разрешения на выполнение. Каталоги получают. Попробуйте создать каталог, у него должны быть ожидаемые разрешения. Файлы должны получить ожидаемые разрешения по умолчанию за вычетом выполнения.