使用 ls -li
查看文件的 id
链接在 Linux 中是指向另一个文件的指针. 有两种类型 软连接(Soft Link, Symbolic Link)
和 硬链接(Hard Link)
.
- 软连接在目标文件被删除的时候, 指向不再正常. 硬链接在目标文件被删除的时候, 仍然可以正常访问.
- 软连接可以指向文件或者文件夹, 硬链接只能指向文件.
- 软连接文件的 Inode 与源文件不同, 权限一般是
lrwxrwxrwx
, 硬链接 Inode 与源文件相同, 权限也与源文件相同. - 软连接文件属性以
l
开头, 硬链接与指向文件相同以-
开头. - 软连接只是存储目标的位置, 硬链接存储真实数据.
- 软连接可以跨越文件系统, 硬链接不能跨文件系统.
- 软连接创建
ln -s source target
, 硬链接创建ln source target
上面列举了软硬连接的区别.
使用 Hard Link 特性做跨文件夹级联权限的文件访问
当有一个文件, 存储在很深的文件层级下, 想对其他用户对该文件进行授权, 但是又不想让用户对级联的文件夹有权限, 可以使用硬链接.
例如 A 用户有文件 /a/b/c/d/e/file, 想向其他用户授权 file 的读权限, 但是又不能让其他用户有访问 /a/b/c/d/e/ 任意层级文件夹的权限, 可以使用 ln /a/b/c/d/e/file /tmp/file
.
扩展需要对目录增加访问权限, 使用定时任务对 Hard Link 做一个定时删除和创建.
参考文档