24

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

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

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

3 ответа3

47

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

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

3

Возможно, некоторые люди застряли с ответом «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
0

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

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