在linux中每个进程有三个[实际上有第4个]用户标识符.
real uid : 真实用户ID.
saved uid : 已保存用户ID
effective uid : 有效用户ID
真实用户ID(real uid)是login时的用户.而在运行过程中,用于所有的安全检查的是有效用户ID(effective uid).
用户态软件访问root文件方法:
1、setuid(0) || seteuid(0) ||
2、chown root:root ${exe}
3、chmod 4111 ${exe} #改变有效id和已保存id
gtk3+ 不能使用setuid的方法,因为setuid的时候gtk会初始化动态加载模块,大概50万行,这是一个安全漏洞,所以gtk禁用setuid,setgid。gtk程序想使用root权限可以尝试使用一个root的后台程序或者用gksu的方法启动时输入root密码
现在有一个普通用户operation,我想让他有权限重启nginx服务,但是不允许他操作其他的系统服务及程序,从网上找到了很多解决方法,都是基于sudoer的配置的
operation ALL=(ALL) NOPASSWD: /etc/init.d/nginx restart
格式如下:
USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD:COMMAND_FLAG
另外建议使用
visudo
命令进行编辑,不要直接修改
/etc/sudoers
。如命令格式不对、使用visudo编辑时保存退出会提示错误的
参考文章:http://blog.chinaunix.net/uid-20722281-id-160009.html
http://www.gtk.org/setuid.html