Proxmox 5.2-11でUbuntu 16.04コンテナを実行しています。最新のパッチを適用した後 1 コンソールまたはssh経由でログインできません。
ハイパーバイザーにコンテナールートFS=をマウントし、_pts/0
_を_/etc/security/access.conf
_に追加し(_pam_access
_を実行)、コンソールへのルートログインを許可しました。 _root : lxc/tty0 lxc/tty1 lxc/tty2
_が_access.conf
_にあるので十分だと思ったので、なぜ_pts/0
_が必要なのかがわかりません。
私はsshが実行されていないことに気付いたので、手動で開始しようとしました(_/usr/sbin/sshd -DDD -f /etc/ssh/sshd_config
_)とこのエラーを受け取りました:
_Missing privilege separation directory: /var/run/sshd
_
手作業でディレクトリを作成し、ssh
を起動して、ようやくログインできましたが、再起動後も問題が解決しません。ディレクトリは作成されていません。 journalctl
の有用なビットだけがあり、興味深い部分は「操作は許可されていません」に関するものだけですが、それ以上の情報はありません。
16.04についてはあまり詳しくないので、問題の詳細を知りたいのですが。 _/var/log/syslog
_がない、または_/var/log/messages
_のみ_kern.log
_を使用しているため、迷子になります。
_systemd-sysv 229-4ubuntu21.9
libpam-systemd 229-4ubuntu21.9
libsystemd0 229-4ubuntu21.9
systemd 229-4ubuntu21.9
udev 229-4ubuntu21.9
libudev1 229-4ubuntu21.9
iproute2 4.3.0-1ubuntu3.16.04.4
libsasl2-modules-db 2.1.26.dfsg1-14ubuntu0.1
libsasl2-2 2.1.26.dfsg1-14ubuntu0.1
ldap-utils 2.4.42dfsg-2ubuntu3.4
libldap-2.4-2 2.4.42dfsg-2ubuntu3.4
libsasl2-modules 2.1.26.dfsg1-14ubuntu0.1
libgs9-common 9.25dfsg1-0ubuntu0.16.04.3
ghostscript 9.25dfsg1-0ubuntu0.16.04.3
libgs9 9.25dfsg1-0ubuntu0.16.04.3
_
[2]
_Nov 27 10:13:48 Host16 systemd[1]: Starting OpenBSD Secure Shell server...
Nov 27 10:13:48 Host16 sshd[474]: Missing privilege separation directory: /var/run/sshd
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Control process exited, code=exited status=255
Nov 27 10:13:48 Host16 systemd[1]: Failed to start OpenBSD Secure Shell server.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Unit entered failed state.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Failed with result 'exit-code'.
Nov 27 10:13:48 Host16 mysqld_safe[495]: Starting mysqld daemon with databases from /var/lib/mysql/mysql
Nov 27 10:13:48 Host16 mysqld[500]: 181127 10:13:48 [Note] /usr/sbin/mysqld (mysqld 10.0.36-MariaDB-0ubuntu0.16.04.1) starting as process 499 ...
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Service hold-off time over, scheduling restart.
Nov 27 10:13:48 Host16 systemd[1]: Stopped OpenBSD Secure Shell server.
Nov 27 10:13:48 Host16 systemd[1]: Failed to reset devices.list on /system.slice/ssh.service: Operation not permitted
Nov 27 10:13:48 Host16 systemd[1]: Starting OpenBSD Secure Shell server...
Nov 27 10:13:48 Host16 sshd[502]: Missing privilege separation directory: /var/run/sshd
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Control process exited, code=exited status=255
Nov 27 10:13:48 Host16 systemd[1]: Failed to start OpenBSD Secure Shell server.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Unit entered failed state.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Failed with result 'exit-code'.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Service hold-off time over, scheduling restart.
Nov 27 10:13:48 Host16 systemd[1]: Stopped OpenBSD Secure Shell server.
Nov 27 10:13:48 Host16 systemd[1]: Failed to reset devices.list on /system.slice/ssh.service: Operation not permitted
Nov 27 10:13:48 Host16 systemd[1]: Starting OpenBSD Secure Shell server...
Nov 27 10:13:48 Host16 sshd[503]: Missing privilege separation directory: /var/run/sshd
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Control process exited, code=exited status=255
Nov 27 10:13:48 Host16 systemd[1]: Failed to start OpenBSD Secure Shell server.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Unit entered failed state.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Failed with result 'exit-code'.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Service hold-off time over, scheduling restart.
Nov 27 10:13:48 Host16 systemd[1]: Stopped OpenBSD Secure Shell server.
Nov 27 10:13:48 Host16 systemd[1]: Failed to reset devices.list on /system.slice/ssh.service: Operation not permitted
Nov 27 10:13:48 Host16 systemd[1]: Starting OpenBSD Secure Shell server...
Nov 27 10:13:48 Host16 sshd[504]: Missing privilege separation directory: /var/run/sshd
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Control process exited, code=exited status=255
Nov 27 10:13:48 Host16 systemd[1]: Failed to start OpenBSD Secure Shell server.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Unit entered failed state.
Nov 27 10:13:48 Host16 systemd[1]: ssh.service: Failed with result 'exit-code'.
Nov 27 10:13:49 Host16 systemd[1]: ssh.service: Service hold-off time over, scheduling restart.
Nov 27 10:13:49 Host16 systemd[1]: Stopped OpenBSD Secure Shell server.
Nov 27 10:13:49 Host16 systemd[1]: ssh.service: Start request repeated too quickly.
Nov 27 10:13:49 Host16 systemd[1]: Failed to start OpenBSD Secure Shell server.
Nov 27 10:13:49 Host16 systemd[1]: ssh.service: Unit entered failed state.
Nov 27 10:13:49 Host16 systemd[1]: ssh.service: Failed with result 'start-limit-hit'.
Nov 27 10:13:49 Host16 systemd[1]: Started /etc/rc.local Compatibility.
Nov 27 10:13:49 Host16 systemd[1]: Failed to reset devices.list on /system.slice/plymouth-quit.service: Operation not permitted
Nov 27 10:13:49 Host16 systemd[1]: Starting Terminate Plymouth Boot Screen...
Nov 27 10:13:49 Host16 systemd[1]: Failed to reset devices.list on /system.slice/plymouth-quit-wait.service: Operation not permitted
Nov 27 10:13:49 Host16 systemd[1]: Starting Hold until boot process finishes up...
Nov 27 10:13:49 Host16 systemd[1]: Failed to reset devices.list on /system.slice/rc-local.service: Operation not permitted
Nov 27 10:13:49 Host16 systemd[1]: Started Hold until boot process finishes up.
Nov 27 10:13:49 Host16 systemd[1]: Started Container Getty on /dev/pts/1.
Nov 27 10:13:49 Host16 systemd[1]: Started Container Getty on /dev/pts/0.
Nov 27 10:13:49 Host16 systemd[1]: Failed to reset devices.list on /system.slice/console-getty.service: Operation not permitted
Nov 27 10:13:49 Host16 systemd[1]: Started Console Getty.
Nov 27 10:13:49 Host16 systemd[1]: Reached target Login Prompts.
Nov 27 10:13:49 Host16 systemd[1]: Started Terminate Plymouth Boot Screen.
Nov 27 10:13:52 Host16 nslcd[338]: accepting connections
Nov 27 10:13:52 Host16 nslcd[275]: ...done.
Nov 27 10:13:52 Host16 systemd[1]: Started LSB: LDAP connection daemon.
Nov 27 10:13:52 Host16 systemd[1]: Failed to reset devices.list on /system.slice/cron.service: Operation not permitted
Nov 27 10:13:52 Host16 systemd[1]: Started Regular background program processing daemon.
Nov 27 10:13:52 Host16 systemd[1]: Failed to reset devices.list on /system.slice/atd.service: Operation not permitted
_
追加_systemd-tmpfiles --create
_出力
私が長年systemdで経験したのと同じくらい多くの問題について、私はこの問題が代わりにAnsible synchronizeディレクティブから生じたことを認めなければなりません。
なんらかの理由で、このホストをansbileスクリプトでプロビジョニングした後、rootではなく、管理ユーザーが所有する/ディレクトリ(および/ etc、/ optなど)を残しました。 chown
を実行して問題を修正した後、/var/run/sshd
がブート時に再び作成されるようになりました。
私はすべての入力に本当に感謝していますが、少なくともルートディレクトリに不適切な所有権を適用すると、未定義のシステム動作が発生するという意味では、ここにバグはありません。
あなたがした1つの間違いは、sshd
を手動で開始しようとしたことです。
代わりに公式からsshd
を起動した場合は、正常に機能するはずです。 service
コマンドは、ディストリビューションでサービスを開始する正しい方法を認識しており、これは機能するはずです。
service ssh start
Sysv initスクリプトの場合、それがあなたがする必要があるすべてです。ディレクトリがない理由は、/var/run
が/run
へのシンボリックリンクであり、/run
がtmpfs
マウントポイントであるためです。つまり、起動するたびに/var/run
は空で始まります。 service
コマンドを使用する場合、/etc/init.d/ssh
スクリプトを使用してsshd
を開始しますが、実行する前に、スクリプトは/var/run/sshd
を作成します(存在しない場合)。
systemd
では、動作が少し異なります。次の内容の/usr/lib/tmpfiles.d/sshd.conf
というファイルがあります。
d /var/run/sshd 0755 root root
これにより、起動時に/var/run/sshd
ディレクトリが作成されます。ファイルが存在し、内容が正しいことを確認するために必要なもの。 /var/run/sshd
ディレクトリがまだ見つからない場合は、systemd-tmpfiles --create
を手動で実行したときに作成されたかどうかを確認できます。
したがって、/ run(およびそれにシンボリックリンクされた/ var/run)は、再起動するたびに再作成されます。 systemd-tmpfilesが(/ var)/ run/sshdを含む一部のファイルに対してそれを行っていないことを除いて。
どうやら、これはOpenVZカーネルのアップグレードによって修正されています。しかし、実際に修正するには、次のように編集します/usr/lib/tmpfiles.d/sshd.conf
と削除/var
行からd /var/run/sshd 0755 root root
代わりに読む:d /run/sshd 0755 root root
以上です..!
そして、openssh-serverがアップグレードされるとき、彼らがこのバグを修正することを望みます(またはそれは本当にsystemdのバグかopenvzですか?)-そうでなければ、同じ問題に遭遇する可能性があります。
どうやらこれは、OpenVZカーネル2.6.32-042stab134.7以降を実行しているときに解決されます。どういうわけかsystemdの起動スクリプトで修正が不可能であるのは不思議です。おそらく、起動後に/ run/sshd /を自動的に作成し、次にsshdを起動するような醜いハックが機能します。
私のsystemd-tmpfiles --create
の出力:
[/usr/lib/tmpfiles.d/var.conf:14] Duplicate line for path "/var/log", ignoring.
fchownat() of /run/named failed: Invalid argument
Failed to openat(/dev/simfs): Operation not permitted
Failed to validate path /var/run/screen: Too many levels of symbolic links
Failed to validate path /var/run/sshd: Too many levels of symbolic links
Failed to validate path /var/run/Sudo: Too many levels of symbolic links
Failed to validate path /var/run/Sudo/ts: Too many levels of symbolic links
fchownat() of /run/systemd/netif failed: Invalid argument
fchownat() of /run/systemd/netif/links failed: Invalid argument
fchownat() of /run/systemd/netif/leases failed: Invalid argument
fchownat() of /run/log/journal failed: Invalid argument
fchownat() of /run/log/journal/e9e1d08bc42c48999865b96c250f40cc failed: Invalid argument
fchownat() of /run/log/journal/e9e1d08bc42c48999865b96c250f40cc/system.journal failed: Invalid argument
OpenVZ 2.6.32-042stab134.7の変更ログには次のように書かれています:
Systemd 229-4ubuntu21.9でUbuntuコンテナーを実行すると、systemd-tmpfilesがシンボリックリンクの問題によりパスを検証できなかったため、サービスの開始に失敗する可能性があります。 (PSBM-90038)