创建新文件描述符的用户权限

创建新文件描述符的用户权限

CentOS 8我有一个猛击使用非标准文件描述符/dev/fd/5)并且需要由标准用户(不是root)执行。

当用户执行脚本时,它会收到

tee: /dev/fd/5: Permission denied

引发此错误的代码片段如下:

# Print message both to stdout and FD5
msg() {
    msg="$1"
    echo "$msg" | tee /dev/fd/5
}

我应该给予用户什么样的权限以允许其创建和使用新的文件描述符?

答案1

您无法授予程序写入/proc文件系统的只读部分的权限。

看一下你使用的路径/dev/fd/5。请注意,/dev/fd实际上是一个符号链接/proc/self/fd。这意味着这些描述符引用每个程序自己的打开文件。

当你要求tee写入时/dev/fd/5,无法写入,因为/proc/self/fd/5不存在。它不存在,因为tee没有打开它。而且内核不允许将其创建为常规文件。

如果文件描述符是由脚本打开的,那么您应该直接将输出发送到那里。

echo "$msg" >&5

如果文件描述符是不是根据剧本的开头,你需要重新思考你所做的事情的方法。

相关内容