Пользователь и группа. Команды chown и chgrp. Права доступа к файлу
Как уже говорилось, для входа в операционную систему UNIX каждый пользователь должен быть зарегистрирован в ней под определенным именем. Вычислительные системы не умеют оперировать именами, поэтому каждому имени пользователя в системе соответствует некоторое числовое значение – его идентификатор – UID ( user identificator ).
Все пользователи в системе делятся на группы. Например, студенты одной учебной группы могут составлять отдельную группу пользователей. Группы пользователей также получают свои имена и соответствующие идентификационные номера – GID ( group identificator ). В одних версиях UNIX каждый пользователь может входить только в одну группу, в других – в несколько групп.
Команда chown
Синтаксис команды
chown owner файл1 файл2 ... файлN
Описание команды
Команда chown предназначена для изменения собственника (хозяина) файлов. Настоящее описание не является полным описанием команды, а адаптировано применительно к данному курсу. Для получения полного описания обращайтесь к UNIX Manual. Нового собственника файла могут назначить только предыдущий собственник файла или системный администратор.
Параметр owner задает нового собственника файла в символьном виде, как его username,или в числовом виде, как его UID.
Параметры файл1, файл2, ... файлN – это имена файлов, для которых производится изменение собственника. Вместо имен могут использоваться их шаблоны.
|
Для каждого файла, созданного в файловой системе, запоминаются имена его хозяина и группы хозяев. Заметим, что группа хозяев не обязательно должна быть группой, в которую входит хозяин. Упрощенно можно считать, что в операционной системе Linux при создании файла его хозяином становится пользователь, создавший файл, а его группой хозяев – группа, к которой этот пользователь принадлежит. Впоследствии хозяин файла или системный администратор могут передать его в собственность другому пользователю или изменить его группу хозяев с помощью команд chown и chgrp , описание которых можно найти в UNIX Manual.
Команда chgrp
Синтаксис команды
chgrp group файл1 файл2 ... файлN
Описание команды
Команда chgrp предназначена для изменения группы собственников (хозяев) файлов. Настоящее описание не является полным описанием команды, а адаптировано применительно к данному курсу. Для получения полного описания обращайтесь к UNIX Manual. Новую группу собственников файла могут назначить только собственник файла или системный администратор.
Параметр group задает новую группу собственников файла в символьном виде, как имя группы, или в числовом виде, как ее GID.
Параметры файл1, файл2, ... файлN – это имена файлов, для которых производится изменение группы собственников. Вместо имен могут использоваться их шаблоны.
|
Как мы видим, для каждого файла выделяется три категории пользователей:
- Пользователь, являющийся хозяином файла;
- Пользователи, относящиеся к группе хозяев файла;
- Все остальные пользователи.
Для каждой из этих категорий хозяин файла может определить различные права доступа к файлу. Различают три вида прав доступа: право на чтение файла – r (от слова read), право на модификацию файла – w (от слова write) и право на исполнение файла — x (от слова execute). Для регулярных файлов смысл этих прав совпадает с указанным выше. Для директорий он несколько иной. Право чтения для каталогов позволяет читать имена файлов, находящихся в этом каталоге (и только имена). Поскольку "исполнять" директорию бессмысленно (как, впрочем, и неисполняемый регулярный файл), право доступа на исполнение для директорий меняет смысл: наличие этого права позволяет получить дополнительную информацию о файлах, входящих в каталог (их размер, кто их хозяин, дата создания и т.д.). Без этого права вы не сможете ни читать содержимое файлов, лежащих в директории, ни модифицировать их, ни исполнять. Право на исполнение также требуется для директории, чтобы сделать ее текущей, а также для всех директорий на пути к ней. Право записи для директории позволяет изменять ее содержимое: создавать и удалять в ней файлы, переименовывать их. Отметим, что для удаления файла достаточно иметь права записи и исполнения для директории, в которую входит данный файл, независимо от прав доступа к самому файлу.
Команда ls с опциями -al. Использование команд chmod и umask
Получить подробную информацию о файлах в некоторой директории, включая имена хозяина, группы хозяев и права доступа, можно с помощью уже известной нам команды ls с опциями -al. В выдаче этой команды третья колонка слева содержит имена пользователей хозяев файлов, а четвертая колонка слева – имена групп хозяев файла. Самая левая колонка содержит типы файлов и права доступа к ним. Тип файла определяет первый символ в наборе символов. Если это символ ' d ', то тип файла – директория, если там стоит символ ' - ', то это – регулярный файл. Следующие три символа определяют права доступа для хозяина файла, следующие три – для пользователей, входящих в группу хозяев файла, и последние три – для всех остальных пользователей. Наличие символа ( r, w или x ), соответствующего праву, для некоторой категории пользователей означает, что данная категория пользователей обладает этим правом.
Вызовите команду ls -al для своей домашней директории и проанализируйте ее выдачу.
Команда chmod
Синтаксис команды
chmod [who] { + | – | = } [perm]
файл1 файл2 ... файлN
Описание команды
Команда chmod предназначена для изменения прав доступа к одному или нескольким файлам. Настоящее описание не является полным описанием команды, а адаптировано применительно к данному курсу. Для получения полного описания обращайтесь к UNIX Manual. Права доступа к файлу могут менять только собственник (хозяин) файла или системный администратор.
Параметр who определяет, для каких категорий пользователей устанавливаются права доступа. Он может представлять собой один или несколько символов:
a – установка прав доступа для всех категорий пользователей. Если параметр who не задан, то по умолчанию применяется a. При определении прав доступа с этим значением заданные права устанавливаются с учетом значения маски создания файлов;
u – установка прав доступа для собственника файла;
g – установка прав доступа для пользователей, входящих в группу собственников файла;
O – установка прав доступа для всех остальных пользователей.
Операция, выполняемая над правами доступа для заданной категории пользователей, определяется одним из следующих символов:
+ – добавление прав доступа;
- – отмена прав доступа;
= – замена прав доступа, т.е. отмена всех существовавших и добавление перечисленных.
Если параметр perm не определен, то все существовавшие права доступа отменяются.
Параметр perm определяет права доступа, которые будут добавлены, отменены или установлены взамен соответствующей командой. Он представляет собой комбинацию следующих символов или один из них:
r – право на чтение;
w – право на модификацию;
x – право на исполнение.
Параметры файл1, файл2, ... файлN – это имена файлов, для которых производится изменение прав доступа. Вместо имен могут использоваться их шаблоны.
|
Хозяин файла может изменять права доступа к нему, пользуясь командой chmod .
Создайте новый файл и посмотрите на права доступа к нему, установленные системой при его создании. Чем руководствуется операционная система при назначении этих прав? Она использует для этого маску создания файлов для программы, которая файл создает. Изначально для программы-оболочки она имеет некоторое значение по умолчанию.
Маска создания файлов текущего процесса
Маска создания файлов текущего процесса ( umask ) используется системными вызовами open() и mknod() при установке начальных прав доступа для вновь создаваемых файлов или FIFO. Младшие 9 бит маски создания файлов соответствуют правам доступа пользователя, создающего файл, группы, к которой он принадлежит, и всех остальных пользователей так, как записано ниже с применением восьмеричных значений:
0400 – право чтения для пользователя, создавшего файл;
0200 – право записи для пользователя, создавшего файл;
0100 – право исполнения для пользователя, создавшего файл;
0040 – право чтения для группы пользователя, создавшего файл;
0020 – право записи для группы пользователя, создавшего файл;
0010 – право исполнения для группы пользователя, создавшего файл;
0004 – право чтения для всех остальных пользователей;
0002 – право записи для всех остальных пользователей;
0001 – право исполнения для всех остальных пользователей.
Установление значения какого-либо бита равным 1 запрещает инициализацию соответствующего права доступа для вновь создаваемого файла. Значение маски создания файлов может изменяться с помощью системного вызова umask() или команды umask . Маска создания файлов наследуется процессом-ребенком при порождении нового процесса системным вызовом fork() и входит в состав неизменяемой части системного контекста процесса при системном вызове exec(). В результате этого наследования изменение маски с помощью команды umask окажет влияние на атрибуты доступа к вновь создаваемым файлам для всех процессов, порожденных далее командной оболочкой.
|
Изменить текущее значение маски для программы-оболочки или посмотреть его можно с помощью команды umask .
Команда umask
Синтаксис команды
Описание команды
Команда umask предназначена для изменения маски создания файлов командной оболочки или просмотра ее текущего значения. При отсутствии параметра команда выдает значение установленной маски создания файлов в восьмеричном виде. Для установления нового значения оно задается как параметр value в восьмеричном виде.
|
Если вы хотите изменить его для Midnight Commander, необходимо выйти из mc, выполнить команду umask и запустить mc снова. Маска создания файлов не сохраняется между сеансами работы в системе. При новом входе в систему значение маски снова будет установлено по умолчанию.