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