Основы операционных систем. Практикум

       

Команда 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]

Описание команды

Команда umask предназначена для изменения маски создания файлов командной оболочки или просмотра ее текущего значения. При отсутствии параметра команда выдает значение установленной маски создания файлов в восьмеричном виде. Для установления нового значения оно задается как параметр value в восьмеричном виде.

Если вы хотите изменить его для Midnight Commander, необходимо выйти из mc, выполнить команду umask и запустить mc снова. Маска создания файлов не сохраняется между сеансами работы в системе. При новом входе в систему значение маски снова будет установлено по умолчанию.


Содержание раздела