
Я заметил, что в ряде дистрибутивов Linux всякий раз, когда создается новый пользователь, он назначается в основную группу с его собственным именем.
Например, если я создам пользователя с именем «testuser», по умолчанию он будет назначен в основную группу «testuser».
Это приводит к тому, что все пользователи имеют свои собственные уникальные основные группы. Все эти группы также будут иметь только 1 пользователя, поскольку не имеет смысла добавлять других пользователей в эти группы. Это несколько противоречит интуиции, поскольку «группа» обычно означает «больше 1».
Эти основные группы пользователей также, как правило, бесполезны при попытке назначить разрешения файлам/папкам.
Есть ли причина, по которой это поведение по умолчанию в дистрибутивах? И есть ли какие-либо варианты использования, где это поведение действительно полезно? Почему бы не назначать всех новых пользователей в основную группу "пользователи"?
решение1
Причина (насколько мне известно, единственная) помещения пользователей в отдельную группу — это создание umask 002
разумного umask 007
значения по умолчанию.
Theumask— это маска для разрешений по умолчанию для вновь созданных файлов. Значение цифр такое же, как в chmod
; первая цифра — для пользователя, вторая — для группы, а третья — для остальных. Если бит в umask равен 1, он удаляется (маскируется) из разрешений вновь созданного файла. Например, если приложение создает неисполняемый файл без особых требований к конфиденциальности¹, оно передаст 666 в качестве разрешений файла, а применение umask 002 приведет к созданию файла с разрешениями 664 ( 0666 & ~002
в нотации, подобной C), т. е. файл, который доступен для чтения всем и доступен для записи только пользователю и группе ( rw-rw-r--
).
С umask 022 файлы доступны для чтения всем по умолчанию, но только их автору на запись. С umask 002 файлы дополнительно доступны на запись группе, которой они принадлежат. Если основная группа пользователя — это группа, в которой он является единственным пользователем, а umask — 002, то:
- По умолчанию файлы доступны для записи только их автору, поскольку, несмотря на то, что разрешения равны
rw-rw-r--
, в группе нет других пользователей, имеющих права на запись. - Чтобы разрешить членам группы изменять файл, автору нужно только сделать его владельцем этой группы с помощью
chgrp
. Это может произойти даже автоматически, если файл создан вкаталог с битом setgidили эквивалентACL.
Преимущество перед umask 022 заключается в том, что в этой настройке для того, чтобы сделать файл доступным для редактирования пользователями, автор должен выполнить две вещи: задать группу и расширить права доступа ( chmod g+w
). Люди склонны забывать этот второй шаг (или единственный шаг в каталоге setgid).
¹ Примеры файлов с особыми требованиями к конфиденциальности: ключи шифрования; электронные письма; любой файл в общедоступном каталоге, например /tmp
.
решение2
Было принято добавлять всех пользователей в группу users
, но это делает неудобным контролируемый обмен файлами (откройте групповые разрешения, у всех есть доступ). Поскольку сегодня процесс может принадлежать многим группам одновременно, просто закройте доступ, дав каждому пользователю свою собственную группу, и обменивайтесь файлами, добавляя для этого явные группы. Или (если доступно) используйтеACL-списки.