诺亚方舟

沉淀

特殊文件权限位set_uid

众所周知的,Linux文件系统的权限组分为三组,属主,同组,其他人,实际上属主也有两种定义之分:有效用户和实际用户。实际用户是指文件的实际属主,而有效用户是指执行这个文件的账号,比方说,一个可执行程序属主是admin,但是用root身份来跑这个程序时,这时候文件的有效用户是root,实际用户是admin。内核检查一个进程是否有权限访问某个文件时,是用进程的有效用户来进行判断的。

特殊权限位set_uid是指,当有此权限的可执行程序,运行时会把属主id赋值为有效id,也就是说有此权限的可执行程序,用admin用户也可以以root身份运行root程序,例如su命令的原理。授权命令为chmod u/t/o + s xxx,此权限位仅对可执行程序有用。当然,并不是随随便便就可以给文件授这个权(要不系统多危险。。),只有以下两种情况能成功:

1、如果进程具有root权限(即文件实际用户为root),则将实际用户id,有效用户id设置为uid;

2、如果进程不具有root权限,但uid等于实际用户id,则将有效用户id设置为uid,不改变实际用户id。

应用实例:iotop命令赋set_uid权限位,这样所有账号都可以使用。

具体例子参考文章:深入理解SetUID

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>