58

Я хочу создать общий каталог, когда несколько пользователей (все, скажем, mygroup) могут создавать и редактировать файлы. Я хотел бы, чтобы все файлы в этом каталоге и подкаталоге принадлежали моей группе

Я изменил существующие файлы, чтобы иметь группу mygroup, используя chgrp , но новые файлы все еще создаются и принадлежат основной группе пользователя. Есть ли способ гарантировать, что новые файлы принадлежат группе без повторного запуска chgrp.

3 ответа3

98

Вы хотите установить бит SetGID.

chmod g+s dir

Для всех новых файлов, созданных в каталоге, группа будет установлена в группу каталога.

Сообщение в блоге суперпользователя объяснило липкие биты и другие биты разрешений Linux:

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

11

Установите флаг разрешения setgid для папок.

chmod g+s dirname
10

Это может привести к тому, что несколько человек застрянут с 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

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