Обеспечение того, чтобы новые файлы в каталоге принадлежали группе
Я хочу создать общий каталог, когда несколько пользователей (все, скажем, mygroup) могут создавать и редактировать файлы. Я хотел бы, чтобы все файлы в этом каталоге и подкаталоге принадлежали моей группе
Я изменил существующие файлы, чтобы группа mygroup, используя chgrp
, но новые файлы все еще создаются, принадлежат к основной группе пользователя. Есть ли способ гарантировать, что новые файлы принадлежат группе без повторного запуска chgrp.
3 ответа
Вы хотите установить бит SetGID.
chmod g+s dir
Для всех новых файлов, созданных в каталоге, группа будет установлена в группу каталога.
Сообщение в блоге суперпользователя объяснило липкие биты и другие биты разрешения Linux:
SetGID, однако, совершенно другая игра с мячом. Когда в каталоге установлен бит SetGID и в этом каталоге создается файл, принадлежность группы к файлу автоматически изменяется и становится группой каталога.
Это может привести к тому, что несколько человек застрянут с 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 set 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 the group is set right
Установить setgid
флажок разрешения на папки.
chmod g+s dirname