- •Отчёт о лабораторной работе №2
- •1. Типы файлов
- •2. Жёсткие ссылки
- •3. Команда find
- •4. Команда od
- •5. Файлы /etc/passwd, /etc/shadow и утилита /usr/bin/passwd
- •6. Изменение прав доступа и владельца
- •7. Программа-шлюз
- •8. Утилита df
- •9. Способы формирования ссылок
- •10. Утилита file
- •11. Минимальные права доступа необходимые для выполнения наиболее часто используемых операций:
9. Способы формирования ссылок
При создании нового файла или копировании создаётся жёсткая ссылка на файл. Жёсткая ссылка представляет из себя связь имени файла с метаданными (inode) и данными файла. Каждому имени соответствует жёсткая ссылка. Такая архитектура позволяет одному файлу иметь несколько имён в ФС. Пока данные файла связаны хотя бы с одним именем, их можно использовать, то есть можно совершать некоторые действия с файлом. Если удалить все имена, связанные с данными файла, то файл также будет удалён. Количество жёстких ссылок на файл можно увидеть во втором столбце, если ввести команду ls –l file. Если создать новый каталог, то на него сразу же будет две жёстких ссылки: ссылка из того каталога, в котором он находится и ссылка на самого себя, расположенная внутри нового каталога. При этом на тот каталог, в котором был создан новый, появится ещё одна жёсткая ссылка, расположенная в новом каталоге.
Жёсткую ссылку можно создать с помощью команды link. Ей надо указать файл (одно из его имён) и новое имя, которое будет также связано с этим файлом. Все жёсткие ссылки на один файл должны находиться в каталогах одного и того же дискового раздела, так как индексный дескриптор файла уникален только в пределах раздела.
Кроме того, жёсткую ссылку можно создать с помощью команды ln. Она отличается от link тем, что имеет дополнительные опции.
С помощью команды ln –s можно создать символическую ссылку. Символическая связь является особым типом файла, она позволяет косвенно адресовать другой файл. Данные файла, являющегося символической связью, содержат только имя целевого файла. Таким образом, можно создать символическую связь даже на несуществующий файл. ОС работает с символическими ссылками не так, как с обычными файлами. Например, при выводе на экран содержимого символической ссылки появятся данные того файла, на который она ссылается. А при вводе команды ls –l file, если file является символической ссылкой, появится не только имя файла file, но и его данные.
Скрипт, подсчитывающий и перечисляющий все символические ссылки на файл в разных каталогах:
#! /bin/sh
if [ $# -lt 1 ]
then
echo $0: error: File not specified
else
filename=$1
ls -lRa / | grep $filename$ | grep ^l > symlinks.txt
echo -n total >> symlinks.txt
wc -l symlinks.txt | cut -c1-9 >> symlinks.txt
fi
Команда wc подсчитывает число слов, байт или строк в файле.
Создадим несколько символических ссылок на файл отчёта и запустим скрипт:
# ln -s /home/SPO/Lab2/otchet2.txt /symlink1
# ln -s /home/SPO/Lab2/otchet2.txt /home/SPO/symlink2
# ln -s /home/SPO/Lab2/otchet2.txt /root/symlink3
# ./script9 otchet2.txt
# cat symlinks.txt
lrwxrwxrwx 1 root root 26 Dec 26 20:39 symlink1 -> /home/SPO/Lab2/otchet2.txt
lrwxrwxrwx 1 root root 26 Dec 26 20:39 symlink2 -> /home/SPO/Lab2/otchet2.txt
lrwxrwxrwx 1 root root 26 Dec 26 20:40 symlink3 -> /home/SPO/Lab2/otchet2.txt
total 3