Символические ссылки создаются командой ln -s. Например, команда
/home/larry# ln -s foo barсоздает символическую ссылку по имени bar, которая указывает на файл foo. Если мы выдадим список командой ls -i, то мы увидим, что эти два файла имеют различные номера индексных дескрипторов.
/home/larry# ls -i foo bar 22195 bar 22192 foo /home/larry#Однако, выдав список командой ls -l, можно увидеть, что файл bar является символической ссылкой, указывающей на файл foo.
/home/larry# ls -l foo bar -rwxrwxrwx 1 root root 3 Aug 5 16:51 bar -> foo -rw-r--r-- 1 root root 12 Aug 5 16:50 foo /home/larry#В символических ссылках не используются права доступа к файлу (иными словами, они всегда имеют форму rwxrwxrwx). В действительности, права доступа к символическим ссылкам определяются правами доступа к тому файлу, на который показывает символическая ссылка (в нашем примере это файл foo).
При том, что между жесткими и символическими ссылками есть функциональное сходство, между ними есть и отличия. Во-первых, можно создать символическую ссылку на файл, который не существует, а сделать то же с жесткой ссылкой нельзя. Во-вторых, символические ссылки обрабатываются ядром системы иначе, чем жесткие ссылки; эта разница может показаться чисто технической, но иногда она важна. С помощью символических ссылок просто установить, на какой файл они показывают, а с жесткими ссылками простого способа определить, какие еще файлы связаны с данным индексным дескриптором, нет.
Ссылки широко используются в системе Linux. Особенно важны символические ссылки, которые указывают на библиотеки общего пользования, находящиеся в каталоге /lib. Более подробная информация по этому вопросу дана в разд. 4.11.4.