$ ls -la .profile
lrwxrwxrwx 1 matty sales 5567 Oct 3 05:40 .profile -> /usr/local/menus/sales.profile
Аналогичные действия выполняются для всех пользователей. Теперь для изменения любого из профилей достаточно поменять всего один файл — либо sales.profile, либо admin.profile.
Когда ссылка больше не нужна, ее можно удалить. Однако помните, что при удалении исходного файла символическая ссылка не удаляется автоматически, а лишь становится недействительной. При обращении к ней выводится сообщение "No such file оr directory" (нет такого файла или каталога).
Символическая ссылка может указывать на файл или каталог, находящийся в другой файловой системе. Следует только учитывать, что у вас должно быть право поиска во всех каталогах, перечисленных в путевом имени к исходному файлу. Режим доступа к ссылке устанавливается равным 777 (rwxrwxrwx), но режим доступа к исходному файлу не меняется.
После инсталляции новой системы мне часто приходится создавать ссылку на каталог /tmp из каталога /var, так как некоторые приложения рассчитывают на каталог /var/tmp (а он не всегда существует) для размещения в нем своих временных файлов. Чтобы хранить все временные файлы в одном месте и не создавать новый каталог, я формирую символическую ссылку:
$ ln -s /tmp /var/tmp $ cd /var $ ls -l
lrwxrwxrwx 1 root root 5567 Sep 9 10:40 tmp -> /tmp
1.10. Заключение
Эта глава содержит базовые сведения о системе безопасности файлов. Будьте предельно внимательны, реализуя наши рекомендации. Небольшая ошибка при вводе команды chmod -R из корневого каталога может привести к огромным затратам времени на то, чтобы восстановить для файлов корректный режим доступа.
Создание сценариев с установленным битом SUID является весьма удобным. Но старайтесь осторожно применять SUID–сценарии, обеспечивающие предоставление прав пользователя root.
ГЛАВА 2
Команды find и xargs
Часто в процессе работы возникает необходимость осуществить поиск файлов с определенными характеристиками, такими как права доступа, размер, тип и т. д. Команда find представляет собой универсальный инструмент поиска: она позволяет искать файлы и каталоги, просматривать все каталоги в системе или только текущий каталог.
В этой главе рассматриваются следующие темы, связанные с применением команды find:
• параметры команды find;
• примеры использования различных опций команды find;
• примеры совместного использования команд xargs и find .
Возможности команды find обширны, велик и список предлагаемых опций. В настоящей главе описаны наиболее важные из них. Команда find может проводить поиск даже на дисках NFS (Network File System -cетевая файловая система), конечно, при наличии соответствующих разрешений. В подобных случаях команда обычно выполняется в фоновом режиме, поскольку просмотр дерева каталогов требует значительных затрат времени.
Общий формат команды find таков:
find путевое_имя -oпции
где путевое_имя — это каталог, с которого необходимо начинать поиск. Символ '.' служит для обозначения текущего каталога, символ '/' — корневого каталога, а символ '~' — записанного в переменной $НОМЕ начального каталога текущего пользователя.
2.1. Опции команды find
Остановимся на описании основных опций команды find . Таблица 2.1. Основные опции команды find
-name | Поиск файлов, имена которых соответствуют заданному шаблону |
Запись полных имен найденных файлов в стандартный поток вывода | |
-perm | Поиск файлов, для которых установлен указанный режим доступа |
-prune | Применяется для того, чтобы команда find не выполняла рекурсивный поиск по уже найденному путевому имени; если указана опция -depth, опция -prune игнорируется |
-user | Поиск файлов, принадлежащих указанном пользователю |
-group | Поиск файлов, которые принадлежат данной группе |
-mtime -n +n | Поиск файлов, содержимое которых модифицировалось менее чем (-) или более чем (+) n дней назад; имеются также опции -atime и -ctime, которые позволяют осуществлять поиск файлов соответственно по дате последнего чтения и дате последнего изменения атрибутов файла |
-nogroup | Поиск файлов, принадлежащих несуществующей группе, для которой, иначе говоря, отсутствует запись в файле /etc/groups |
-nouser | Поиск файлов, принадлежащих несуществующему пользователю, для которого, другими словами, отсутствует запись в файле |
/etc/passwd | |
-newer файл | Поиск файлов, которые созданы позднее, чем указанный файл |
-type | Поиск файлов определенного типа, а именно: |
b -cпециальный блочный файл; | |
d — каталог; | |
с -cпециальный символьный файл; | |
p — именованный канал; | |
1 -cимволическая ссылка; | |
s -cокет; | |
f -oбычный файл | |
-size n | Поиск файлов, размер которых составляет n единиц; возможны |
следующие единицы измерения: | |
b — блок размером 512 байтов (установка по умолчанию); | |
c — байт; | |
k — килобайт (1024 байта); | |
w — двухбайтовое слово | |
-depth | При поиске файлов сначала просматривается содержимое текущего каталога и лишь затем проверяется запись, соответствующая самому каталогу |
-fstype | Поиск файлов, которые находятся в файловой системе определенного типа; обычно соответствующие сведения хранятся в файле /etc/fstab, который содержит данные о файловых системах, используемых на локальном компьютере |
-mount | Поиск файлов только в текущей файловой системе; аналогом этой опции является опция -xdev |
-exec | Выполнение команды интерпретатора shell для всех обнаруженных |
файлов; выполняемые команды имеют формат | |
команда {} \; | |
(обратите внимание на наличие пробела между символами {} и | |
-ok | Аналогична опции -exec, но перед выполнением команды отображается запрос |