root用户的umask值默认是0022,普通用户的umask值默认是 0002。umask值是可以手动修改的。
SUID的作用:SUID是set uid的简称,它出现在文件所属主权限的执行位上面,标志为 s 。当设置了SUID后,UMSK第一位为4。我们知道,我们账户的密码文件存放在/etc/shadow中,而/etc/shadow的权限为 ----------。也就是说:只有root用户可以对该目录进行操作,而其他用户连查看的权限都没有。当普通用户要修改自己的密码的时候,可以使用passwd这个指令。passwd这个指令在/bin/passwd下,当我们执行这个命令后,就可以修改/etc/shadow下的密码了。那么为什么我们可以通过passwd这个指令去修改一个我们没有权限的文件呢?这里就用到了suid,suid的作用是让执行该命令的用户以该命令拥有者即root的权限去执行,意思是当普通用户执行passwd时会拥有root的权限,这样就可以修改/etc/passwd这个文件了。命令: chmod u+s 文件名
使用suid需要满足的几个条件
SUID只对可执行文件有效
调用者对该文件有执行权
在执行过程中,调用者会暂时获得该文件的所有者权限
该权限只在程序执行的过程中有效
SGID的作用:SGID是set gid的简称,它出现在文件所属组权限的执行位上面,标志位 s 。它用当设置了SGID后,UMSK第一位为2 。它作用于目录,当用户 a 对某一目录有rwx 权限时,该用户就可以在该目录下建立文件,新建文件的所属主和所属组继承于 a。当另一个用户 b 也对该目录有rwx权限的时候,就可以修改 a 创建的文件,而且修改后的文件所属主和所属组都会变成 b!但是如果该目录用SGID修饰,则所有拥有 rwx权限的用户在这个目录下建立的文件都是属于这个目录所属的组。当其他用户修改时,有三种情况:
当两个用户都是属于group组内,则修改后的文件的所属主和所属组都不会,而且修改文件时不会提示read only!可以正常修改
当两个用户都是属于other时,则修改后的文件的所属组不变,所属主会变成另一个用户,修改文件时会提示read only,必须强制保存退出
当一个用户是group组,一个是other时,则修改后的文件的所属组不变,所属主会变成另一个用户,修改文件时会提示read only,必须强制保存退出
SUID可以让调用者以文件拥有者的身份运行该文件,所以我们利用SUID提权的思路就是运行root用户所拥有的SUID的文件,那么我们运行该文件的时候就得获得root用户的身份了。
#以下命令将尝试查找具有root权限的SUID的文件,不同系统适用于不同的命令,一个一个试
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} \;
网友评论