您的位置:首页 > 其它

特殊权限与软硬链接

2017-10-26 00:00 267 查看

特殊权限set_uid

该权限针对二进制可执行文件,使文件在执行阶段具有文件所有者的权限。比如 passwd 这个命令就具有该权限。当普通用户执行 passwd 命令时,可以临时获得 root 权限, 从而可以更改密码。



passwd 显示的是 rws,并非传统的 rwx。用数字表示为 4755。那么这个 4 是如何计算来的呢?当有特殊权限时,第一位数字可以是 0, 1(--t), 2(-s-), 3(-st), 4(s--), 5(s-t), 6(ss-), 7(sst)。再回过头来看 passwd,它是 s--所以是 4。下面来自定义一个 set uid 的权限:



说明: su - user1 这个命令可以让 root 用户临时切换到 user1 用户下,以 user1 的身份去执行命令。普通用户是没有权限查看/root/目录内容的,所以报错了。用 exit 退出 user1,然后给/bin/ls 命令加一个 set uid权限,再次切换到 user1 下,再执行 ls /root/就可以查看了。这里我们使用了 chmod u+s /bin/ls 来给 ls 增加一个 set uid 权限。

有时候你可能会看到-rwSr-xr-x 这样的权限, s 变成了 S,这是由于所有者没有了执行权限:



特殊权限set_gid

该权限可以应用在文件上同样也可以作用在目录。设置在文件上,作用和 set uid 类似,前提是这个文件是可执行的二进制文件,当设置 set gid 后,执行该文件的用户会临时以该文件所属组的身份执行。若目录被设置这个权限后, 任何用户在此目录下创建的文件或目录都具有和该目录所属的组相同的组。



说明:给/tmp/test 目录设置 set gid 权限后,权限由原来的 drwxrwxrwx 变为 drwxrwsrwx,此时以 user1的身份在/tmp/test 目录里创建目录和文件,其所属组都为 root,而不是 user1。

特殊权限stick_bit

Stick_bit 可以理解为防删除位。一个文件是否可以被某用户删除,主要取决于该文件所在目录是否对该用户具有写权限。如果没有写权限,则这个目录下的所有文件都不能被删除,同时也不能添加新的文件。如果希望用户能够添加文件但同时不能删除该目录下的其他用户的文件,则可以对父目录增加该权限。设置它后,就算用户对目录具有写权限,也不能删除其他用户的文件。比如/tmp/目录就设置过该权限。



说明:一个文件能否被删除,取决于该文件父目录的权限, /tmp/目录是 777,任何人都可写的,所以理论上任何人都可以删除/tmp/下的所有文件,但是刚才我们做的实验却表明, user2 是不可以删除 user1 的文件的,这就是因为/tmp/目录有一个 stick bit。

用法:

对于这些特殊权限的配置,方法和之前的一样。比如我想给一个文件增加一个 set uid 权限,那么命令为 chmod u+s filename,而去掉这个权限则为 chmod u-s filename。同理,想设置 set gid 则为chmod g+s dirname。设置 stick bit 权限为 chmod o+t dirname。

软链接

软链接: 跟硬链接不同,这个是建立一个独立的文件,而这个文件的作用是当读取这个链接文件时,它会把读取的行为转发到该文件所 link 的文件上。

那么就来举一个例子:现在有文件 a,我们做了一个软链接文件 b(只是一个链接文件,非常小), b 指向了文件 a。当读取 b 时,那么b 就会把读取的动作转发到 a 上,这样就读取到了文件 a。所以,当我们删除文件 a 时,文件 b 并不会被删除,但是再读取 b 时,会提示无法打开文件。然而,当我们删除 b 时, a 是不会有任何影响的。(b文件类似Windows的快捷方式,但是是二级快捷方式,inode是一级)

这就用到了 ln 命令:

语法 : ln [-s] [来源文件] [目的文件(快捷方式)]
ln 常用的选项就一个-s,如果不加就是建立硬链接,加上就建立软链接。

软链接文件:



软连接目录:



不建议使用相对路径,而且相对路劲只能在当前目录下创建软链接,当文件发生移动时,会失去软链接的效果:



使用绝对路径:



为防止使用一些空间时被占满后写入失败,常常使用到了软链接方式存储将文件存储软链接到另一个地方:



硬链接

链接文件分为两种,硬链接(hard link)和软链接(symbolic link)。两种链接的本质区别关键点在于 inode。

硬链接: 当系统要读取一个文件时,就会先去读 inode table,一个文件对应一个 inode,然后再去根据 inode 中的信息到块区域去将数据取出来。而硬链接是直接使用了和源文件相同的 inode,硬链接文件(可以创建多个,,可删除,也是类似快捷方式但使用或者说记录了inode(真正数据位置信息))直接链接到文件放置的块区域。也就是说,进行硬链接的时候实际上该文件内容没有任何变化,只是指定了相同的 inode。硬链接有两个限制: (1)不能跨文件系统(分区),因为不同的文件系统有不同的 inode table; (2) 不能链接目录。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: