将 suid 添加到二进制文件

将 suid 添加到二进制文件

我的问题是关于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

相关内容