bash:使用sudo权限打开文件描述符
在我的脚本中,我想打开一个特定的(设备驱动程序)文件作为FD 3. exec 3<
在正常情况下正常工作。bash:使用sudo权限打开文件描述符
但是,设备驱动程序文件只能以root身份读取,所以我正在寻找一种方法来使用sudo以root身份打开FD。
- >如何用sudo权限打开文件(描述符)?
不幸的是我必须保持脚本运行时的文件打开,所以像管道输入或输出这样的技巧不起作用。 另外我不想在sudo权限下运行整个脚本。
如果须藤+ EXEC是根本不可能的,另一种解决方案是,我可以调用程序,在后台像sudo tail -f
- 但这带来另一些问题:
- 如何确定是否程序调用成功
- 如果调用不成功,如何获取错误消息
- 如何在执行结束时“终止”程序。
编辑: 为了澄清我想达到的目标:
- 打开/ dev/tpm0这需要root权限
- 执行与用户权限我的命令
- 密切的/ dev/tpm0
这背后的原因是打开/ dev/tpm0阻止其他命令访问tpm,这在我的s中是至关重要的ituation。
感谢您的帮助
回答:
您可以像下面这样做吗?
# 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
命令失败。
以上是 bash:使用sudo权限打开文件描述符 的全部内容, 来源链接: utcz.com/qa/263739.html