【发布时间】:2017-12-18 13:31:36
【问题描述】:
在我的脚本中,我想打开一个特定的(设备驱动程序)文件作为 FD 3。
exec 3< 在正常情况下可以正常工作。
但是设备驱动文件只能以 root 身份读取,所以我正在寻找一种使用 sudo 以 root 身份打开 FD 的方法。
-> 如何使用 sudo 权限打开文件(描述符)?
不幸的是,我必须在脚本运行时保持文件打开,因此管道输入或输出等技巧不起作用。 另外我不想在 sudo 权限下运行整个脚本。
如果 sudo + exec 根本不可能,另一种解决方案是我可以在后台调用一个程序,例如 sudo tail -f ——但这会带来另一组问题:
- 如何判断程序调用是否成功
- 如果调用不成功,如何获取错误消息
- 如何在执行结束时“杀死”程序。
编辑: 澄清我想要实现的目标:
- 打开需要root权限的/dev/tpm0
- 以用户权限执行我的命令
- 关闭/dev/tpm0
这背后的原因是打开 /dev/tpm0 会阻止其他命令访问 tpm,这在我的情况下很关键。
感谢您的帮助
【问题讨论】:
-
如果您向我们展示一些演示您要解决的问题的代码,这将更容易回答。
-
好的,我想要实现的是: * 打开 /dev/tpm0 需要 root 权限 * 使用用户权限执行我的脚本需要做的任何事情 * 关闭 /dev/tpm0 这背后的原因是我必须在脚本运行时阻止对 /dev/tpm0 的访问。 /dev/tpm0 是一个阻塞字符设备。
-
为什么只能以root身份打开fd?
-
该文件归用户 root 和组 root 所有,权限为 0600。更改权限可能是另一种选择,但实际上不是首选。