gpt4 book ai didi

linux - -苏:/dev/tty: No such device or address

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:27 30 4
gpt4 key购买 nike

有人可以向我解释为什么会这样吗?

# su - someone -s /bin/bash -c "ls -la /dev/tty"
crw-rw-rw- 1 nobody nogroup 5, 0 Dec 7 20:53 /dev/tty
# BUT:
# su - someone -s /bin/bash -c "echo hello > /dev/tty"
-su: /dev/tty: No such device or address

我正在尝试构建一个内部有两个服务的 docker 容器。这些服务由 Shell 脚本启动:

CMD ["./starter.sh"]

使用 Dockerfile 我已将日志重定向到 /dev/stderr/dev/tty

# None of the following works:
RUN ln -sf /dev/tty /var/log/thelog.log
RUN ln -sf /dev/stdout /var/log/thelog.log
RUN ln -sf /dev/stderr /var/log/thelog.log

问题是我正在尝试以非 root 身份运行其中一项服务 (su -
someone -c "service"
),它给出了以下错误:

unable to open log file [/var/log/thelog.log]: [6] No such device or address

我该如何解决这个问题?我希望将日志链接到 /dev/* 并希望以非根用户身份运行用户。我还尝试将用户添加到组 tty,但没有成功。

谢谢。

最佳答案

su 的联机帮助页声明执行的命令将没有控制终端。对/dev/tty 的任何写入都将返回 ENXIO 错误:

$ errno ENXIO
ENXIO 6 No such device or address

sudo 确实分配了一个控制终端:

sudo -u someone /bin/bash -c "echo hello > /dev/tty"

如果您使用 USER<,您无需创建到/dev/tty 的符号链接(symbolic link)(/dev/stdout 和/dev/stderr 就足够了)或使用 sudo/strong> Dockerfile 中的指令或 supervisor .

关于linux - -苏:/dev/tty: No such device or address,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47713652/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com