需要挂载我的单个 Ubuntu 16.04 分区并启用挂载“suid”选项

需要挂载我的单个 Ubuntu 16.04 分区并启用挂载“suid”选项

我在单个分区上运行 ubuntu 16.04 LTS 系统(即整个系统驻留在/dev/sda1我的硬盘分区上)。它在启动时会自动挂载(当然),mount 显示它已使用以下选项挂载:

/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)

我的问题是,我为本地系统编写了一个小工具(使用 C++),并将其放在/usr/local/sbin我需要的目录中,以便它以 root 身份运行,从而正确完成其任务。我已设置了它的 setuid 位,但它仍然无法按照我的需要以 root 身份运行。我进行了一些搜索,发现如果分区未使用 mountsuid选项挂载,即使应用程序设置了 suid 位,它也不会以 root 身份运行。我查看了文件中分区的条目,/etc/fstab以查看它具有哪些挂载选项,并找到了以下条目:

UUID=04c08145-f454-4562-8212-3e7726b97d34 /               ext4    errors=remount-ro 0       1

有人能告诉我需要在这个条目中更改什么以便这个系统分区在启用挂载suid选项的情况下挂载吗?

答案1

您推断不使用“suid”选项进行挂载是不正确的。这实际上是默认设置,除非您指定“nosuid”来否定它(请参阅http://manpages.ubuntu.com/manpages/xenial/man8/mount.8.html

我们也可以大致知道它运行良好,因为许多系统工具都使用 setuid,如果没有 setuid 运行,甚至 ping!su 和 sudo 也无法运行。

最有可能的是,您的 setuid 以某种方式设置错误,我的第一个猜测是您的二进制文件不属于 root。“ls -la /usr/local/sbin/BINARY”的输出将有助于了解二进制文件的当前状态。您可以将输出与正确设置了 setuid 的 sudo 进行比较:

$ ls -lad /usr/bin/sudo
-rwsr-xr-x 1 root root 140944 Jan 14 07:41 /usr/bin/sudo

最后,无论您在何种上下文中执行应用程序,AppArmor 配置文件都可能禁止使用此 setuid 二进制文件。

相关内容