setuid(0)失败原因

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.csdn.net/cymm_liu/article/details/53739321

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值