众所周知,Linux的文件权限如: 777;666等,其实只要在相应的文件上加上UID的权限,就可以用到加权限人的身份去运行这个文件。所以我们只需要将bash复制出来到另一个处所,然后用root加上UID权限,只要用户运行此Shell就可以用用root的身份来执行任何文件了
一个文件都有一个所有者, 暗示该文件是谁建设的. 同时, 该文件尚有一个组编号, 暗示该文件所属的组, 一般为文件所有者所属的组.
假如是一个可执行文件, 那么在执行时, 一般该文件只拥有挪用该文件的用户具有的权限. 而setuid, setgid 可以来改变这种配置.
setuid: 配置使文件在执行阶段具有文件所有者的权限. 典范的文件是 /usr/bin/passwd. 假如一般用户执行该文件, 则在执行进程中, 该文件可以得到root权限, 从而可以变动用户的暗码.
setgid: 该权限只对目次有效. 目次被配置该位后, 任何用户在此目次下建设的文件都具有和该目次所属的组沟通的组.
sticky bit: 该位可以领略为防删除位. 一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限. 假如没有写权限, 则这个目次下的所有文件都不能被删除, 同时也不能添加新的文件. 假如但愿用户可以或许添加文件但同时不能删除文件, 则可以对文件利用sticky bit位. 配置该位后, 就算用户对目次具有写权限, 也不能删除该文件.
下面说一下如何操纵这些符号:
操纵这些符号与操纵文件权限的呼吁是一样的, 都是 chmod. 有两种要领来操纵,
1) chmod u+s temp -- 为temp文件加上setuid符号. (setuid 只对文件有效)
chmod g+s tempdir -- 为tempdir目次加上setgid符号 (setgid 只对目次有效)
chmod o+t temp -- 为temp文件加上sticky符号 (sticky只对文件有效)
2) 回收八进制方法. 对一般文件通过三组八进制数字来置符号, 如 666, 777, 644等. 假如配置这些非凡符号, 则在这组数字之外外加一组八进制数字. 如 4666, 2777等. 这一组八进制数字三位的意义如下,
abc
a - setuid位, 假如该位为1, 则暗示配置setuid
b - setgid位, 假如该位为1, 则暗示配置setgid
c - sticky位, 假如该位为1, 则暗示配置sticky
配置完这些符号后, 可以用 ls -l 来查察. 假如有这些符号, 则会在本来的执行符号位置上显示. 如
rwsrw-r-- 暗示有setuid符号
rwxrwsrw- 暗示有setgid符号
rwxrw-rwt 暗示有sticky符号
那么本来的执行符号x到那边去了呢? 系统是这样划定的, 假如原来在该位上有x, 则这些非凡符号显示为小写字母 (s, s, t). 不然, 显示为大写字母 (S, S, T)