Андрей Робачевский - Операционная система UNIX
- Название:Операционная система UNIX
- Автор:
- Жанр:
- Издательство:BHV - Санкт-Петербург
- Год:1997
- Город:Санкт-Петербург
- ISBN:5-7791-0057-8
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Андрей Робачевский - Операционная система UNIX краткое содержание
Книга посвящена семейству операционных систем UNIX и содержит информацию о принципах организации, идеологии и архитектуре, объединяющих различные версии этой операционной системы.
В книге рассматриваются: архитектура ядра UNIX (подсистемы ввода/вывода, управления памятью и процессами, а также файловая подсистема), программный интерфейс UNIX (системные вызовы и основные библиотечные функции), пользовательская среда (командный интерпретатор shell, основные команды и утилиты) и сетевая поддержка в UNIX (протоколов семейства TCP/IP, архитектура сетевой подсистемы, программные интерфейсы сокетов и TLI).
Для широкого круга пользователей
Операционная система UNIX - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
-rw-rw-r-- 1 andy student 3450 Nov 12 19:13 exams.quest
Владельцем-пользователем вновь созданного файла является пользователь, который создал файл. Порядок назначения владельца-группы зависит от конкретной версии UNIX. Например, в SCO UNIX владельцем-группой является первичная группа пользователя, создавшего файл, а в Digital UNIX владелец-группа наследуется от владельца группы — каталога, в котором создается файл. [5] На самом деле файл создает не пользователь, а процесс, запущенный пользователем. Процесс имеет атрибуты, связанные с пользователем и группой, которые и назначаются файлу при его создании. Более точное описание передачи "владения" имеет вид: 1. Идентификатор владельца-пользователя файла (UID) устанавливается равным EUID процесса, создающего файл (т. е. вызвавшего функцию open(2) или creat(2) ). 2. Идентификатор владельца-группы файла (group ID) устанавливается равным а) EGID процесса (для версии System V); б) GID каталога, в котором файл создается (для версии BSD). Большинство систем, использующих наследование System V, позволяют также устанавливать наследование группового владельца в стиле BSD. Это достигается установкой флага SGID на каталог. Более подробно об этом см. раздел "Дополнительные атрибуты" далее в этой главе.
Для изменения владельца файла используется команда chown(1) . В качестве параметров команда принимает имя владельца-пользователя и список файлов, для которых требуется изменить данный атрибут. Например, следующая команда установит пользователя sergey владельцем файлов client.cи server.c:
$ chown sergey client.c server.c
Изменение владельца-группы производится командой chgrp(1) . Как и chown(1) , в качестве параметров команда принимает имя владельца-группы и список файлов, для которых требуется изменить данный атрибут. Например, для установки группы staff в качестве владельца всех файлов текущего каталога, необходимо задать следующую команду:
$ chgrp staff *
Владение файлом определяет тот набор операций, который пользователь может совершить с файлом. Часть из них, такие как изменение прав доступа или владельца файла (табл. 1.1), может осуществлять только владелец (или суперпользователь), другие операции, такие как чтение, запись и запуск на выполнение (для исполняемых файлов) дополнительно контролируются правами доступа.
Таблица 1.1. Операции изменения владельцев файла
Операция | Команда | Имеет право выполнять | |
---|---|---|---|
в системе BSD 4.x | в системе SVR4 | ||
Изменение владельца-пользователя | chown(1) | суперпользователь | владелец файла |
Изменение владельца-группы | chgrp(1) | суперпользователь | владелец файла только для группы, к которой сам принадлежит (в соответствии с POSIX) |
Права доступа к файлу
В операционной системе UNIX существуют три базовых класса доступа к файлу, в каждом из которых установлены соответствующие права доступа:
User access (u) | Для владельца-пользователя файла |
Group access (g) | Для членов группы, являющейся владельцем файла |
Other access (о) | Для остальных пользователей (кроме суперпользователя) |
UNIX поддерживает три типа прав доступа для каждого класса: на чтение (read, обозначается символом на запись (write, обозначается символом w) и на выполнение (execute, обозначается символом x).
С помощью команды ls -l можно получить список прав доступа к файлу:
...
-rw-r--r-- 1 andy group 36482 Dec 22 19:13 report.txt.1
drwxr-xr-- 2 andy group 64 Aug 15 11:03 temp
-rwxr-xr-- 1 andy group 4889 Dec 22 15:13 a.out
-rw-r--r-- 1 andy group 7622 Feb 11 09:13 cont.c
...
Права доступа листинга отображаются в первой колонке (за исключением первого символа, обозначающего тип файла). Наличие права доступа обозначается соответствующим символом, а отсутствие — символом ' -
'. Рассмотрим, например, права доступа к файлу a.out:
Тип файла | Права владельца- пользователя | Права владельца- группы | Права остальных пользователей |
---|---|---|---|
- |
rwx |
r-x |
r-- |
Обычный файл | Чтение, запись, выполнение | Чтение и выполнение | Только чтение |
Права доступа могут быть изменены только владельцем файла или суперпользователем (superuser) — администратором системы. Для этого используется команда chmod(1) . Ниже приведен общий формат этой команды.

В качестве аргументов команда принимает указание классов доступа — владелец-пользователь, 'g' — владелец-группа, 'о' — остальные пользователи, 'а' — все классы пользователей), права доступа ('r' — чтение, 'w' — запись и 'x' — выполнение) и операцию, которую необходимо произвести ('+' — добавить, '-' — удалить и '=' — присвоить) для списка файлов file1 , file2 и т.д. Например, команда
$ chmod g-wx ownfile
лишит членов группы-владельца файла ownfileправа на запись и выполнение этого файла.
В одной команде можно задавать различные права для нескольких классов доступа, разделив их запятыми.
Приведем еще несколько примеров:
$ chmod a+w text |
Предоставить право на запись для всех пользователей |
$ chmod go=r text |
Установить право на чтение для всех пользователей, за исключением владельца |
$ chmod g+x-w runme |
Добавить для группы право на выполнение файла runme и снять право на запись |
$ chmod u+w,og+r-w text1 text2 |
Добавить право записи для владельца, право на чтение для группы и остальных пользователей, отключить право на запись для всех пользователей, исключая владельца |
Последний пример демонстрирует достаточно сложную установку прав доступа. Вы можете установить сразу все девять прав доступа, используя числовую форму команды chmod(1) :
$ chmod 754 *
Число определяется следующим образом: нужно представить права доступа в двоичном виде (0 — отсутствие соответствующего права, 1 — его наличие) и каждую триаду, соответствующую классу доступа, в свою очередь преобразовать в десятичное число.
Владелец | Группа | Остальные | ||||||
---|---|---|---|---|---|---|---|---|
r |
w |
x |
r |
— |
x |
r |
- |
- |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
7 |
5 |
4 |
Таким образом, приведенный пример эквивалентен следующей символьной форме chmod(1) :
$ chmod u=rwx, g=rx, o=r *
Значение прав доступа различно для разных типов файлов. Для файлов операции, которые можно производить, следуют из самих названий прав доступа. Например, чтобы просмотреть содержимое файла командой cat(1) , пользователь должен иметь право на чтение (r). Редактирование файла, т.е. его изменение, предусматривает наличие права на запись (w). Наконец, для того чтобы запустить некоторую программу на выполнение, вы должны иметь соответствующее право (x). Исполняемый файл может быть как скомпилированной программой, так и скриптом командного интерпретатора shell. В последнем случае вам также понадобится право на чтение, поскольку при выполнении скрипта командный интерпретатор должен иметь возможность считывать команды из файла. Все сказанное, за исключением, пожалуй, права на выполнение, имеющего смысл лишь для обычных файлов и каталогов, справедливо и для других типов файлов: специальных файлов устройств, именованных каналов, и сокетов. Например, чтобы иметь возможность распечатать документ, вы должны иметь право на запись в специальный файл устройства, связанный с принтером. [6] На самом деле специальный файл, связанный с устройством печати, не имеет общедоступных прав на запись. Доступ к принтеру контролируется системой печати, из которой и происходит доступ к этому файлу.
Для каталогов эти права имеют другой смысл, а для символических связей они вообще не используются, поскольку контролируются целевым файлом.
Интервал:
Закладка: