11. Права доступа в Unix. Учетные записи. Пользователи и группы. Основной интерфейс пользователя Unix-систем: командная строка, командный интерпретатор (shell). Группы команд (утилит) Unix. Примеры команд.

Владельцы файлов

Группой называется определенный список пользователей системы. Пользователь может быть членом нескольких групп, одна из которых является первичной, а остальные - дополнительными.

/etc/passwd - список всех пользователей и их первичных групп; /etc/group - список всех групп и их дополнительных пользователей. В UNIX любой файл имеет двух владельцев:

  1. владельца-пользователя
  2. владельца-группу.

Права доступа к файлам

У каждого файла существуют атрибуты, называемые правами доступа. В UNIX существует три базовых типа доступа:

  1. u (user) для владельца-пользователя
  2. g (group) для владельца-группы
  3. o (other) для всех остальных
  4. а (all - объединяет 3 предыдущих класса). Для всех классов пользователей

В каждом из этих классов установлены три основных права доступа:

  1. r (read) право на чтение
  2. w (write) право на запись
  3. x (execute) право на выполнение

В первой колонке вывода команды ls -l можно просмотреть установленные права.

Пример:

$ ls -l

  • r w - r - - r w x 1 stud1 students … example.program 0 1 2 3 4 5 6 7 8 9 0 - тип файла: - обычный; d каталог; l символическая ссылка; c,b символьный/блочный файл устройств. 1-3 - права доступа для владельца-пользователя. 4-6 - права доступа для владельца-группы. 7-9 - права доступа для остальных. Права может изменять владелец-пользователь и(или) администратор. Для изменения прав доступа используется команда chmod: chmod

  • добавить права к текущим − отнять права от текущих = обнулить права и присвоить новые

Возможно также задание прав через числовой формат в восьмеричной системе счисления. Пример: chmod 666 *.

Значение прав доступа

Для обычных фалов - очевидно: право на чтение надо, чтобы прочитать файл, право на запись, чтобы иметь возможность файл изменить, а право на выполнение, чтобы запустить программу или скрипт. Примечание. Для успешного запуска скрипта необходимо установить атрибут r, чтобы командный интерпретатор мог построчно считывать текст скрипта. Для каталогов и символических связей интерпретация прав доступа проводится по-другому. Права символических ссылок совпадают с файлом, на который она указывает. На самой ссылке стоит 777 (всем все) и это не имеет значения. Для каталогов r позволяет получить имена (и только имена) файлов, находящихся в данном каталоге. X позволяет “выполнить”каталог, то есть заглянуть в метаданные и получить полную информацию о каталоге.

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

Последовательность проверки прав

  1. если вы администратор (root), доступ разрешен. Права не проверяются.
  2. если операция запрашивается владельцем, идет проверка его прав. В соответствии с ними ему разрешается выполнение операци или нет.
  3. если операция запрашивается пользователем, входящим в группу, владеющую файлом, идет проверка его прав. Соответственно, он либо получает разрешение, либо нет.
  4. аналогично для всех остальных пользователей.

Группой называется определенный список пользователей системы. Пользователь может быть членом нескольких групп, одна из которых является первичной, а остальные - дополнительными. /etc/passwd - список всех пользователей и их первичных групп; /etc/group - список всех групп и их дополнительных пользователей. В UNIX любой файл имеет двух владельцев:

  1. владельца-пользователя
  2. владельца-группу.

При этом владелец-пользователь не обязательно принадлежит владельцугруппе. Команда ls -l выводит информацию о владельцах в третью и четвертую колонки. Для изменения владельцев используются команды:

  • chown новый_влад. имя_файла. Например: chown sys something.doc.
  • chgrp новый_влад. имя_файла. Например: chgrp adm something.doc.

Сменить владельца-пользователя может либо текущий владелец, либо администратор (root). Сменить владельца-группу может либо владелецпользователь для группу, к которой он сам принадлежит (POSIX), либо администратор.

Традиционный интерфейс - командная строка. После входа в систему для пользователя осуществляется запуск одной из командных оболочек. Общее название shell (eng. - оболочка), так как они являются внешним окружением ядра системы. Оболочка - это интерпретатор комманд (встроенных и внешних) и обладает мощным встроенным языком shell scripts, позволяющим писать сложные программы.

Как следует из названия, основное назначение командной оболочки - ввод и исполнение команд. Для ввода команд служит т.н. командная строка, содержащая приглашение к вводу.

Общий вид команды: команда [-ключи] аргумент1 … аргументN

После ввода команды, система производит поиск в каталогах программ, заданных переменной PATH . Если команда найдена, то она будет запущена. Иногда, если PATH не содержит нужного каталога, нужно указать полный путь к программе. Примечание. Текущий каталог НЕ ВХОДИТ в PATH. Программы из него запускаютсяь следующим образом: ./program