-su: /dev /tty:没有这样的设备或地址



可以请有人向我解释为什么会发生这种情况?

# 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

我是Trieng建造一个码头容器,其中有两个服务。这些服务由shell-script:

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 的manpage指出执行命令将没有控制终端。任何写入/dev/tty都会返回enxio错误:

$ errno ENXIO
ENXIO 6 No such device or address

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

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

无需您将符号链接与/dev/tty(/dev/stdout和/dev/stderr足够)或使用 sudo ,如果您使用 user Dockerfile或主管中的指令。

相关内容

  • 没有找到相关文章

最新更新