Права доступа Unix - что именно такое "группа владельцев" (примечание: единственное число)?
Я программирую файловую систему Fuse.
Пока все нормально, не возникало неразрешимых проблем (кроме производительности).
Тем не менее, я прочитал следующие статьи:
http://linuxcommand.org/lts0070.php
http://www.perlfect.com/articles/chmod.shtml
http://mason.gmu.edu/~montecin/UNIXpermiss.htm
http://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions
http://www.tutorialspoint.com/unix/unix-file-permission.htm
https://kb.iu.edu/d/abdb
И у меня есть следующий вопрос:
Учитывая универсальную строку разрешения Unix -
Я понимаю, что строка (после первого символа) разделена на группы по 3 (rwx) для
owner
owner_group
all/world/anyone
Однако в одной из статей прямо говорится, что 1 пользователь может быть в N группах.
Так почему единственное число здесь для владельца группы (не группы)? Что такое группа владельцев, если я (создатель файла и, следовательно, владелец) нахожусь в нескольких группах?
Скажем, я член группы A, группы B и группы C.
Теперь я создаю файл где-то.
Так как выражение owner_group является единственным, а не множественным числом, к какой группе применяются разрешения owner_group?
A XOR B XOR C, или все они, или ни один из них?
Если он применяется только к одному (как следует из единственного числа), как определяется, какой группе назначены права?
У меня есть отчетливое чувство, что я чего-то не понимаю или что я неправильно понимаю значение термина "группа владельцев".
1 ответ
- Пользователь может быть членом нескольких групп.
- Файл принадлежит только одной группе и одному пользователю.
- Если пользователь является членом группы владельцев файла (т. Е. Группы
foo
владеет файлом, и одна из групп пользователейfoo
), тогда соответствующие разрешения группы применяются к этому пользователю (если они не отменены разрешениями владельца).
Группа владельцев является частью владельца файла. Рассматривать:
$ stat /usr/bin/crontab
File: ‘/usr/bin/crontab’
Size: 35984 Blocks: 72 IO Block: 4096 regular file
Device: 803h/2051d Inode: 131439 Links: 1
Access: (2755/-rwxr-sr-x) Uid: ( 0/ root) Gid: ( 103/ crontab)
Access: 2015-02-05 20:20:43.438507538 +0530
Modify: 2013-02-09 12:32:23.000000000 +0530
Change: 2014-09-30 19:22:09.508515013 +0530
Birth: -
Это говорит о том, что владельцем файла является пользователь root
и группа crontab
,
Скажем, я являюсь членом группы A, группы B и группы C. Теперь я создаю файл где-нибудь. ... [Для] к какой группе применяются разрешения owner_group?
Это зависит от того, какая ваша основная группа находится в то время, когда вы создали этот файл. Первичная группа указана первой при запуске groups
команда. Обычно это определяется вашим GID. Однако вы можете временно установить одну из других групп в качестве основной с помощью newgrp
команда. Например:
$ groups
muru adm cdrom sudo dip plugdev lpadmin sambashare
$ rm foo; touch foo
$ stat -c %G foo # this prints the owner group of the file
muru
$ newgrp sudo
$ rm foo; touch foo
$ stat -c %G foo
sudo
У меня есть отчетливое чувство, что я чего-то не понимаю или что я неправильно понимаю значение термина "группа владельцев".
Что группа владельцев является атрибутом файла, а не пользователем.
Я понимаю, что строка (после первого символа) разделена на группы по 3 (rwx) для
owner owner_group all/world/anyone
Немного выключено: третье поле - это другие, а не все. Другие охватывают всех, кроме владельца файла и членов группы владельцев файла. Различие вступает в игру при использовании символических режимов с chmod
:
chmod a-x
отнимает у всех права на выполнениеchmod o-x
забирает разрешение на выполнение всех остальных, оставляя нетронутым разрешение на выполнение для владельца и группы владельцев.
Наконец, заметка о частных группах пользователей. UPG довольно распространены в настольных системах, но не принимают их как должное в других местах. Если активны UPG, вероятно, что основная группа и имя пользователя имеют одинаковые числовые идентификатор и имя, и для каждого пользователя существует уникальная группа. Это все.