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