sudo 原理
linux中有两个重要的进程权限id:
reaal user id(ruid):执行进程者的 user id,一般情况下就是用户登录时的 user id
effective user id(euid):决定进程是否对某个文件有操作权限,默认为ruid
决定某个进程是否拥有某个文件的使用权限的,是euid,比如某文件需要root才能操作,那么euid得是0才行
sudo的原理就是利用了特殊权限s来达到修改euid的效果
如果一个文件拥有x权限,表示这个文件可以被执行。shell执行命令或程序的时候,先fork一个进程,再通过exec函数族执行这个命令或程序,这样的话,执行这个文件的进程的ruid和euid就是当前登入shell的用户id。
当这个文件拥有x权限和s权限时,在shell进行fork后调动exec函数族执行这个文件的时候,这个进程的euid将被系统更改为这个文件的拥有者id。
评论已关闭