logo
Методичка - Администрирование

Права доступа, жесткие ссылки.

Механизмы разграничения доступа, разработанные для системы UNIX в 70-х годах, очень просты, но они оказались настолько эффективными, что просуществовали уже более 30 лет и по сей день успешно выполняют стоящие перед ними задачи.

В основе механизмов разграничения доступа лежат имена пользователей и имена групп пользователей.

В индексном дескрипторе каждого файла записаны имя владельца файла и группы, которая имеет права на этот файл. Первоначально, при создании файла его владельцем объявляется тот пользователь, который этот файл создал. Точнее – тот пользователь, от чьего имени запущен процесс, создающий файл. Если выполнить команду ls -l, вы увидите владельца и его группу и, кроме того, в первом поле будут показаны права доступа и тип файла.

$ Is -I /bin/Is

-rwxr-xr-x 1 root root 49940 Sep 12 1999 /bin/Is

Символы в первом поле можно условно разделить на 4 группы. Первая группа, состоящая из единственного символа, определяет тип файла (- обычный файл; d каталог). Далее следуют три группы по три символа, которые и определяют права доступа к файлу соответственно для владельца файла, для группы пользователей, которая сопоставлена данному файлу, и для всех остальных пользователей системы (r – право читать, w – записывать, x - исполнять ).

Для изменения прав доступа к файлу используется команда chmod. Ее можно использовать в двух вариантах. В первом варианте вы должны явно указать, кому какое право даете или кого этого права лишаете:

[user]$ chmod wXp имя-файла

где вместо символа w подставляется:

либо символ u (user - то есть пользователь, который является владельцем);

либо g (group - группа);

либо о (все пользователи, не входящие в группу, которой принадлежит данный файл);

либо а (all - все пользователи системы, т. е. и владелец, и группа, и все остальные).

вместо х ставится:

либо + (предоставляем право);

либо - (лишаем соответствующего права);

либо = (установить указанные права вместо имеющихся).

вместо р — символ, обозначающий соответствующее право:

г (чтение);

w (запись);

х (выполнение).

Второй вариант задания команды chmod (он используется чаще) основан на цифровом представлении прав. Для этого мы кодируем символ r цифрой 4, символ w — цифрой 2, а символ х – цифрой 1. Для того чтобы предоставить пользователям какой-то набор прав, надо сложить соответствующие цифры.

Получив, таким образом, нужные цифровые значения для владельца файла, для группы файла и для всех остальных пользователей, задаем эти три цифры в качестве аргумента команды chmod (ставим эти цифры после имени команды перед вторым аргументом, который задает имя файла). Например, если надо дать все права владельцу (4+2+1=7), право на чтение и запись - группе (4+2=6), и не давать никаких прав остальным, то следует дать такую команду:

[user]$ chmod 760 file_name

Жесткие ссылки

Каждому файлу в Linux соответствует так называемый "индексный дескриптор" файла, или "inode". Именно индексный дескриптор содержит всю необходимую файловой системе информацию о файле, включая информацию о расположении частей файла на носителе, типе файла и многое другое. Индексные дескрипторы файлов содержатся в специальной таблице (inode table), которая формируется при создании файловой системы на носителе.

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

Т.е. имя любого файла в Linux является ни чем иным, как ссылкой на индексный дескриптор файла. Поэтому каждый файл может иметь сколько угодно разных имен. Эти имена называют еще "жесткими" ссылками. Для создания дополнительного имени используется команда ln:

In имя существующего файла новое_имя

Число жестких ссылок на файл (то есть разных имен файла) можно узнать выполнив команду ls с параметром -l. Сразу за перечислением прав доступ к файлу следует число, которое и обозначает число жестких ссылок на файл.

Задания:

  1. Запустите консоль, перейдите на самый верхний уровень, к каким каталогам в корневой папке вы имеете доступ?

  2. Зайдите в папку tmp

  3. Создайте текстовый файл

  4. Посмотрите его владельца, группу владельца и права доступа

  5. Измените права доступа к этому файлу:

    1. вы и ваша группа должны иметь право делать с файлом все, остальные – ничего

    2. вы – чтение, запись, исполнение; группа – чтение, остальные – ничего

    3. вы – ничего, группа – чтение, остальные – чтение, запись, исполнение (получится ли?)

  6. Создайте ещё один файл.

    1. для этого файла создайте жесткую ссылку

    2. поместите её в свой домашний каталог