初步理解suid与sgid

如果一个文件设置了suid,那某个用户执行该文件时就拥有拉该文件拥有者  的权限,如果一个文件设置了sgid,那某个用户执行该文件时就拥有了该文件拥有者组的权限

for example:su 这个可执行文件,就设置拉suid?(不知是否设置了sgid),而它的拥有者是root,那么它执行时就已root权限来进行

所以unix有个理论解释,"real user id"登录过程中建立的ID,"effective user ID"在执行suid  与sgid文件时所建立的

例如用户李捷以账户A登录,那么他的"real user id "就是A,当他执行su这个shell命令时,它的"effective ID"就是root

如果一个文件设置了suid,那么它权限位的第4位就是s

如果一个文件设置了sgid,那么它权限位的第7位就是s

您可以到/bin目录下,看有哪些设置suid的文件,命令是ls -l | grep '^...s'

看有哪些设置sgid和suid的文件,命令是ls -l | grep '^...s..s'

设置一个文件为suid,在权限位前加4 命令是chmod 4654(4权限位) xxx(文件名)

设置一个文件为sgid,在权限位前加2 命令是chmod 2654(2权限位) xxx(文件名)

设置一个文件为sgid与suid,在权限位前加6 命令是chmod 6654(6权限位) xxx(文件名)

在查找设置了s u i d的文件时,没准会看到具有这样权限的文件:rwS r-x r- x,其中S为大写。 它表示相应的执行权限位并未被设置,这是一种没有什么用处的s u i d设置,可以忽略它的存在。

还可以使用符号方式来设置s u i d / g u i d。如果某个文件具有这样的权限: rwx r-x r- x,那么 可以这样设置其s u i d: chmod u+s 于是该文件的权限将变为: rws r-x r-x

你可能感兴趣的:(Shell)