3.9.4. Изменение прав доступа
Команда chmod используется для установки
(изменения) прав доступа файла. Только владелец
файла может менять права доступа к нему.
Синтаксис команды имеет вид:
chmod {a,u,g,o}{+,-}{r,w,x} <filenames>
Кратко, вы выбираете из all (все), user
(пользователь), group (группа) или other
(другие). Далее указываете, либо вы добавляете
права (+), либо лишаете прав (-). И
наконец, вы указываете один или несколько
режимов: read, write или execute. Несколько
примеров допустимых команд:
- chmod a+r stuff
- Дает всем пользователям право читать файл stuff.
- chmod +r stuff
- То же самое, что и ранее (a - по умолчанию).
- chmod og-x stuff
- Лишает права на выполнение всех, кроме
владельца.
- chmod u+rwx stuff
- Разрешает владельцу все (read, write и execute).
- chmod o-rwx stuff
- Запрещает все (read, write и execute) пользователям
категории другие (other).
3.10. Управление связями файлов
Связи позволяют давать одному физическому
файлу много имен. Системой файлы распознаются по индексам
файлов, которые являются уникальными
идентификаторами в рамках системы. Команда ls
-i выдаст вам индексы файлов. На самом деле
каталог - это перечень индексов файлов с
соответствующими этим индексам номерами. Каждое
имя файла в каталоге привязано к конкретному
индексу.
3.10.1. Жесткие связи
Команда ln используется для создания
множества связей для одного файла. Например,
скажем, что у вас есть файл foo. Используя ls
-i можно посмотреть индекс этого файла.
# ls -i foo
22192 foo
#
Здесь файл foo имеет в файловой системе
индекс 22192. Мы можем создать новую связь для этого
файла под именем bar:
# ln foo bar
С помощью ls -i можно убедиться, что оба
файла имеют один и тот же индекс.
# ls -i foo bar
22192 bar 22192 foo
#
Теперь, обращаясь к foo или bar мы
фактически обратимся к одном у тому же файлу.
Поэтому, если мы меняем что-то в файле foo,
эти же самые изменения произойдут в файле bar.
Эти связи известны, как жесткие связи (hard
links), поскольку они реализуются прямой ссылкой
на индекс файла. Обратите внимание, что в рамках
одной файловой системы вы можете организовать
только жесткие связи; символические связи
(смотрите ниже) не имеют этого ограничения.
Когда вы удаляете файл командой rm, на
самом деле вы удаляете только одну ссылку на
файл. Если вы введете команду
# rm foo
Удаляется только связь, имеющая имя foo; bar
будет как и прежде существовать. Файл только
тогда действительно удаляется, когда на него
больше нет связей. Обычно файлы имеют только одну
связь, так что команда rm действительно приведет к
удалению файла. Однако, если файл имеет много
ссылок, применение rm приведет только к удалению
одной связи; для того, чтобы удалить файл, вы
должны удалить все связи на этот файл.
Команда ls -l покажет число ссылок на файл
(кроме прочей информации)
# ls -l foo bar
-rw-r--r-- 2 root root 12 Aug 5 16:51 bar
-rw-r--r-- 2 root root 12 Aug 5 16:50 foo
#
Вторая колонка с цифрой "2" показывает число
связей файла.
Самом деле оказывается, что каталоги
представляют из себя справочник типа
"имена-индексы". Кроме прочего, каждый
каталог имеет минимум две жесткие ссылки: "."
(ссылка, указывающая на самого себя) и ".."
(ссылка, указывающая на родительский каталог). В
корневом каталоге (/) ссылка ".."
указывает на сам же каталог /.
[ Назад | Оглавление | Далее ]
|