誰かが私になぜこのようなことが起こるのか説明できますか?-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
私は内部に2つのサービスを持つドッカーコンテナーを構築するためにトライエンです。シェルスクリプトでこれらのサービスstartet:
CMD ["./starter.sh"]
は、私は、問題は、私はサービスのいずれかを実行しようとしているということです/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
にログをリダイレクトしたDockerfile
をWithing次のエラーだ与えないルート(su - someone -c "service"
)、よう:
unable to open log file [/var/log/thelog.log]: [6] No such device or address
は、どのように私はこの問題を解決するだろうか?ログを/dev/*
にリンクし、そのユーザーをroot以外のユーザーとして実行します。また、ユーザーをグループtty
に追加しようとしましたが、うまくいかなかったのです。
ありがとうございました。
デバイスをシンボリックリンクに置き換えることは、非常に脆く、危険なことです。カーネルはttyを操作します。静的なファイル記述子ではありません。そのため、最初にエラーが発生します。 – tripleee
サービスを適切な場所にキャプチャするものにサービスをラップします。とにかく、ほとんどの正常なサービスはコンソールに何も印刷しません。 – tripleee
こんにちは、ありがとう、しかしそうすることは、ドッカーとの共通の練習です。 '/ dev/*'にリダイレクトすると 'docker logs mycontainer'でログを見ることができます。したがって、この問題の要点は 'su - 'であり、プロセスを別の(!= root)ユーザーとして開始することです。 – chevallier