我正在尝试使用链接、bash 脚本和 SUID 提供对某些功能的有限访问权限。SUID 脚本无法以 root 访问权限运行

我正在尝试使用链接、bash 脚本和 SUID 提供对某些功能的有限访问权限。SUID 脚本无法以 root 访问权限运行

编辑:这个启用粘滞位脚本无法写入根文件似乎存在类似的问题

编辑:如何在 shell 脚本上使用 SetUID 以非 root 用户身份运行?也非常相似。

我有一个脚本,我们称之为 read.sh。我有一个文件,我们称之为 secret。

# cd /home/normie
# echo "some stuff" > secret
# echo "#!/bin/bash" > read.sh
# echo "cat secret" >> read.sh
# chmod 600 secret
# chmod 4755 read.sh
# su normie
$ ./read.sh
<<Error about not having access to secret>>

我是不是漏掉了什么?我以为 SUID 位让脚本以所有者身份运行?当我运行以下命令时

# echo "touch newfile" > sumfile.sh
# chmod 4755 sumfile.sh
# su normie
$ ./sumfile.sh
$ ls -alh
<<newfile shows as owned by root>>

这是怎么回事?我该如何让它按我想要的方式工作?我想要的方式是,我希望普通用户能够以完全 root 访问权限执行特定脚本。(我认为这就是 suid 位所做的)

答案1

安装 sudoapt install sudo

将相关用户归入某个群组groupadd group && usermod -g group user

将以下内容添加到 /etc/sudoers%group (ALL)=(root:root) NOPASSWD:/path/to/script.sh

为 .bashrc 添加别名alias ALIAS='sudo /path/to/script.sh'" >> ~user/.bashrc

组内的所有成员现在都可以以 root 身份运行相关脚本。

答案无耻地窃取自如何在 shell 脚本上使用 SetUID 以非 root 用户身份运行?(用户9517)

相关内容