【发布时间】:2017-06-16 15:53:32
【问题描述】:
我正在配置一个基于 BATMAN 的网格可视化平台,该平台称为 ALFRED(我猜这个双关语是制造商有意的!),在此过程中,需要以 root 用户身份执行几个命令。我可以使用sudo 轻松运行大多数命令,但是当我使用cat 命令时,sudo 似乎没有所需的权限。
例如,为了让 ALFRED 服务器运行,我执行
$ sudo alfred -i br0 -m
它可以正常运行并执行命令。但是当我想使用 ALFRED 写入 UNIX 套接字时,我执行以下命令打算将主机名写入套接字 64
$ sudo cat /etc/hostname | alfred -s 64
我得到了错误
can't connect to unix socket: Permission denied
但是当我通过su root手动切换到root用户并运行时
cat /etc/hostname | alfred -s 64
命令正确执行,没有给出错误,当我退出 root 用户并以普通用户返回时,我可以通过调用来读取套接字
$ sudo alfred -r 64
这很奇怪。为了让它变得更奇怪,我在一个 shell 脚本中编写了cat /etc/hostname | alfred -s 64 命令并将其命名为alfred_start.sh。现在我可以轻松运行了
$ sudo sh alfred_start.sh
并且没有给出错误。
我找到了解决整个问题的方法,但问题仍然存在,为什么?
是否有与root 相关的不同权限无法通过sudo 访问?
我不相信 BATMAN 或 ALFRED 与整个问题有任何关系,它可能与写入 UNIX 套接字相关的权限有关。我非常感谢您在此问题上的任何帮助。
【问题讨论】:
-
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地点。
-
记下了。谢谢。
标签: linux bash shell sockets unix