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

回到顶部