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


67

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

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

Ответы:


108

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

chmod g+s dir

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

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

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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.