我的问题是关于suid
!其背后的逻辑是当用户执行特权命令时授予 root 权限。例如passwd
有这样的功能。
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54224 Aug 21 2017 /usr/bin/passwd
我编写了一段打开zsh
.因此,我手动添加suid
到我的可执行文件中。
$ chmod u+s myzs
$ ls -l myzs
-rwsr-xr-x 1 mahmood mahmood 7360 Jul 6 21:34 myzs
但是,当我运行二进制文件时,外壳会为当前用户(我)而不是根用户打开。我的二进制文件和 passwd 有什么区别?两者都有suid。
$ ./myzs
% whoami
mahmood
答案1
从man chmod
4000 (the set-user-ID-on-execution bit) Executable files with this bit set
will run with effective uid set to the uid of the file owner.
因此,您需要将文件的所有者设置为您希望二进制文件运行的用户,例如通过运行
sudo chown root myzs