Читаем UNIX — универсальная среда программирования полностью

       252 073 256 243 263 243 255 260 273 000 000 000 000 000 000

000060 230  =   j   u   n   k  \0  \0  \0  \0  \0  \0  \0  \0  \0

       230 075 152 165 156 153 000 000 000 000 000 000 000 000 000

000100 $

Видите имена файлов, "спрятанные" здесь? Формат каталога — это комбинация двоичного и текстового представлений. Каталог строится из фрагментов по 16 байт, причем последние 14 байт здесь содержат имя файла, дополненное символом NUL из ASCII (нулевой код, имеющий значение 0), а первые два байта указывают системе, где находится служебная информация, относящаяся к файлу (мы вернемся к этому вопросу позднее). Каждый каталог начинается двумя записями: '.' (точка) и '..' (точка-точка).

$ cd         Начальный каталог

$ cd recipes

$ pwd

/usr/you/recipes

$ cd ..; pwd На один уровень выше

/usr/you

$ cd ..; pwd Еще на один уровень выше

/usr

$ cd ..; pwd Еще на один уровень выше

/

$ cd ..; pwd Еще на один уровень выше

/           

Выше некуда

$

Каталог / называется корнем файловой системы. Каждый файл системы находится в корневом каталоге или в одном из вложенных в него каталогов, и корневой каталог является родителем самому себе.

Упражнение 2.2

На основании изложенного выше представьте приблизительно действие команды ls. Подсказка: cat . foo; ls -f foo.

Упражнение 2.3

(Более сложное

) Как действует команда pwd?

Упражнение 2.4

Команда du предназначена для учета использования дискового пространства. Осуществлять с ее помощью поиск файлов в иерархии каталогов — довольно странное решение, возможно, даже неподходящее. За альтернативой обратитесь к странице справочного руководства find(1) и сравните две команды, в частности du -a | grep ... и find. Какая из них сработает быстрее? Что лучше: создать новую команду или воспользоваться побочным эффектом уже существующей?

2.4. Права доступа

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

Однако мы должны предупредить вас: в каждой системе UNIX есть особый пользователь, называемый суперпользователем

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

Если нужна большая защищенность, то можно изменить данные в файле так, что даже суперпользователь не сможет прочесть (или, по крайней мере, понять) их, для чего служит команда crypt (см. crypt(1)). Конечно, даже эта команда не дает абсолютной защиты. Суперпользователь может изменить команду crypt, или кто-то попытается расшифровать алгоритм crypt. Правда, и то и другое является трудно выполнимым, так что практически команда crypt достаточно надежна.

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

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже