Linux文件特殊权限-SUID、SGID、SBIT、chattr

1、权限s-SUID

1.1、SUID使用背景

复制代码
在Linux系统中,每个普通用户都可以更改自己的密码,这是合理的设置﹔
但是用户的密码信息存储在/etc/shadow文件中,普通用户在更改自己密码时会更新/etc/shadow文件的内容。
但/etc/shadow文件不允许任何人修改?那为什么普通用户可以修改自己的权限呢?

[root@linux ~]# ll /etc/shadow
---------- 1 root root 725 Apr 20 11:03 /etc/shadow
# 这里是没有任何权限的 [root@linux
~]# ll /bin/passwd -rwsr-xr-x. 1 root root 27856 Apr 1 2020 /bin/passwd # 这里可以看到所属主,执行权限那里是s 其实,普通用户可以修改自己的密码在于passwd命令本身, 该命令拥有特殊权限setUID也就是在属主的权限位的执行权限上是s那如何理解特殊权限SetuID:当一个执行文件设置SetuID后,用户在执行这个文件时将以文件所有者的身份来执行。
复制代码

1.2、SUID解析

1.2.1、SUID流程图

 

1.2.2、流程图解析

当我们使用普通用户lamp执行passwd命令会发生什么变化呢?
1、由于passwd命令拥有suid特殊权限;(在命令属主权限位执行权限位置有一个s)
[root@linux ~]# ll /bin/passwd 
-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /bin/passwd

2、所以 passwd命令在执行的过程中,会以命令的属主身份运行该命令;(也是root身份,并且拥有读、写、执权限)

3、总结: lamp --> passwd -->转换为命令属主身份root执行并且获取属主的权限 --> 操作/etc/shadow信息变更;

1.3、示例

1.3.1、设置suid权限

chmod 4755 /usr/bin/cat
chmod u+s /usr/bin/cat

[root@linux ~]# ll /usr/bin/cat
-rwsr-xr-x. 1 root root 54080 Aug 20  2019 /usr/bin/cat

1.3.2、删除suid权限

chmod 0755 /usr/bin/cat
chmod u-s /usr/bin/cat

2、权限s-SGID

2.1、什么是SGID

1、设置二进制可执行文件,命令在执行的过程中,会以命令的属组身份运行该命令。
2、设置在目录上,这时候在该目录下新建的文件
/目录自动继承父目录的属组

2.2、SGID语法

chmod g+s /dir
chmod 2755 /dir

2.3、示例

2.3.1、需求

系统有两个用户,分别为ex1 与ex2,这两个用户都拥有example附加组;
1、这两个用户需要共同拥有/mnt/code目录的开发权; 2、互相之间能修改彼此的文件,且该目录不允许其他人进入查阅;

2.3.2、创建用户和组

groupadd example
useradd ex1 -G example
useradd ex2 -G example

2.3.3、设置所属组

mkdir /mnt/code
chgrp example /mnt/code

[root@linux ~]# ll /mnt/ drwxr-xr-x 2 root example 6 Apr 20 13:15 code

2.3.4、设置权限和sgip权限

chmod 770 /mnt/code
chmod g+s /mnt/code
chmod 2770 /mnt/code

2.3.5、测试

复制代码
su - ex1
cd /mnt/code/ && touch ex1.txt
[ex1@linux code]$ ll
-rw-rw-r-- 1 ex1 example 0 Apr 20 13:21 ex1.txt

su - ex2
cd /mnt/code && touch ex2.txt

linux code]$ ll
-rw-rw-r-- 1 ex1 example 0 Apr 20 13:21 ex1.txt
-rw-rw-r-- 1 ex2 example 0 Apr 20 13:21 ex2.txt
复制代码

3、权限w-SBIT

3.1、什么是SBIT

一旦目录被赋予了粘滞位Sticky(SI TI KI)除了root可以删除目录中的所有文件,普通用户对该目录就算拥有w权限,也只能删除自己建立的文件,而不能删除其他用户建立的文件。

3.2、语法

复制代码
# 其它,没有任何权限,就是大写T
[root@linux ~]# chmod o+t /mnt/code、
[root@linux ~]# ll /mnt/
drwxrws--T 2 root example 36 Apr 20 13:21 code

# 其它,有权限就是小写t
[root@linux ~]# chmod 1755 /mnt/code
[root@linux ~]# ll /mnt/
drwxr-sr-t 2 root example 36 Apr 20 13:21 code
复制代码

3.3、小结

[ex1@linux code]$ ll
-rwxrwx--T 1 ex1 example 0 Apr 20 13:21 ex1.txt
-rwxrwx--T 1 ex2 example 0 Apr 20 13:21 ex2.txt
[ex1@linux code]$
rm -f ex1.txt # 删除自己是可以的 [ex1@linux code]$ rm -f ex2.txt # 删除别用户的文件,不允许删除 rm: cannot remove ‘ex2.txt’: Operation not permitted

4、chattr

4.1、场景

1)、创建一个文件,不允许被修改、移动、删除,包括root也不行 --> 适合/etc/passwd2)、创建一个文件,仅允许往文件里面追加数据,不允许修改、移动、删除。--> 适合sudo审计日志。

4.2、命令介绍

Linux系统通过chattr来实现特殊属性的配置命令格式:
chattr [+-=] [选项] 文件或目录名
+ 增加权限
- 删除权限 a : 可对文件进行追加内容; i : 锁定文件,不允许其他操作;

4.3、示例

4.3.1、配置/etc/passwd文件,不能改,不能追加,不能删除。

# 上锁
chattr
+i /etc/passwd [root@linux ~]# rm -f /etc/passwd rm: cannot remove ‘/etc/passwd’: Operation not permitted

# 解锁
chattr -i /etc/passwd

4.3.2、配置/var/log/secure文件,只能追加写入日志,不允许手动修改,也不允许删除。

复制代码
# 增加只能追加不能删除的权限
[root@linux ~]# chattr +a /var/log/secure

# 查询权限
[root@linux ~]# lsattr /var/log/secure
-----a---------- /var/log/secure

# 可以追加数据
echo "test" >>/var/log/secure
echo "test" >>/var/log/secure

# 不能删除
[root@linux ~]# rm -f /var/log/secure
rm: cannot remove ‘/var/log/secure’: Operation not permitted
复制代码

4.4、遇到病毒修改数据的时候处理方法

4.4.1、模拟病毒脚本

复制代码
tmp]# cat >test.sh<<'EOF' 
#!/bin/bash
web_site=/tmp/index.html
while true
do
  echo "我是写入恶意数据" >${web_site}
  sleep 2
done
EOF

sh test.sh
复制代码

4.4.2、增加锁定文件

tmp]# chattr +i index.html 

4.4.3、此时就无法写入数据修改文件

tmp]# sh test.sh 
test.sh: line 5: /tmp/index.html: Permission denied
test.sh: line 5: /tmp/index.html: Permission denied
test.sh: line 5: /tmp/index.html: Permission denied
test.sh: line 5: /tmp/index.html: Permission denied

4.4.4、然后kill掉病毒进程

kill $( ps -ef | grep test.sh | grep -v grep | awk '{print$2}')

 

posted @   小粉优化大师  阅读(226)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示