一个巨大的应用程序需要在某个特定时间对需要 root 权限的文件执行少量写入。它不是真正的文件,而是作为文件暴露给 Linux 的硬件接口。
为了避免为整个应用程序授予 root 权限,我编写了一个 bash 脚本来执行关键任务。例如,以下脚本将启用硬件接口的端口 17 作为输出:
echo "17" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio17/direction
Run Code Online (Sandbox Code Playgroud)
但是,由于suid
我系统上的 bash 脚本被禁用,我想知道实现这一目标的最佳方法是什么。
使用此处介绍的一些解决方法
sudo
从主应用程序调用脚本,并相应地编辑 sudoers 列表,以避免在调用脚本时需要密码。授予 sudo 权限让我有点不舒服echo
。
只需编写一个 C 程序,使用fprintf
,并将其设置为 suid root。对字符串和文件名进行硬编码,并确保只有 root 可以编辑它。或者从文本文件中读取字符串,同样确保没有人可以编辑该文件。
我没有想到的其他一些解决方案比上面介绍的更安全或更简单?