符号链接,也称为软链接或符号链接,是使用绝对或相对路径指向另一个文件或目录的特殊文件。 符号链接类似于 Windows 中的快捷方式,当您需要快速访问具有长路径的文件或文件夹时很有用。
符号链接不包含目标文件中的数据,因为链接只指向文件系统中的不同文件,但删除目标文件将使符号链接不可用。
按照以下教程学习如何创建指向文件和目录的符号链接。
创建指向文件的符号链接
使用以下语法创建符号链接。
ln -s /path/to/file symlink_name
我使用相对路径和绝对路径创建了两个符号链接。
- 绝对路径:从根目录(以 / 开头)开始到文件位置的路径。 查找特定文件所需的所有信息都在路径字符串中。
- 相对路径:从当前位置开始的路径。 此路径以表示当前目录的句点开头,或者以当前位置上方的目录的两个句点开头。
用于表示符号链接的符号是 -> 象征。 如果文件位于不同的位置,则此符号指向文件或文件的路径。 符号链接具有 lrwxrwxrwx 权限,这是符号链接的默认权限,不能更改。
使用 ls 命令输出当前文件夹的内容,其中显示了我创建的两个符号链接。 符号链接 sym1 和 sym2 都指向同一个文件。
[mstevens@host symlinks]$ ln -s file.txt sym1
[mstevens@host symlinks]$ ln -s /home/mstevens/symlinks/file.txt sym2
[mstevens@host 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 命令来输出每个文件的内容。 如下图,内容相同。
[mstevens@host symlinks]$ cat file.txt; cat sym1; cat sym2
This is my file.txt
This is my file.txt
This is my file.txt
创建指向目录的符号链接
要创建指向目录的符号链接,我们可以使用相同的命令创建指向文件的符号链接。
[mstevens@host symlinks]$ mkdir -p folder/123/abc
[mstevens@host symlinks]$ ln -s folder/123/abc/ abc
[mstevens@host 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文件夹。
在里面 example 下面,我们在 abc 文件夹中创建了一个文件。 在查看abc文件夹的时候,我们可以使用pwd命令,查看当前目录的时候发现路径不一样了。
[mstevens@host symlinks]$ touch folder/123/abc/File1
//accessing through folder
[mstevens@host symlinks]$ cd folder/123/abc/
[mstevens@host abc]$ ls -l
total 0
-rw-rw-r-- 1 mstevens mstevens 0 May 23 12:58 File1
[mstevens@host abc]$ pwd
/home/mstevens/symlinks/folder/123/abc
//accessing through symlink
[mstevens@host symlinks]$ cd abc/
[mstevens@host abc]$ ls -l
total 0
-rw-rw-r-- 1 mstevens mstevens 0 May 23 12:58 File1
[mstevens@host 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 命令时要小心,因为符号链接指向的文件夹内容将被删除。
以下是删除符号链接的正确方法。
[mstevens@host 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
[mstevens@host symlinks]$ unlink abc
[mstevens@host symlinks]$ ls -l
total 4
drwxrwxr-x 3 mstevens mstevens 4096 May 23 12:55 folder
避免不正确地删除符号链接,如下所示。
//Contents of abc folder
[mstevens@host symlinks]$ ls -l abc/
total 0
-rw-rw-r-- 1 mstevens mstevens 0 May 24 16:30 File1
[mstevens@host symlinks]$ rm -r abc/
rm: cannot remove 'abc/': Not a directory
//checking contents again
[mstevens@host symlinks]$ ls -l abc/
total 0
[mstevens@host symlinks]$
结论
符号链接允许您从当前位置访问特定文件或目录,这类似于我们使用桌面快捷方式的方式。 如果不再需要符号链接,可以将其删除,但请注意所使用的命令,以避免意外删除重要文件。
Liquid Web 提供了许多不同的托管解决方案。 不确定哪个计划最好? 联系我们的销售团队,帮助您从今天开始!