在我的脚本中,我想打开一个特定的(设备驱动程序)文件作为FD 3。
exec 3<
在常规情况下可以正常使用。
但是设备驱动程序文件只能以root身份读取,因此我正在寻找一种使用sudo以root身份打开FD的方法。
- &GT;如何使用sudo权限打开文件(描述符)?
不幸的是,我必须为脚本的运行时保持文件打开,因此管道输入或输出等技巧不起作用。 另外,我不想在sudo权限下运行整个脚本。
如果根本不可能使用sudo + exec,另一种解决方案是我可以在sudo tail -f
这样的背景中调用程序 - 但这会带来另一组问题:
编辑: 澄清我想要实现的目标:
这背后的原因是打开/ dev / tpm0阻止其他命令访问tpm,这在我的情况下是至关重要的。
感谢您的帮助
答案 0 :(得分:0)
你能做一下这样的事吗?
# open the file with root privileges for reading
exec 3< <(sudo cat /dev/tpm0)
# read three characters from open file descriptor
read -n3 somechars <&3
# read a line from the open file descriptor
read line <&3
# close the file descriptor
exec 3<&-
为了检测失败的打开,您可以执行以下操作:
exec 3< <(sudo cat /dev/tpm0 || echo FAILEDCODE)
然后当你第一次阅读fd 3时,看看你是否得到了FAILCODE。或者你可以这样做:
rm -f /tmp/itfailed
exec 3< <(sudo cat /dev/tpm0 || touch /tmp/itfailed)
然后检查/tmp/itfailed
;如果存在,则sudo
命令失败。