$ umask

002

$ touch file2

$ ls -l file2

-rw‑rw‑r-- 1 dave admin 0 Feb 18 45:0? file2

1.9. Символические ссылки

Существует два типа ссылок: жесткие и символические (мягкие). Мы рассмотрим последние. Символическая ссылка представляет собой файл, содержащий имя другого файла и в действительности являющийся указателем на файл.

1.9.1. Применение символических ссылок

Предположим, у нас есть файл с информацией о продажах, находящийся в каталоге /usr/locai/admin/sales. Необходимо, чтобы каждый пользователь мог работать с этим файлом. Вместо того чтобы создавать множество копий файла в пользовательских каталогах, можно образовать в них символические ссылки, которые указывают на исходный файл в каталоге /usr/local/admin/sales. Тогда о всех изменениях, производимых в файле любым пользователем, немедленно узнают остальные пользователи. Имена символических ссылок могут быть произвольными и не обязаны совпадать с именем исходного файла.

Ссылки удобны в том случае, когда для получения доступа к файлу необходимо пройти через большое количество подкаталогов. Вместо этого можно создать ссылку в текущем каталоге, которая будет указывать на подкаталог, глубоко "спрятанный" в недрах других подкаталогов. Это также избавляет вас от необходимости запоминать местоположение таких файлов.

1.9.2. Примеры создания символических ссылок

Символическая ссылка создается с помощью команды ln -s, формат которой таков:

ln -s исхолный_файл [имя_ссылки]

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

Рассмотрим случай, когда в системе регистрируются 40 пользователей, относящихся к двум группам — менеджеры (sales) и административный персонал (admin). Для каждой группы при входе в систему должны быть заданы свои установки. Сначала

я удалю все профильные файлы (.profile) во всех пользовательских начальных каталогах, а затем создам в каталоге /usr/local/menus два новых профильных файла — sales.profile и admin.profile. В начальном каталоге каждого пользователя необходимо создать символическую ссылку на один из этих двух файлов. Вот как это делается для пользователя matty, являющегося членом группы sales:

$ cd /home/sales/matty

$ rm .profile

$ ln -s /usr/local/menus/sales.profile .profile

$ 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

Поиск файлов, имена которых соответствуют заданному шаблону

-print

Запись полных имен найденных файлов в стандартный поток вывода

-perm

Поиск файлов, для которых установлен указанный режим доступа

-prune

Применяется для того, чтобы команда find не выполняла рекурсивный поиск по уже найденному путевому имени; если указана опция -depth, опция -prune игнорируется

-user

Поиск файлов, принадлежащих указанном пользователю

-group

Поиск файлов, которые принадлежат данной группе

-mtime -n +n

Поиск файлов, содержимое которых модифицировалось менее чем (-) или более чем (+) n дней назад; имеются также опции -atime и -ctime, которые позволяют осуществлять поиск файлов соответственно по дате последнего чтения и дате последнего изменения атрибутов файла

-nogroup

Поиск файлов, принадлежащих несуществующей группе, для которой, иначе говоря, отсутствует запись в файле /etc/groups

-nouser

Поиск файлов, принадлежащих несуществующему пользователю, для которого, другими словами, отсутствует запись в файле

/etc/passwd

-newer файл

Поиск файлов, которые созданы позднее, чем указанный файл

-type

Поиск файлов определенного типа, а именно:

b -cпециальный блочный файл;


Перейти на страницу:
Изменить размер шрифта: