1、suid (set uid)特殊权限
1)、set uid 简称suid
当我们为某个命令设定了suid,无论谁使用该命令都会使用该命令的 "属主" 运行该命令。
suid == 4000
[jacky@localhost ~]$ cat /etc/shadow
cat: /etc/shadow: 权限不够
[jacky@localhost ~]$ su - root
密码:
[root@localhost ~]# chmod u+s /usr/bin/cat #加上权限
[root@localhost ~]# su - jacky
[jacky@localhost ~]$ cat /etc/shadow
...
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
...
[root@localhost ~]# chmod u-s /usr/bin/cat #去掉权限
示意图如下:suid优点:可以让普通用户执行无法执行的命令,提供方便 ;
suid缺点:如果rm为suid,无论谁执行该命令,都能删除系统的
任何资源;
2)、进程能够以何种身份去查看一个文件,取决于与运行这个进程的用户对这个文件有没有权限。
cat是一个程序,当使用jacky用户去运行cat,查看/etc/shadow文件时,进程是由jacky来运行的,而jacky对/etc/shadow没有读取的权限,所以会提示“权限不够”,但当使用suid为cat给予特殊的权限后,cat就可以用/etc/shadow的 "属主" 身份去运行/etc/shadow了。
3)、suid的作用
(1)、让普通用户对可执行的二进制文件,临时拥有二进制文件的所属主权限。
(2)、如果设置的二进制文件没有执行权限,那么suid的权限显示就是大S。
(3)、特殊权限suid仅对二进制可执行程序有效,其他文件或目录则无效。
2、sgid (set gid) 特殊权限
1)、将目录设置为sgid后,如果在往该目录下创建文件,都将与该目录的所属组保持一致,演示如下
(1)、测试不同的用户在该目录下创建文件,检查属主和属组
(2)、使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单。
sgid == 2000
[root@localhost ~]# groupadd devops
[root@localhost ~]# useradd zhangsan -g devops
[root@localhost ~]# useradd lisi -g devops
[zhangsan@localhost share]$ touch zhangsan_1
[lisi@localhost share]$ touch lisi_1
[root@localhost share]# touch root_1
[root@localhost share]# ll
-rw-r--r--. 1 lisi devops 0 8月 8 15:56 lisi_1
-rw-r--r--. 1 root root 0 8月 8 15:58 root_1
-rw-r--r--. 1 zhangsan devops 0 8月 8 15:56 zhangsan_1
[root@localhost ~]# mkdir /opt/share
[root@localhost ~]# chmod 2777 /opt/share/
[root@localhost ~]# chown .devop /opt/share/
[zhangsan@localhost share]$ touch zhangsan_2
[lisi@localhost share]$ touch lisi_2
[root@localhost share]# touch root_2
[root@localhost ~]# ll /opt/share/
-rw-r--r--. 1 lisi devops 0 8月 8 15:56 lisi_1
-rw-r--r--. 1 lisi devop 0 8月 8 16:08 lisi_2
-rw-r--r--. 1 root root 0 8月 8 15:58 root_1
-rw-r--r--. 1 root devop 0 8月 8 16:09 root_2
-rw-r--r--. 1 zhangsan devops 0 8月 8 16:08 zhangsan_1
-rw-r--r--. 1 zhangsan devop 0 8月 8 16:08 zhangsan_2
3、sbit
1)、sbit的作用
普通用户对该目录拥有w和x权限,即普通用户可以在此目录中有写入权限。那么谁都可以在该目录下创建文件。如果没有粘滞位,那么普通用户拥有 w 权限,就可以删除此目录下的所有文件,包括其他用户建立的文件。但是一旦被赋予了粘滞位,除了 root 和/tmp/的所属主可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,而不能删除其他用户建立的文件。
2)、设定粘滞位
3)、粘滞位使用场景sbit == 1000
[root@localhost tmp]# chmod 1777 /tmp/passwd
4)、用户上传资料场景
4、特殊属性 chattr,lsattr
-a: 只能追加,无其他操作
-i:锁定文件,不能删除,不能追加,不能移动
1)、希望任何人都不能创建用户,应该给/etc/passwd添加什么特殊属性?
[root@localhost ~]# chattr +i /etc/passwd
[root@localhost ~]# lsattr /etc/passwd
----i----------- /etc/passwd
[root@localhost ~]# useradd mjj
useradd:无法打开 /etc/passwd
[root@localhost ~]# chattr -i /etc/passwd
[root@localhost ~]# lsattr /etc/passwd
---------------- /etc/passwd
2)、日志文件,希望能往里面追加内容,但不允许删除,应该添加什么特殊属性?
[root@localhost ~]# chattr +a /var/log/secure
[root@localhost ~]# lsattr /var/log/secure
-----a---------- /var/log/secure
[root@localhost ~]# chattr -a /var/log/secur
[root@localhost ~]# lsattr /var/log/secure
---------------- /var/log/secure
5、umask 默认权限
umask是用来控制默认创建文件或目录的权限
1)、umask设定为022,表示要减去的权限
目录 777 -022 =755
文件 666 -022 =644
2)、umask 设定为奇数、偶数对文件和目录有什么影响?
文件: 如果umask出现了奇数, 要在奇数位+1 。
目录: 对目录毫无影响 。
3)、设定umask
umask number 临时 (当前bash窗口有效,会随着bash的关闭一 起结束)
vim /etc/profile /etc/login.defs # 如果修改则都为永久。
PS: umask 知道就行, 不要调整,默认就是安全的权限.