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

67

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

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

как раз вовремя
источник

Ответы:

108

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

chmod g+s dir

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

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

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

lesmana
источник
1
Благодарю. Ссылка полезна. описывает команду umask, которая является частью изображения
justintime
4
Как насчет создания подкаталога в исходном каталоге, который также принадлежит группе родительского каталога? Это возможно?
Daaxix
@ Ответ LukePH ниже крайне важен для того, чтобы не быть запутанным, когда это молча терпит неудачу: используйте sudo
Rhubarb
11

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