我正在开发一个代表用户管理网络接口的应用程序,它会调用几个需要root进行更改的外部程序(例如ifconfig).(具体来说,更改本地接口的IP地址等)在开发过程中,我一直以root(ugh)运行IDE,以root身份运行调试器(double-ugh).最终用户是否有一种很好的方式在非root帐户下运行它们?我非常不喜欢GTK,wxPython,Python和我的应用程序在以root身份运行时所呈现的攻击面的大小.
我已经研究了功能,但它们看起来很不完整,我不确定我是否能够在Python中使用它们,特别是如果它们是基于线程的.我没有探索过的唯一选择是一个守护进程,它具有setuid位设置并代表UI完成所有根类型的东西.我对在项目早期引入这种复杂性犹豫不决,因为以root身份运行并不是用户的破解者.
尽管它引入了复杂性,但您对该守护进程的想法有很多优点.只要操作不需要以root身份进行某些用户界面交互,守护程序就允许您控制允许和禁止的操作.
但是,您可以使用SUDO在ROOT和普通用户之间创建受控制的折衷方案......只需向相关用户授予SUDO访问权限,以获取他们所需的特定工具.通过仅允许"允许"的根启动来减少攻击面.