setuid(0)失败原因

本文介绍如何在Linux中遇到run_as_root权限失败的问题,特别关注nosuid权限设置导致的执行受限。通过编辑fstab配置文件,理解nosuid的作用,以及如何解除和重置权限以确保程序在特定环境下运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.c++实现一个run_as_root的linux程序,在个别机器上出现执行失败,无权限的错误。

该程序所属权是root,所属组也是root,并且使用chmod u+s run_as_root添加了强制位特殊权限(即其他用户也可以执行,类似passwd命令),但是在个别机器上无权限,最后查明是这些机器进行了安全加固,在分区下设置了nosuid权限。

设nosuid权限方法如下:

    编辑配置文件/etc/fstab ,找到要设置的分区(如/home)所对应的设置行:
vi /etc/fstab
LABEL=/home       /home     ext3        defaults          1     2
在设置“defaults”后,添加“nosuid”选项,并重新挂载/home分区:
vi /etc/fstab
LABEL=/home       /home     ext3        defaults,nosuid              1     2
mount -o remount /home
设置后,分区/home上任何可执行文件即使被设置了SetUID权限也无法执行(读者可自行拷贝一个SetUID命令至/home目录下执行试验),在一些存放数据、用来备份等功能的分区上做此设置,可以保护系统安全。

去掉上述权限,则编辑该文件,删除nosuid字段,然后执行重新挂载命令mount -o remount /home就可以了


参考链接:https://blog.youkuaiyun.com/cymm_liu/article/details/53739321

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值