Кто варежку потерял?
Теперь нам осталось определить самую малость — кто является владельцем файла, членом его рабочей группы и "прочими". Для файлов, которые вы создаете с помощью текстового редактора или в результате компиляции программы все понятно — используются ваши идентификаторы пользователя и группы. Если вы разархивируете дистрибутив какого-либо продукта, то все вновь созданные файлы и каталоги также получает ваши идентификаторы. Вы уже догадались, к чему это может привести?
Совершенно верно — к конфузам. Вот типовая ситуация. Суперпользователь (root), обладает всеми необходимыми полномочиями, чтобы установить, ну скажем, BBS RoCat (Roman Catacombs — диск LinuxWare 1.0). И совершенно спокойно создает дерево каталогов на пару мегабайт. После этого вы садитесь за чтение документации и с ужасом обнаруживаете, что и имя каталога должно быть вполне определенное (ну это-то просто, можно использовать либо команду mv — чисто DOS-овский подход, либо воспользоваться командой ln, что предпочтительнее), да и владельцем файлов должен быть системный оператор с идентификатором BBS из группы BBS.
Но ведь не распаковав архив, вы не сможете узнать о необходимости использования вполне специфического идентификатора пользователя и группы! Как же быть? Стирать с диска только что распакованный каталог и повторять весь процесс установки с самого начала? Или можно каким-либо образом изменить имена владельцев файлов и групп?
Можно, и без проблем. Для этого вы можете воспользоваться командой chown, которая позволит изменить идентификатор владельца любого файла, каталога и даже дерева каталогов. Для изменения группы владельца файла вы можете использовать команду chgrp. А UNIX при попытке доступа к файлу сопоставит идентификатор пользователя и его группу с соответствующими полями в характеристиках файла и сделает соответствующие выводы.
Если оба идентификатора совпадают — вы законный владелец файла. Если совпадает только идентифкатор группы — вы можете пользоваться только теми правами, которые предоставляются члену группы. А уж если не совпал ни один из идентификаторов — вам доступны только права доступа класса "others".