2.18 特殊权限set_uid


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

[root@hanshuo-10 ~]# which passwd
/usr/bin/passwd
[root@hanshuo-10 ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

以上命令可以发现,passwd显示的是rws并不是传统的rwx, rws的s代表的就是set_uid.

[root@hanshuo-10 ~]# su - hanshuo            // 切换到普通用户
上一次登录:四 8月  3 22:05:16 CST 2017:0 上
[hanshuo@hanshuo-10 ~]$ whoami               //查看当前所在用户
hanshuo
[hanshuo@hanshuo-10 ~]$ ls /root/                 //root普通用户没有权限打开,需要将
ls: 无法打开目录/root/: 权限不够                            ls临时更改set_uid权限
[hanshuo@hanshuo-10 ~]$ ls -ld /root/
dr-xr-x---. 7 root root 244 12月 21 00:19 /root/

** ls临时更改set_uid权限** 操作如下

root@hanshuo-10 ~]# ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls    //没有改权限
[root@hanshuo-10 ~]# chmod u+s /usr/bin/ls        //改权限命令
[root@hanshuo-10 ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls      //已改完权限
[hanshuo@hanshuo-10 ~]$ ls /root/      //没改权限之前不能打开
ls: 无法打开目录/root/: 权限不够
[hanshuo@hanshuo-10 ~]$ ls /root/      //改权限后 就可以打开了
anaconda-ks.cfg  han  han1  hanshuo31  initial-setup-ks.cfg

[root@hanshuo-10 ~]# chmod u=rwx /usr/bin/ls [root@hanshuo-10 ~]# ls -l /usr/bin/ls -rwxr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls 改回权限


2.19 特殊权限set_gid


set_gid,他针对的所属组

总结: set gid这个权限的作用,它不仅仅可以作用在文件上也可以作用在目录上,当作用在文件上和set uid作用是一样的,它可以让执行这个文件的普通用户临时拥有所属组的身份,当作用在目录上的时候,当你创建子目录或者是子文件的时候,创建的子目录和子文件的所属组和该目录的所属组保持一致。


2.20 特殊权限stick_bit


stick_bit可以理解为防删除位。

防止被其他用户删除ROOT除外,,


2.21 软链接文件


他类似Windows的快捷方式 ln 命令的格式:ln -s 源文件 目的文件, 如果不加-s就是硬链接,加上-s就是软链接。

软链接是建立一个独立的文件,当读取这个链接文件时,它会把读取的行为转发到该文件所链接的文件上、软链接的特性。首先建立一个目录456然后复制/etc/passwd文件来做测试,再给它做一个软链接文件, 举例如下 上例中,如果删除源文件,则不能读取软链接文件,而且使用命令ll查看,发现颜色也有所变化,这说明目录不可以做硬链接,但可以做软链接,命令如下

[root@hanshuo-10 ~]# ln -s 123 789
[root@hanshuo-10 ~]# ls -ld 123 789
drwxr-xr-x 2 root root 25 12月 21 17:45 123
lrwxrwxrwx 1 root root  3 12月 21 17:57 789 -> 123

2.22 硬连接文件


硬链接:当系统要读取一个文件时,会先读inode信息,然后再根据inode中的信息到块区域将数据取出来。而硬链接是直接建立一个inod链接到文件放置的块区域,即进行硬链接时该文件内容没有任何变化,只是增加了一个指向这个文件的inode,并不会额外占用磁盘空间。硬链接有两个限制:(1)不能跨文件系统,因为不同的文件系统有不同的inode table:(2)不能做链接目录 硬链接名利格式为 ln 原文件 目的文件 举例如下

[root@hanshuo-10 ~]# mkdir /tmp/hanshuo
[root@hanshuo-10 ~]# cd /tmp
[root@hanshuo-10 tmp]# cd /tmp/hanshuo
[root@hanshuo-10 hanshuo]# cp /etc/passwd ./
[root@hanshuo-10 hanshuo]# ll
总用量 4
-rw-r--r-- 1 root root 2337 12月 21 23:17 passwd
[root@hanshuo-10 hanshuo]# du -sk   //du用来计算文件或者目录大小,-k表示以KB为单位,
4	.
[root@hanshuo-10 hanshuo]# ln passwd passwd-hard
[root@hanshuo-10 hanshuo]# ll
总用量 8
-rw-r--r-- 2 root root 2337 12月 21 23:17 passwd
-rw-r--r-- 2 root root 2337 12月 21 23:17 passwd-hard
[root@hanshuo-10 hanshuo]# du -sk
4	.

做了硬链接后,两个文件的大小都没有变化