2018.06.07任务

2.18 特殊权限set_uid 2.19 特殊权限set_gid 2.20 特殊权限stick_bit 2.21 软链接文件 2.22 硬连接文件

2.18 特殊权限set_uid

set_uid给予一个可执行的二进制文件一个普通用户可执行的临时权限,一个可执行的命令文件有s权限时,当普通用户执行这个命令时,会临时的给这个普通用户给予一个该命令是所属主权限 我们在终端下用普通用户查看root目录

[xiang@localhost ~]$ ls /root
ls: 无法打开目录/root: 权限不够

在root终端下给ls命令给予s权限

[root@localhost ~]# chmod u+s /usr/bin/ls
[root@localhost ~]# ll /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls

返回普通用户终端再次使用ls查看root目录,可以看到给予s权限后普通用户可以临时拥有该文件的所属主权限

[xiang@localhost ~]$ ls /root
anaconda-ks.cfg
给予s权限的ls命令和没有给予s权限的cat命令对比
[xiang@localhost ~]$ ll /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls        ls命令        
[xiang@localhost ~]$ ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54080 11月 6 2016 /usr/bin/cat        cat命令

2.19 特殊权限set_gid

作用于用户组的权限位

[root@localhost ~]# chmod g+s /usr/bin/ls
[root@localhost ~]# ll /usr/bin/ls
-rwxr-sr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls

普通用户临时拥有所属组的身份权限

[xiang@localhost ~]$ ll /usr/bin/ls
-rwxr-sr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
[xiang@localhost ~]$ ls /root
anaconda-ks.cfg

给目录加上的用户组权限位上添加s权限后,在该目录下创建的文件或目录会继承父级目录的权限

[root@localhost src]# chmod g+s 345/       给予345目录set_gid权限
[root@localhost src]# chown :xiang 345/    修改目录的所属组
[root@localhost src]# ll -d 345/
drwxr-sr-x 3 root xiang 17 6月 7 13:50 345/    
[root@localhost src]# mkdir 345/123           
[root@localhost src]# ll 345/
总用量 0
drwxr-sr-x 2 root xiang 6 6月   7 13:53 123
-rw-r--r-- 1 root xiang 0 6月   7 13:57 1.txt     再创建文件和目录时的所有权限位的所属组都会继承父级目录

用于:root管理员创建一个共享性质的目录,其中存放共享文件,供某个统一的用户组里的成员进行访问

2.20 特殊权限stick_bit

防删除权限位,用于目录,该目录下用户创建的文件其他用户不能删除只可修改 root终端下创建user目录,给予777权限,加上stick_bit权限位

[root@localhost src]# mkdir user
[root@localhost src]# chmod 777 user/
[root@localhost src]# chmod o+t user/
[root@localhost src]# ll -d user/
drwxrwxrwt 2 root root 6 6月 7 14:15 user/
drwxrwxrwt 2 root root 6 6月 7 14:15 user/

xiang用户终端下创建目录123,创建文件1.txt user终端下尝试删除xiang用户创建的目录和文件


[user1@localhost src]$ ll -d user/
drwxrwxrwt 3 root root 30 6月 7 14:19 user/
[user1@localhost user]$ rm -rf user/123/
rm: 无法删除"123/": 不允许的操作
[user1@localhost user]$ rm -rf user/1.txt 
rm: 无法删除"1.txt": 不允许的操作

再次在root终端去掉user目录的stick_bit权限位

[root@localhost src]# chmod o-t user/
回到user用户终端下再次尝试删除xiang用户创建的文件和目录
[user1@localhost src]$ rm -rf user/1.txt 
[user1@localhost src]$ rm -rf user/123/
[user1@localhost src]$ ll user/                结果是可以删除的
总用量 0

2.21 软链接文件

软链接类似于windows中的快捷方式 系统中的软连接文件,软链接删除源文件后,链接文件也会变的不可用

[root@localhost tmp]# ls -l /bin
lrwxrwxrwx. 1 root root 7 5月 28 22:16 /bin -> usr/bin
ln -s  源文件路径   软连接的新路径
软连接可以作用于文件也可作用于目录
软连接作用示例
[root@localhost tmp]# ln -s /usr/local/src/jiaoben/jisuan.py /tmp/jisu.py         软连接文件
[root@localhost tmp]# ln -s /usr/local/src/jiaoben/ /tmp/jiao                     软连接目录
[root@localhost tmp]# ll 
总用量 4
lrwxrwxrwx 1 root root 23 6月 7 14:40 jiao -> /usr/local/src/jiaoben/              软连接文件
lrwxrwxrwx 1 root root 32 6月 7 14:38 jisu.py -> /usr/local/src/jiaoben/jisuan.py  软连接目录
-rwx------. 1 root root 836 5月 28 22:25 ks-script-gvoZnq
-rw-------. 1 root root 0 5月 28 22:16 yum.log

软连接应用场景 如一个分区内的服务在不停的写数据导致分区快使用完了,考虑能把写入的这个文件或日志文件软连接到其他目录,原文件不能改动不能更改路径,只能把该文件以软连接并以同名文件软连接到其他目录,把写入的数据指向其他分区中存储

2.22 硬连接文件

只能作用于文件,不能作用于目录,不能跨分区链接 ln 源文件路径 链接的新路径

[root@localhost src]# ll jiaoben/
总用量 36
33589130 -rwxr-xr-x 2 xiang xiang   278 6月   6 15:57 jisuan.py           源文件

[root@localhost src]# ln jiaoben/jisuan.py jisuan.py                      硬链接
[root@localhost src]# ll -i
总用量 8
33589135 -rw-r--r-- 1 root  root    1 6月   6 16:59 1.txt
33589131 drwxr-xr-x 2 xiang xiang 174 6月   6 18:09 jiaoben
33589130 -rwxr-xr-x 2 xiang xiang 278 6月   6 15:57 jisuan.py            硬链接文件
注意jisuan.py这个文件的inode节点是一致的,删除源文件后,硬链接权限位后的链接数会由2变为1,表示相同的文件已经减少到1个了

硬链接不能作用于目录

[root@localhost src]# ls
1.txt jiaoben jisuan.py user
[root@localhost src]# ln jiaoben/ jiao
ln: "jiaoben/": 不允许将硬链接指向目录                          目录下有..    .这种特殊的目录,如果能做硬链接,会导致inode管理混乱

硬链接不能跨分区,因为硬链接靠inode来分配链接文件,而各个分区是独立的inode管理系统,这个分区存在的inode节点存储的文件可能会在其他分区早已被占用或不存在,不支持分区间的硬链接文件