Списки контроля доступа

Традиционная девятибитовая система контроля доступа (access control system — ACL) "владелец/группа/другие" позволяет решать большинство задач администрирования. Хотя ей присущи явные ограничения, она хорошо согласуется с традициями (кое-кто может сказать "с прошлыми традициями") простоты и предсказуемости UNIX.

Практически все другие операционные системы используют значительно более сложный метод управления доступом к файлам: списки управления доступом или ACL. Каждому файлу или каталогу может соответствовать список ACL, в котором перечислены правила установки прав доступа к данному файлу или каталогу. Каждое правило в списке ACL называется записью управления доступом (access control entry — АСЕ).

В общем, запись контроля доступа идентифицирует пользователя или группу, к кото-рой она применяется, и определяет набор привилегий, которыми наделяются эти пользователи. Списки ACL не имеют фиксированной длины и могут содержать определения прав множества пользователей или групп. Большинство операционных систем ограничивает длину отдельного списка ACL, но это ограничение может быть довольно слабым (обычно 32 записи), которое достигается не часто.

Более сложные системы позволяют администраторам указывать частичные наборы прав или отрицательные права, а некоторые из систем поддерживают наследование, которое позволяет определять права доступа для передачи их вновь создаваемым элементам файловых систем.

Конечно, системы ACL предоставляют больше возможностей, чем традиционная модель UNIX, но они и сложнее ее на порядок как для администраторов, так и для разработчиков программ. Используйте их с большой осторожностью. Они не только сложнее в использовании, но и могут порождать проблемы при использовании в сочетании с "не имеющими понятия" об ACL-списках системами резервного копирования, узлами NFS и даже такими простыми программами, как текстовые редакторы.

Списки ACL тяготеют к беспорядку, и поэтому со временем они становятся непригодными для управления. Читать дальше

Атрибуты файлов

В традиционной модели файловой системы UNIX и Linux каждому файлу соответствует набор из девяти битов режима. Они определяют, какие пользователи имеют прав читать файл, записывать в него данные или запускать его на выполнение. (Права доступа к файлу, отображаемые командой ls для символической ссылки lrwxrwxrwx представляют собой фиктивные значения. Права на создание, удаление или разрешение ссылки управляются содержащим ее каталогом, в то время как права чтения, записи или выполнения для файла, указываемого ссылкой, предоставляются собственными правами целевого файла. Следовательно, символическая ссылка не нуждается (и не обладает) ни в какой собственной информации о правах доступа.)Вместе с другими тремя битами, которые в основном влияют на работу исполняемых файлов, этот набор образует код, или режим, доступа к файлу.

Двенадцать битов режима хранятся вместе с четырьмя дополнительными битами, определяющими тип файла. Эти четыре бита устанавливаются при создании файла и не подлежат изменению. Биты режима могут изменяться владельцем файла или суперпользователем с помощью команды chmod ("change mode" — изменить режим). Просмотр значений этих битов осуществляется с помощью команды ls -i (или ls -id в случае каталога). Пример приведен далее. Читать дальше

Псевдопользователи в *NIX

Только пользователь root имеет для ядра Linux особый статус. Есть, однако, еще несколько псевдопользовательских учетных записей, которые применяются для системных целей. Эти фиктивные учетные записи можно идентифицировать по значениям UID, которые обычно меньше 100. Как правило, учетные записи с UID меньше 10 принадлежат системе, а значения UID от 10 до 100 отведены для псевдопользователей, связанных со специальными программами. Пароли этих псевдопользователей в файле /etc/shadow обычно заменяют звездочкой, чтобы нельзя было войти в систему под служебным именем. Чтобы защититься от средств атаки на основе дистанционного входа в систему (когда вместо паролей используются файлы SSH-ключей), укажите в качестве командных интерпретаторов (вместо /bin/bash или /bin/sh) вариант /bin/false или /bin/nologin.

Читать дальше

Жизненный цикл процесса в Unix

Для создания нового процесса существующий процесс, как правило, клонирует сам себя с помощью системного вызова fork. В результате формируется копия исходного процесса, имеющая лишь некоторые отличия. В частности, новому процессу присваивается собственный идентификатор, и учет ресурсов ведется для него независимо от предка.

Читать дальше

Изменение приоритета выполнения: команды nice и renice

Фактор "уступчивости" — это число, по которому ядро определяет свою политику в отношении процессов, конкурирующих за право доступа к центральному процессору. Чем выше фактор уступчивости, тем ниже приоритет процесса и наоборот, отсюда и название термина. Низкое или отрицательное значение означает использование высокого приоритета: процесс ведет себя не слишком уступчиво.

Читать дальше

Файловая система /proc

Версии команд ps и top, используемые в Linux, считывают информацию о состоянии процессов из каталога /ргос — псевдофайловой системы, в которой ядро помещает большой объем интересной информации о состоянии системы. Несмотря на имя /ргос (и имя базового типа файловой системы — "ргос"), хранящаяся в этом каталоге информация не ограничивается одними лишь процессами — здесь хранится вся информация о состоянии и статистические сведения, генерируемые ядром. Некоторые параметры можно даже изменять, записывая новые значения в соответствующий файл каталога /ргос.

Читать дальше

Процессы, вышедшие из-под контроля

Неуправляемые процессы бывают двух видов: пользовательские, потребляющие слишком много системных ресурсов (например, времени центрального процессора или дискового пространства), и системные, которые внезапно выходят из-под контроля и начинают вести себя непредсказуемо. Процесс первого вида может быть вполне работоспособным, просто он некорректно обращается с ресурсами. В то же время системные процессы всегда должны подчиняться определенным правилам.

Читать дальше

Файловая система Unix

Ответьте, не раздумывая, на вопрос: что из перечисленного ниже можно считать элементами файловой системы?

  • Процессы
  • Аудиоустройства
  • Структуры данных ядра и параметры настройки
  • Каналы межзадачного взаимодействия

Если речь идет о системах UNIX или Linux, ответ будет таков: все перечисленное выше. Ну и, конечно же, в файловую систему входят собственно файлы.

Читать дальше

Монтирование и демонтирование файловой системы Unix/Linux

Файловое дерево формируется из отдельных частей, называемых файловыми системами, каждая из которых содержит корневой каталог и список его подкаталогов и файлов. Термин "файловая система" имеет, по сути, два значения. С одной стороны, это составная часть файлового дерева, а с другой — все файловое дерево и алгоритмы, с помощью которых ядро управляет им. Как правило, значение термина становится ясным из контекста.

Читать дальше

Типы файлов в UNIX/Linux

В большинстве реализаций файловых систем определены семь типов файлов:

  • обычные файлы;
  • каталоги;
  • файлы байт-ориентированных (символьных) устройств;
  • файлы блочно-ориентированных (блочных) устройств;
  • локальные сокеты;
  • именованные каналы (реализующие принцип обслуживания FIFO (First in First Out, т.е. "первым поступил — первым обслужен");
  • символические ссылки.

Даже если разработчики добавляют в файловую систему что-нибудь новое и необычное (например, информацию о процессах в каталог /ргос), им приходится маскировать это под файлы стандартных типов.

Читать дальше