如何创建符号链接

符号链接,也称为软链接或符号链接,是使用绝对或相对路径指向另一个文件或目录的特殊文件。 符号链接类似于 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 提供了许多不同的托管解决方案。 不确定哪个计划最好? 联系我们的销售团队以帮助您立即开始!