当 $EUID 与 $UID 不同时,如何产生这种情况?

How can I produce a situation when $EUID is different than $UID?

这可能是一个愚蠢的问题,但我没有正确理解 EUIDUID
真实身份证件和有效身份证件描述清楚,我明白了。根据我在 Google 和电子书中发现的内容,当使用 susudoSUID 时,有效 ID 应该会发生变化。此外,据我了解,Bash 中的 UID 应包含真实 ID,而 EUID 应包含有效 ID。

我的假设是 EUIDUID 在我使用 susudoSUID 时应该不同,但每当我尝试 echo $EUIDecho $UID 两者的结果是一样的。
另外,我尝试了 id -uid -r -u 并且它们总是相同的。

有人可以向我解释一下 $EUID$UID 究竟在什么时候和什么情况下不同吗?

默认情况下 bash 放弃权限。有一个特殊的特权模式set -p.

# copy bash executable
$ sudo cp /usr/bin/bash ./bash
# set the suid mode
$ chmod +s ./bash
$ ls -l bash
-rwsr-sr-x 1 root root 903504 05-29 23:48 ./bash*
# run it
$ ./bash -p -c 'echo $UID $EUID'
1000 0