这可能是个愚蠢的问题,但我没有正确理解EUID和UID。
真实ID和有效ID的描述很清楚,我懂了。根据我在Google和电子书中找到的信息,在使用su、sudo或SUID时,有效ID应该改变。此外,据我所知,在Bash中,UID应该包含真实ID,而EUID应该包含有效ID。
我的假设是,当我使用su、sudo或SUID时,EUID和UID应该是不同的,但每次我尝试echo $EUID和echo $UID时,两者的结果都相同。
另外,我尝试了id -u和id -r -u,它们始终是相同的。
有人能向我解释一下,在什么情况下以及何时确切地EUID和UID是不同的吗?
真实ID和有效ID的描述很清楚,我懂了。根据我在Google和电子书中找到的信息,在使用su、sudo或SUID时,有效ID应该改变。此外,据我所知,在Bash中,UID应该包含真实ID,而EUID应该包含有效ID。
我的假设是,当我使用su、sudo或SUID时,EUID和UID应该是不同的,但每次我尝试echo $EUID和echo $UID时,两者的结果都相同。
另外,我尝试了id -u和id -r -u,它们始终是相同的。
有人能向我解释一下,在什么情况下以及何时确切地EUID和UID是不同的吗?
sudo
和su
都设置了setuid位,因此它们都以euid=0和uid=youruser启动。但是,在运行命令之前,它们会将uid和euid都设置为目标用户,因此您无法使用它们。解决方法是创建一个支持(非标准)EUID / UID变量且不会或可以被设置为不会出于安全原因而降低权限的shell的suid副本。这可以是ksh
,zsh
或bash -p
。 - that other guy