Что такое символические ссылки в Linux? Как создать символические ссылки? | DATAENGINER

Что такое символические ссылки в Linux? Как создать символические ссылки?

Символические ссылки Linux

Символическая ссылка, также известная как символическая или программная ссылка , представляет собой специальный тип файла, который просто указывает на другой файл или каталог, как ярлыки в Windows. Создание символической ссылки похоже на создание псевдонима для реального файла .

Если вы пытаетесь получить доступ к символической ссылке, вы фактически получаете доступ к целевому файлу, на который указывает символическая ссылка. Изменения, выполненные для содержимого файла ссылки, изменяют содержимое фактического целевого файла.

Если вы используете команду ls с опцией -l , вот как выглядит символическая ссылка:

lrwxrwxrwx 1 abhishek abhishek 23 Jul  2 08:51 link_prog -> newdir/test_dir/prog.py

В большинстве дистрибутивов Linux ссылки отображаются другим цветом, чем остальные записи, так что вы можете отличить ссылки от обычных файлов и каталогов.

Linux-терминал Soft Link
Soft Link отображается другим цветом

Символические ссылки предлагают удобный способ организации и обмена файлами. Они обеспечивают быстрый доступ к длинным и запутанным путям каталогов. Они активно используются при компоновке библиотек в Linux.

Теперь, когда вы немного знаете о символических ссылках, давайте посмотрим, как их создавать.

Чтобы создать символическую ссылку на целевой файл из имени ссылки , вы можете использовать команду ln с опцией -s, например:

ln -s target_file link_name

Опция -s здесь важна. Определяет, что ссылка является мягкой ссылкой. Если вы не используете его, он создаст жесткую ссылку . Я объясню разницу между мягкими ссылками и жесткими ссылками в другой статье.

Символические ссылки иногда могут сбивать с толку, поэтому следует помнить о нескольких вещах.

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

В этом и заключается вся цель ссылок. Вы получаете доступ к целевому файлу, перейдя по ссылке. Вы можете внести изменения в целевой файл по ссылкам. Давайте посмотрим на примере.

У меня есть файл prog.py в newdir / test_dir. Имеет следующие атрибуты:

-rw-r--r-- 1 abhishek abhishek 163 Apr 13 15:07 newdir/test_dir/prog.py

Теперь я создам мягкую ссылку на этот файл в моем текущем каталоге:

ln -s newdir/test_dir/prog.py link_prog

Вот атрибуты вновь созданной ссылки:

lrwxrwxrwx 1 abhishek abhishek 23 Jul  2 08:51 link_prog -> newdir/test_dir/prog.py

Заметьте l (это L, а не один) в начале строки? Если вы знакомы с правами доступа к файлам в Linux , вы должны знать, что «l» означает ссылку и, следовательно, говорит, что этот файл на самом деле является ссылкой. Давайте обновим вашу память, — означает файл, а d означает каталог.

Теперь, если я использую эту ссылку для изменения содержимого или атрибутов, то же самое будет отражено в целевом файле. Например, я использую сенсорную команду в программной ссылке, и вы заметите, что она изменяет временную метку целевого файла.

touch link_prog 

ls -l newdir/test_dir/prog.py 

-rw-r--r-- 1 abhishek abhishek 163 Jul  2 10:04 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 abhishek abhishek 23 Jul  2 08:51 link_prog -> newdir/test_dir/prog.py

Если права доступа к файлам для ссылок обрабатываются как есть, любой пользователь может создать символическую ссылку на безопасный файл и получить к нему свободный доступ. Это было бы серьезной проблемой безопасности. К счастью, этого не происходит. Поскольку разрешение на целевые файлы имеет значение, а не разрешение на ссылки.

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

Вы можете сослаться на ссылку ссылки или символическую ссылку

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





Ну вот и все. Я полагаю, что теперь вы лучше знакомы с программными ссылками и знаете, как создавать символические ссылки в Linux. Вы можете прочитать о команде symlinks, которая может помочь вам найти сломанные символические ссылки в Linux и легко управлять ими.

Постоянный редактор и автор сайта

Leave a reply:

Your email address will not be published.

Site Footer