当 $EUID 与 $UID 不同时,如何产生这种情况?
How can I produce a situation when $EUID is different than $UID?
这可能是一个愚蠢的问题,但我没有正确理解 EUID
和 UID
。
真实身份证件和有效身份证件描述清楚,我明白了。根据我在 Google 和电子书中发现的内容,当使用 su
、sudo
或 SUID
时,有效 ID 应该会发生变化。此外,据我了解,Bash 中的 UID
应包含真实 ID,而 EUID
应包含有效 ID。
我的假设是 EUID
和 UID
在我使用 su
、sudo
或 SUID
时应该不同,但每当我尝试 echo $EUID
和 echo $UID
两者的结果是一样的。
另外,我尝试了 id -u
和 id -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
这可能是一个愚蠢的问题,但我没有正确理解 EUID
和 UID
。
真实身份证件和有效身份证件描述清楚,我明白了。根据我在 Google 和电子书中发现的内容,当使用 su
、sudo
或 SUID
时,有效 ID 应该会发生变化。此外,据我了解,Bash 中的 UID
应包含真实 ID,而 EUID
应包含有效 ID。
我的假设是 EUID
和 UID
在我使用 su
、sudo
或 SUID
时应该不同,但每当我尝试 echo $EUID
和 echo $UID
两者的结果是一样的。
另外,我尝试了 id -u
和 id -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