5.5setuid和setgid。
setuid:
对于上图,普通用户修改密码过于简单但是不成功,会提示。另外,只有在超管(root)才能修改其他用户的密码,命令:passwd oldboy。
查看passwd的系统位置,其中会附上颜色。权限中的s就是suid。
再修改密码的时候,就是修改的/etc/shadow文件。
对于上图:4开头的就是指suid的设置。
小结:
1.在用户对应的前三位的x位上如果有s就表示,setuid。当x位上没有x的时候,suid就是S。
2.setuid位是让用户可以以root(或其他)用户的角色运行只有root(或其他)账号才能运行的程序或命令,或程序命令对应本来没有权限操作的文件等。(注意和su及sudo的区别)
通过给rm命令设置suid加深学生对suid的理解。
把oldboy的属主和属组改为root,root。
然后进入到oldboy,通过rm删除test.txt,但权限不够。要是希望能够通过oldboy删除root组的test.txt。有以下几种方法:
1)把rm命令加到sudo里面去。通过命令visudo,切到98行,(命令:98gg),把user02最后加上/bin/rm,然后把user02改为oldboy(相当于普通用户oldboy有了rm权限。)如下两图:
改过之后,然后在oldboy用户可以执行sudo rm -rf test.txt。来进行删除,如下图(如果不加sudo则会出现权限不够的提示。):
2)对命令设置suid。
因为创建的test.shx位没有x,所以经过u+s权限改过之后,就变成了S。而非小s。
但是进入到oldboy之后,还是删除不了test.sh。其原因是suid不是修改的要处理的文件,而是修改的要执行的命令(rm)。可以说,这是老男孩设置的一个陷阱。
通过修改权限,使/bin/rm的权限有了s,这样就可以通过rm来删除目标文件了。
进入到oldboy,rm删除成功。
通过以上两个方法就可以看出来suid的作用。
可以说只要rm被给了suid(前面权限中的s),整个系统都能被删除掉。suid的作用就是这么大,对于上图rm就相当于root的尚方宝剑。对于其他,rm(例子)是属于属主(root)的尚方宝剑。如果属主是oldboy,其他用户执行rm,就相当于有了oldboy应有的权限。
3.suid仅对二进制命令或程序有效,不能用在shell等类似脚本文件上(因为shell脚本仅仅是调用二进制命令程序而已,因此,具体权限还需要看二进制命令本身)。
4.二进制命令或程序都需要有可执行权限x。
5.suid权限仅在程序执行过程中有效。
6.执行命令的任意系统用户都可以获得该命令程序执行期间对应的拥有着的所有权限。
7)suid是双刃剑,是一个比较危险的功能,对系统安全有一定的威胁。如果有可能的话,可以对系统中suid无用的功能取消suid的权力(安全优化)。
一般比较危险,所以在试验结束之后再把权限改回来,如下图:
问题:查找具有suid的内容。
命令:find --help:
其中的perm是查看权限的。
通过以上命令,就可以把4755权限的文件查出来。
setgid知识小结:
对上图:当我们执行一个命令的时候,这个命令会去操作别的文件,执行别的文件。setgid是用户组上面的,当我们使用/usr/bin/locate这个命令的时候,如果有s的话,任何用户执行这个命令,都有和这个组(slocated)一样的权限。用户执行命令,实际上是在改/var/lib/mlocate/mlocate.db这个文件,那这个文件正好有这个组(slocare)对应的权限,所以在读这个文件的时候,就看属组r--这三位了。
如果/usr/bin/locate对应的属组权限没有s了,执行/usr/bin/locate命令的时候,就要看/var/lib/mlocate/mlocate.db对应的后三位权限了(---),文件就没有权限可以用了。
举例(setgid对于文件的权限):
在没有改变/usr/bin/locate之前,oldboy是可以用locate查到cp的位置的,因为对应的有sgid权限,但是在root下改变了locate的权限之后,oldboy就查不到cp的位置了,显示权限不够。
注意:例子演示完之后要把属性改回来。
举例(setgid对于目录的权限):
RHCE认证考试题:
在root下创建目录和文件的话,默认情况下都是属于root的用户,root的组。如上图创建的oldboy.txt和test.txt。属主和属组都是root。想要自动继承adminuser组,可以使用以下方法:
其中的sgid.txt的属组就变成了adminuser。
针对suid以及sgid,工作中尽量不用,多用sudo来管理,如果有可能要查找系统中无用suid位的命令等,进行撤除。sS都是suid,sgid的标识,suid是在用户位上,sgid是在用户组位上,和x重合的时候,就显示的是小写字母s。
5.6黏滞位sticky Bit(sbit)及设置方法。
在其他用户权限中有t的话,就表示有粘滞位。
说明介绍:
进入到test组,在组中删除之前在oldboy组中创建的o.txt,但是删除不成功。这就是sbit的作用。
tmp目录在没有x位的情况下,t也是大写的(T)。
位加上x也就是小t。
特殊权限对应的数字:
suid 4000s
sgid 2000s
粘滞位 1000t(做工作中也不常用)。
增加粘滞位的方法:
chmod 7755 test。
chmod o+t test。
tmp是典型的具有粘滞位的目录,特点就是谁都有写权限,因此安全成问题。常常是木马的第一手存放地。一般的运维不会管这个目录。但是高级的网站,专家等对这个会有需求,会进行管理。
8.1文件属性和文件系统属性的关系。
讲的主要就是chattr lsattr优化。
linux优化:把文件加密之后,然后把他们移走,及比较安全了。黑客也很难发现。
chattr的参数有a,c,d,ei等,但是只需掌握a和i。
这是下载chattr,当然了,用户中有chattr的话就不用下载了。
文件加了a之后,不能删除,不能追加,但是可以>>(添加)内容。
6.3文件属主和用户组的特殊情况。
使用chown时,属主,属组都是真实存在的,如果把文件对应的属主和属组删除,则属主,属组所在位置对应的变成了数字。如上图的503。
setfacl:可以对用户有一个更细的控制权限。作为了解,工作中一般用不到。