可以请别人向我解释为什么会这样?
# 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 Container。这些服务是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/*
并希望以非root用户身份运行用户。此外,我尝试将用户添加到组tty
,但没有成功。
感谢。
答案 0 :(得分:3)
su 的联构帮助页指出执行的命令将没有控制终端。对/ 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 Dockerfile中的strong> USER 指令或supervisor。