我目前正在开发一个需要多个操作的root权限的应用程序(例如删除系统日志文件等)。一种解决方案是实现一个特权助手工具,该工具将由launchd自动启动。这样,每次执行此类操作时(或每次需要安装帮助程序时),用户都必须输入管理员密码。
现在我想知道是否可以创建一个安装程序包,它将以root权限安装应用程序,这样用户只需输入一次管理员凭据(在安装过程中),每次启动应用程序时都会启动它具有root权限(不提示管理员凭据)。
有没有办法实现这个目标?
答案 0 :(得分:1)
在Unix系统上执行此操作的常用方法是使用setuid。基本上,您将程序的所有者更改为root
,并在执行时设置"设置用户或组ID"位(s
):
$ chown root:root myprogram
$ chmod u+s myprogram
每当用户执行您的程序时,它将以root身份运行。
但请注意,提示管理员凭据的理由非常充分。
使用这种机制(或者通常做你正在尝试做的事情)很容易导致非常危险的安全漏洞,例如权限提升。您使用setuid
的任何可执行文件都应该由熟悉该过程的人员进行全面审核,否则攻击者将 root用于安装程序的所有计算机。