Обеспечение того, чтобы новые файлы в каталоге принадлежали группе

Я хочу создать общий каталог, когда несколько пользователей (все, скажем, 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
Другие вопросы по тегам