一、特殊位suid
1、概述
suid:针对文件/程序时,具备临时提升权限。
suid是针对文件所设置的一个特殊的权限。
功能:使调用文件的用户,临时具备属主的能力
2、引入
看下列命令
[root@localhost ~]# touch /root/file001 //在root目录下创建一个file001的文件
[root@localhost ~]# vim /root/file001 //编辑文件内容
[root@localhost ~]# su zhangsan //切换zhangsan用户身份
[zhangsan@localhost root]$ cat /root/file001 //查看file001文件内容
cat: /root/file001: 权限不够 //权限不足
分析:root运行是超管的权限,普通用户运行时是普通用户的权限所以不能够查看file001的内容
[zhangsan@localhost root]$ exit //退出zhangsan身份
exit
[root@localhost ~]# ll -d /root //查看root目录信息
dr-xr-x---. 15 root root 4096 9月 28 14:50 /root //只有属主root和属组root可以对root目录进项读和执行,其他用户是没有任何权限的。
root身份:usr/bin/cat(root) 这个时候cat的属主是root超管身份可以查看文件的
zhangsan身份:usr/bin/cat(zhangsan) 这个时候cat的属主是普通用户身份无法查看root目录下的文件
3、设置suid
设置suid,使普通用户通过suid临时提权,获得查看超管root目录的权限
语法:chmod u+s 文件
1)为cat程序添加上suid权限
[root@localhost ~]# ll /usr/bin/cat //查看cat信息
-rwxr-xr-x. 1 root root 54080 8月 20 2019 /usr/bin/cat
[root@localhost ~]# chmod u+s /usr/bin/cat //给cat添加上suid权限
[root@localhost ~]# ll /usr/bin/cat //查看cat信息
-rwsr-xr-x. 1 root root 54080 8月 20 2019 /usr/bin/cat //cat属主的权限被赋予上root的权限,这个时候即便是普通用户使用cat程序也可以拥有root的权限
2)使用普通用户运行cat,暂时获得root权限
[root@localhost ~]# su zhangsan //切换zhangsan用户
[zhangsan@localhost root]$ cat /root/file001 //zhangsan用户查看root下的file001文件
123 //可以查看
[zhangsan@localhost root]$ exit //退出zhangsan用户
exit
//在试验后要将suid权限移除
[root@localhost ~]# chmod u-s /usr/bin/cat //移除suid权限
[root@localhost ~]# ll /usr/bin/cat //查看cat信息
-rwxr-xr-x. 1 root root 54080 8月 20 2019 /usr/bin/cat //suid权限不存在
[root@localhost ~]# su zhangsan //切换zhangsna用户
[zhangsan@localhost root]$ cat /root/file001 //查看root下的file001文件
cat: /root/file001: 权限不够 //访问失败,因为这时候cat以及失去suid的权限
二、文件属性chattr
1、用途
常用于锁定某个文件,拒绝修改
2、以i为例子展示
语法:chattr +i 文件名 i不能对文件进行修改、重命名和删除
lschattr 文件 查看文件默认的属性权限
1)先创建新的文件进行对比,查看默认的权限
[root@localhost ~]# touch /test/t2 //创建t2文件
[root@localhost ~]# lsattr /test/t2 //查看默认权限
---------------- /test/t2
2)添加不能修改、重命名和删除的属性
[root@localhost ~]# chattr +i /test/t2 // 添加属性权限
[root@localhost ~]# lsattr /test/t2 //查看属性权限
----i----------- /test/t2
3)测试
[root@localhost ~]# rm -rf /test/t2 //删除文件t2
rm: 无法删除"/test/t2": 不允许的操作 //删除失败
[root@localhost ~]# mv /test/t2 /test/t3 //重命名t2
mv: 无法将"/test/t2" 移动至"/test/t3": 不允许的操作 //操作失败
[root@localhost ~]# vim /test/t2 //编辑t2内容
//文件变为只读
4)将属性还原并测试
[root@localhost ~]# chattr -i /test/t2 //删除i属性权限
[root@localhost ~]# lsattr /test/t2 //查看t2属性权限
---------------- /test/t2 //删除成功
[root@localhost ~]# cat /test/t2 //查看t2内容
[root@localhost ~]# vim /test/t2 //编辑t2内容
[root@localhost ~]# cat /test/t2 //查看t2内容
123 //编辑成功
[root@localhost ~]# mv /test/t2 /test/t3 //重命名t2为t3
[root@localhost ~]# ll /test //查看test内的文件
-rw-r--rwx. 1 root S1 0 9月 27 14:46 t1
-rw-r--r--. 1 root root 4 9月 28 15:25 t3 //重命名成功
[root@localhost ~]# rm -rf /test/t3 //删除t3
[root@localhost ~]# ll /test/t3
ls: 无法访问/test/t3: 没有那个文件或目录 //删除成功
三、远程掩码umask
1、概述
新建文件、目录的默认权限会受到umask的影响,umask表示要减掉的权限,在我们创建目录的时候默认目录是755,创建文件的时候默认权限为644,这些结果都是由777经过与umask的一些计算得到的,和减法一样的逻辑.
[root@localhost ~]# mkdir /test/dir001 //创建目录
[root@localhost ~]# ll -d /test/dir001 //查看目录信息
drwxr-xr-x. 2 root root 6 9月 28 15:31 /test/dir001 //目录的默认权限755
[root@localhost ~]# touch /test/t2 //创建文件
[root@localhost ~]# ll /test/t2 //查看文件信息
-rw-r--r--. 1 root root 0 9月 28 15:33 /test/t2 //文件默认权限为644
2、了解特别位
在我们之前授权的时候都是chmod 777(三个数) 文件名,但是其实前面还有一位数之前没有写的,这个特别位。
[root@localhost ~]# chmod 4777 /test/t2 //4就是属主那的特别位
[root@localhost ~]# ll /test/t2
-rwsrwxrwx. 1 root root 0 9月 28 15:33 /test/t2 //s就是suid
[root@localhost ~]# chmod 1777 /test/t2 //1是执行的特别位
[root@localhost ~]# ll /test/t2
-rwxrwxrwt. 1 root root 0 9月 28 15:33 /test/t2 //t是粘着位
[root@localhost ~]# chmod 2777 /test/t2 //2是属组的特别位
[root@localhost ~]# ll /test/t2
-rwxrwsrwx. 1 root root 0 9月 28 15:33 /test/t2 //s就是suid
3、查看系统默认掩码
[root@localhost ~]# umask //查看系统默认umask
0022
目录默认的权限755可以看做是0777-0022得来的
文件默认是需要移出执行权的所以需要减去0111
4、修改shell umask值(临时,关机就会恢复到默认)
[root@localhost ~]# umask 0000 //修改umask为0000
[root@localhost ~]# umask //查看umask
0000
[root@localhost ~]# mkdir /test/dir002 //创建目录dir002
[root@localhost ~]# touch /test/t3 //创建文件t3
[root@localhost ~]# ll -d /test/dir002 /test/t3 //查看dir002和t3的信息
drwxrwxrwx. 2 root root 6 9月 28 16:01 /test/dir002 //目录默认权限变为777
-rw-rw-rw-. 1 root root 0 9月 28 16:01 /test/t3 //文件默认权限变为666