Эта подробная расскажет вам, что такое символические ссылки, как создавать символические ссылки и другие важные вещи, связанные с символическими ссылками.
Символическая ссылка, также известная как символическая ссылка или программная ссылка, представляет собой специальный тип файла, который просто указывает на другой файл или каталог, как ярлыки в Windows. Создание символической ссылки похоже на создание псевдонима для реального файла.
Если вы пытаетесь получить доступ к символической ссылке, вы фактически получаете доступ к исходному файлу, на который указывает символическая ссылка. Изменения, выполненные для содержимого файла ссылки, изменяют содержимое фактического целевого файла.
Если вы используете команду ls с опцией -l, вот как выглядит символическая ссылка:
lrwxrwxrwx 1 andreyex andreyex 08 Jul 2 12:21 link_prog -> newdir/test_dir/prog.py
В большинстве дистрибутивов 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» обозначает ссылку и, следовательно, говорит, что этот файл на самом деле является ссылкой. Чтобы обновить память, f — означает файл, а 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 (rwxrwxrwx). Для обычного файла это будет означать, что любой может получить доступ к файлу. Но это не относится к ссылкам.
lrwxrwxrwx 1 andreyex andreyex 08 Jul 2 12:56 link_prog -> newdir/test_dir/prog.py
Если права доступа к файлам для ссылок обрабатываются как есть, любой пользователь может создать символическую ссылку на защищенный файл и получить к нему свободный доступ. Это было бы серьезной проблемой безопасности. К счастью, этого не происходит. Поскольку разрешение на исходные файлы имеет значение, а не разрешение на ссылки.
Вы можете использовать команду chmod, чтобы изменить разрешение для ссылки, но это изменит разрешение связанного файла, а не самой ссылки.
Вы можете сделать символическую ссылку, которая указывает на другую ссылку и так далее. Это называется символической связью. Лучше избегать их, поскольку это создает больше путаницы.
Ну вот и все. Мы полагаем, что теперь вы лучше знакомы с программными ссылками и знаете, как создавать символические ссылки в Linux.
Если у вас есть вопросы или предложения, пожалуйста, оставьте комментарий ниже.