符号链接,也称为软链接或符号链接,是使用绝对或相对路径指向另一个文件或目录的特殊文件。 符号链接类似于 Windows 中的快捷方式,当您需要快速访问具有长路径的文件或文件夹时非常有用。
符号链接不包含目标文件中的数据,因为链接仅指向文件系统中的不同文件,但删除目标文件将使符号链接不可用。
按照以下教程学习如何创建指向文件和目录的符号链接。
创建指向文件的符号链接
使用以下语法创建符号链接。
ln -s /path/to/file symlink_name
我使用相对路径和绝对路径创建了两个符号链接。
用于表示符号链接的符号是 -> 象征。 如果文件位于不同的位置,则此符号指向文件或文件的路径。 符号链接有 lrwxrwxrwx 权限,这是符号链接的默认权限,不可更改。
使用 ls 命令输出当前文件夹的内容,其中显示了我创建的两个符号链接。 符号链接 sym1 和 sym2 都指向同一个文件。
[[email protected] symlinks]$ ln -s file.txt sym1 [[email protected] symlinks]$ ln -s /home/mstevens/symlinks/file.txt sym2 [[email protected] symlinks]$ ls -l total 4 -rw-rw-r-- 1 mstevens mstevens 7 May 23 12:23 file.txt lrwxrwxrwx 1 mstevens mstevens 8 May 23 12:23 sym1 -> file.txt lrwxrwxrwx 1 mstevens mstevens 32 May 23 12:24 sym2 -> /home/mstevens/symlinks/file.txt
这里我们可以使用cat命令输出每个文件的内容。 如下图,内容是一样的。
[[email protected] symlinks]$ cat file.txt; cat sym1; cat sym2 This is my file.txt This is my file.txt This is my file.txt
创建到目录的符号链接
要创建指向目录的符号链接,我们可以使用相同的命令创建指向文件的符号链接。
[[email protected] symlinks]$ mkdir -p folder/123/abc [[email protected] symlinks]$ ln -s folder/123/abc/ abc [[email protected] symlinks]$ ls -l total 4 lrwxrwxrwx 1 mstevens mstevens 15 May 23 12:53 abc -> folder/123/abc/ drwxrwxr-x 3 mstevens mstevens 4096 May 23 12:55 folder
然后我们可以通过文件夹/123/abc/路径和符号链接abc访问abc文件夹。
在下面的示例中,我们在 abc 文件夹中创建了一个文件。 在查看abc文件夹的时候,我们可以使用pwd命令,查看当前目录的时候可以看到路径不同。
[[email protected] symlinks]$ touch folder/123/abc/File1 //accessing through folder [[email protected] symlinks]$ cd folder/123/abc/ [[email protected] abc]$ ls -l total 0 -rw-rw-r-- 1 mstevens mstevens 0 May 23 12:58 File1 [[email protected] abc]$ pwd /home/mstevens/symlinks/folder/123/abc //accessing through symlink [[email protected] symlinks]$ cd abc/ [[email protected] abc]$ ls -l total 0 -rw-rw-r-- 1 mstevens mstevens 0 May 23 12:58 File1 [[email protected] abc]$ pwd /home/mstevens/symlinks/abc
如何禁用符号链接
黑客通常利用符号链接功能来访问普通用户无法访问的服务器部分。 可以通过在 .htaccess 或 apache 配置文件中添加以下命令来禁用 apache 服务器上的符号链接。
Options -FollowSymlinks
Nginx 有自己的禁用符号链接的指令。
disable_symlinks on
CloudLinux 可以禁用指向不同所有者的文件/文件夹的符号链接。
fs.enforce_symlinksifowner=1
如何删除符号链接
要删除符号链接,我们可以使用以下两个命令之一:rm 或 unlink。
rm /path/to/symlink
unlink /path/to/symlink
这两个命令都将删除符号链接,但 unlink 是更安全的命令。 使用 rm -r 命令时要小心,因为符号链接指向的文件夹内容将被删除。
下面是删除符号链接的正确方法。
[[email protected] symlinks]$ ll total 4 lrwxrwxrwx 1 mstevens mstevens 15 May 23 12:53 abc -> folder/123/abc/ drwxrwxr-x 3 mstevens mstevens 4096 May 23 12:55 folder [[email protected] symlinks]$ unlink abc [[email protected] symlinks]$ ls -l total 4 drwxrwxr-x 3 mstevens mstevens 4096 May 23 12:55 folder
避免不正确地删除符号链接,如下所示。
//Contents of abc folder [[email protected] symlinks]$ ls -l abc/ total 0 -rw-rw-r-- 1 mstevens mstevens 0 May 24 16:30 File1 [[email protected] symlinks]$ rm -r abc/ rm: cannot remove 'abc/': Not a directory //checking contents again [[email protected] symlinks]$ ls -l abc/ total 0 [[email protected] symlinks]$
结论
符号链接允许您从当前位置访问特定文件或目录,这类似于我们使用桌面快捷方式的方式。 如果不再需要符号链接,可以将其删除,但请注意所使用的命令,以避免意外删除重要文件。
Liquid Web 提供了许多不同的托管解决方案。 不确定哪个计划最好? 联系我们的销售团队以帮助您立即开始!