Как принудительно назначить группу и разрешения для созданных файлов внутри определенного каталога?

Как принудительно назначить группу и разрешения для созданных файлов внутри определенного каталога?

Для файлов, созданных изтестировщикучетная запись в каталоге /var/www, мне нужно, чтобы они былиг+рвхкак разрешения, иwww-данныекак группа.

Как мне этого добиться?

Я создаю файлы через SSH.

решение1

Чтобы установить группу, /var/wwwдайтесетгидкусочек:

chgrp www-data /var/www
chmod g+s /var/www

Чтобы также настроить подкаталоги:find /var/www -type d -exec chmod g+s {} +

Это приведет к тому, что все вновь создаваемые файлы будут наследовать группу родительского каталога, а не пользователя.


Чтобы установить разрешения группы по умолчанию, вам придется использоватьACL-списки. Установите ACL «по умолчанию»:

setfacl -m "default:group::rwx" /var/www

Чтобы также настроить подкаталоги:find /var/www -type d -exec setfacl -m d:g::rwx {} +

Примечание: Файловая система должна иметь включенную поддержку ACL. Иногда она включена по умолчанию;ext3илиext4вы можете получить сообщение «Операция не поддерживается», в этом случае ее необходимо включить вручную:

  • Для текущей смонтированной файловой системы:mount -o remount,acl /

  • Постоянно -одиниз методов ниже:

    • на уровне fstab: отредактируйте, чтобы в поле параметров /etc/fstabбылоacl

    • на уровне файловой системы:tune2fs -o acl /dev/diskname

решение2

Это могло заставить некоторых людей застрять с ответом «grawity» в setgid. Если группа папки отличается от вашей, вам может потребоваться запустить chmod от имени пользователя root, но вы не получите никаких ошибок, указывающих на необходимость этого действия.

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir

$ chmod g+s dir                                    #no errors

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir  #but nothing changed

$ touch dir/nosudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar  9 10:51 nosudo       #and the group is still wrong


$ sudo chmod g+s dir

$ ls -ld dir
drwxrwsr-x 2 luke testgroup 4096 Mar  9 10:44 dir  #the setgid bit is now on

$ touch dir/withsudo && ls -l dir/
-rw-rw-r-- 1 luke luke      0 Mar  9 10:51 nosudo
-rw-rw-r-- 1 luke testgroup 0 Mar  9 10:51 withsudo #and group is set

решение3

Группа файлов, создаваемых пользователем, — это группа этого пользователя (в /etc/group). Права доступа контролируются параметром UMASK видеть это

Связанный контент