Эта подробная расскажет вам, что такое символические ссылки, как создавать символические ссылки и другие важные вещи, связанные с символическими ссылками.
Что такое символическая ссылка в Linux и почему она используется?
Символическая ссылка, также известная как символическая ссылка или программная ссылка, представляет собой специальный тип файла, который просто указывает на другой файл или каталог, как ярлыки в Windows. Создание символической ссылки похоже на создание псевдонима для реального файла.
Если вы пытаетесь получить доступ к символической ссылке, вы фактически получаете доступ к исходному файлу, на который указывает символическая ссылка. Изменения, выполненные для содержимого файла ссылки, изменяют содержимое фактического целевого файла.
Если вы используете команду ls с опцией -l, вот как выглядит символическая ссылка:
lrwxrwxrwx 1 andreyex andreyex 08 Jul 2 12:21 link_prog -> newdir/test_dir/prog.py
В большинстве дистрибутивов Linux ссылки отображаются другим цветом, чем остальные записи, так что вы можете отличить ссылки от обычных файлов и каталогов.
Символические ссылки предлагают удобный способ организации и обмена файлами. Они обеспечивают быстрый доступ к длинным и запутанным путям каталогов. Они активно используются при компоновке библиотек в Linux.
Теперь, когда вы немного знаете о символических ссылках, давайте посмотрим, как их создавать.
Как создать символическую ссылку в Linux
Чтобы создать символическую ссылку из источника на имя ссылки, вы можете использовать команду ln с опцией -s, например так:
ln -s source link_name
Опция -s здесь важна. Определяет, что ссылка является мягкой ссылкой. Если вы не используете его, он создаст жесткую ссылку. Мы объясним разницу между мягкими ссылками и жесткими ссылками в другой статье.
Что нужно помнить о символических ссылках
Символические ссылки иногда могут сбивать с толку, поэтому вам следует помнить о нескольких вещах.
Изменения, внесенные в ссылку, отражаются в исходном файле.
В этом и заключается вся цель ссылок. Вы получаете доступ к исходному файлу, перейдя по ссылке. Вы можете внести изменения в исходный файл по ссылкам. Давайте посмотрим на примере.
У нас есть файл prog.py в newdir/test_dir. Он имеет следующие атрибуты:
-rw-r--r-- 1 andreyex andreyex 163 Apr 13 15:07 newdir/test_dir/prog.py
Теперь мы создадим мягкую ссылку на этот файл в моем текущем каталоге:
ln -s newdir/test_dir/prog.py link_prog
Вот атрибуты вновь созданной ссылки:
lrwxrwxrwx 1 andreyex andreyex 08 Jul 2 12:21 link_prog -> newdir/test_dir/prog.py
Заметьте l (это L, а не один) в начале строки? Если вы знакомы с правами доступа к файлам в Linux, вы должны знать, что «l» обозначает ссылку и, следовательно, говорит, что этот файл на самом деле является ссылкой. Чтобы обновить память, – означает файл, а d – каталог.
Теперь, если мы используем эту ссылку для изменения содержимого или атрибутов, то же самое будет отражено в исходном файле. Например, мы используем команду touch в программной ссылке, и вы заметите, что она изменяет временную метку исходного файла.
touch link_prog ls -l newdir/test_dir/prog.py -rw-r--r-- 1 andreyex andreyex 163 Jul 2 12:56 newdir/test_dir/prog.py
Это ссылка на файл или каталог? Вы можете не знать!
Как бы вы узнали, указывает ли ссылка на файл или каталог? Вы не можете знать это, пока не пойдете по пути и не получите доступ к самому исходному файлу.
Вы можете создавать ссылки на несуществующий файл или каталог
Да, это вполне возможно. Вот почему вы должны быть осторожны при создании программных ссылок в Linux. Исходный файл, на который вы ссылаетесь, не должен существовать. Вы не получите никакой ошибки или предупреждения при создании ссылки на несуществующий файл/каталог.
Вы получите ошибку только при попытке получить доступ к исходному файлу, либо по ссылке, либо самостоятельно. Команда ls все равно будет работать.
ln -s non_existant_dir link_dir less link_dir link_dir: No such file or directory
Символические ссылки создаются с разрешения 777, но это ничего не значит
Заметили ли вы разрешение файла на символическую ссылку? Символические ссылки всегда создаются с разрешением 777 (rwxrwxrwx). Для обычного файла это будет означать, что любой может получить доступ к файлу. Но это не относится к ссылкам.
lrwxrwxrwx 1 andreyex andreyex 08 Jul 2 12:56 link_prog -> newdir/test_dir/prog.py
Если права доступа к файлам для ссылок обрабатываются как есть, любой пользователь может создать символическую ссылку на защищенный файл и получить к нему свободный доступ. Это было бы серьезной проблемой безопасности. К счастью, этого не происходит. Поскольку разрешение на исходные файлы имеет значение, а не разрешение на ссылки.
Вы можете использовать команду chmod, чтобы изменить разрешение для ссылки, но это изменит разрешение связанного файла, а не самой ссылки.
Вы можете сделать ссылку на ссылку ссылки или символическую ссылку
Вы можете сделать символическую ссылку, которая указывает на другую ссылку и так далее. Это называется символической связью. Лучше избегать их, поскольку это создает больше путаницы.
Ну вот и все. Мы полагаем, что теперь вы лучше знакомы с программными ссылками и знаете, как создавать символические ссылки в Linux.
Если у вас есть вопросы или предложения, пожалуйста, оставьте комментарий ниже.