💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
## SetUID (二进制程序权限) >[success] 只有可以执行的二进制程序才能设定 SUID 权限 > 命令执行者要对该程序拥有 x(执行)权限 > 命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文 > 件的属主) > SetUID 权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效 ``` 为什么/etc/shadow 所有人都没有权限却能修改? [root@localhost mydata]# ll /etc/passwd -rw-r--r--. 1 root root 1220 11月 3 10:50 /etc/passwd [root@localhost mydata]# ll /etc/shadow ----------. 1 root root 978 11月 3 10:50 /etc/shadow 因为/usr/bin/passwd 命令有特殊权限SetUID 如果取消 SetUID 权限,则普通用户就不能修改自己的密码了 [root@localhost mydata]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 27856 4月 1 2020 /usr/bin/passwd ``` ``` 危险的 SetUID [root@localhost ~]# chmod u+s /usr/bin/vim [root@localhost ~]# ll /usr/bin/vim -rwsr-xr-x 1 root root 1847752 4月 5 2012 /usr/bin/vim ``` >[info] 建议: > 关键目录应严格控制写权限。比如“/”、“/usr”等; > 对系统中默认应该具有 SetUID 权限的文件作一列表,定时检查有没有这之外的文件被设置 > 了 SetUID权限。 ``` #!/bin/bash #搜索系统中所有拥有SUID和SGID的文件,并保存到临时目录中。 find / -perm -4000 -o -perm -2000 > /tmp/setuid.check #做循环,每次循环取出临时文件中的文件名 for i in $(cat /tmp/setuid.check) do #比对这个文件名是否在模板文件中 grep $i /root/suid.list > /dev/null #如果在,不报错 if [ "$?" != "0" ] then echo "$i isn't in listfile! " >> /mydata/script/suid_log_$(date +%F) fi done #删除临时文件 rm -rf /tmp/setuid.check ---- 执行shell脚本:sh 文件名 ```