我正在编写一个小型实用程序。我希望它可以尝试sudo
在需要时运行某些程序。
那就是:如果文件许可不允许当前用户对特定文件进行操作(sudo
规则会允许它),我希望我的实用程序以sudo
文件所有者的身份运行某些文件。
我希望事先检查一下此功能,因为我希望系统日志不会充满sudo
尝试失败带来的噪音。由于sudo
自身故障时的报道:“这件事会报”。
因此,我希望以编程方式检查:可以通过?user <x>
运行。command <y>
sudo
问题在于:尽管/etc/sudoers
包含该映射,但它是根目录拥有的,普通用户无法读取。
我正在考虑产生一个要运行的子进程sudo -l
(该子进程输出当前用户可以sudo运行的命令)。然后,我将解析此输出。但是,这似乎有些脆弱。输出包含我想要的信息,但它似乎是供人类阅读的(而不是供程序使用)。我不知道是否可以保证将来输出的格式相同或跨平台使用。
以编程方式解析sudo -l
输出是否安全?如果没有,是否有更好的选择来提前确定sudo命令是否成功?
(X / Y上的背景:此实用程序供受限访问角色帐户使用。我希望其他一些用户有效地选择加入,以允许受限访问帐户通过sudo规则对其文件进行操作。但是,我赢了无法提前知道其他哪些用户已设置了相关的sudo规则)
3
我建议您采取略有不同的方法。与其制定每个用户的规则,不如让一个允许其执行您想要做的事情的组。这样,您可以简单地检查用户是否在组中。那会是一个体面的选择吗?
—
terdon