В Linux, как и в остальных UNIX, каталоги также считаются файлами. Например, выполним следующую команду ls, чтобы увидеть разрешения на доступ:
$ mkdir foo
$ ls –ld foo
drwxrwxr-x 2 bball bball 4096 jul 23 12:37 foo
В данном примере команда mkdir создает каталог. Команда ls с параметром –ld отображает разрешения на доступ и иную информацию, касающуюся этого каталога в целом, но не его содержание. Здесь можно видеть, что права доступа к каталогу имеют значения 775 (владелец имеет все права 4+2+1, группа также все права, а весь остальной мир не может ничего изменять в нем 4+1).
Отсюда видно, что владелец и члены группы могут выводить содержание каталога и записывать в него. Все остальные пользователи могут только выводить содержание каталога. (Чтобы увидеть содержание каталога, необходимо иметь разрешение на выполнение).
Вы заметили, что в выходных данных команды ls в правах доступа стоит первой буква d. Это значит, что данный файл является каталогом; у обычного файла на этом месте стоит пробел. Другие буквы указывают на специальный тип файла. Например, если с помощью команды ls вывести информацию о файле устройства для последовательного порта, то можно увидеть следующее:
|
|
$ ls –l /dev/ttyS0
crw-rw---- 1 root uucp 4,64 Mar 23 23:38 /dev/ttyS0
Файл /dev/ttyS0 представляет символьное устройство (последовательный порт); владеет данным файлом пользователь root и этот файл доступен также любому члену группы uucp. Права доступа к файлу имеют значения 660 (чтение+запись, чтение+запись, нет прав).
Изменить права доступа к файлу можно с помощью команды chmod. Чтобы задать желаемое изменение в этой команде используют разные формы записи, включая восьмеричную и мнемоническую. В мнемонической форме параметры команды chmod обозначают следующее (со знаком плюс (+) они используются для добавления права на доступ, со знаком минус – для их удаления):
u Добавить (или удалить) право на какую-либо операцию с файлом (каталогом) для юзера.
g Добавить (или удалить) право для группы.
o Добавить (или удалить) право для всех остальных.
a Добавить (или удалить) право всем пользователям (all).
r Добавить (или удалить) право на чтение.
w Добавить (или удалить) право на запись.
x Добавить (или удалить) право на выполнение.
Из комбинации этих слов и складывается указание о том, как следует изменить права
доступа. Например, если создать файл, скажем, readme.txt, то для этого файла будут установлены разрешения, используемые по умолчанию (они определяются маской unmask в файле /etc/bsdhrc);
-rw-rw-r-- 1 bball bball 12 Oct 2 16:48 readme.txt
Допустим, мы хотим запретить всем без исключения пользователям модифицировать этот файл. Сделать это можно с помощью команды Chmod:
$ chmod –aw readme.txt
|
|
$ ls –l readme.txt
-r--r--r-- 1 bball bball 12 Oct 2 16:48 readme.txt
Теперь никто не сможет записывать в файл. Впрочем, владелец, если файл находится в его домашнем каталоге или каталоге /tmp, сможет изменять этот файл – поскольку имеет право на доступ к этим каталогам. Чтобы восстановить право на чтение и запись для владельца, можно выполнить такую команду:
$ chmod u+rw readme.txt
$ ls –l readme.txt
-rw------- 1 bball bball 12 Oct 2 16:48 readme.txt
Чтобы только владелец мог читать файл и записывать в него, можно также использовать восьмеричную форму записи командой chmod. Для этого необходимо выполнить команду chmod со значениями прав доступа, равными 600:
$ chmod 600 readme.txt
Если убрать права на выполнение некоторого каталога, то файлы, в нем содержащиеся, будут скрыты внутри каталога, не видны и не доступны никому, кроме владельца (и, конечно, пользователя root, который имеет доступ ко всем файлам операционной системы). Используя комбинации различных прав доступа можно легко и быстро создать безопасную среду.