Для файлов, созданных изтестировщикучетная запись в каталоге /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 видеть это