Day 12-Linux特殊权限、权限属性和进程掩码

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)、设定粘滞位

sbit == 1000
[root@localhost tmp]# chmod 1777 /tmp/passwd

3)、粘滞位使用场景

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 知道就行, 不要调整,默认就是安全的权限.

你可能感兴趣的:(Day 12-Linux特殊权限、权限属性和进程掩码)