GNU/Linux >> Belajar Linux >  >> Linux

Mengapa saya melewatkan /var/run/sshd setelah setiap boot?

Solusi 1:

Satu kesalahan yang Anda lakukan adalah mencoba memulai sshd dengan tangan.

Jika Anda malah memulai sshd melalui cara resmi itu seharusnya bekerja. service perintah tahu apa cara yang benar untuk memulai layanan pada distribusi Anda, dan ini seharusnya berhasil:

service ssh start

Dalam kasus skrip init sysv, hanya itu yang perlu Anda lakukan. Alasan hilangnya direktori adalah /var/run adalah symlink ke /run dan /run adalah tmpfs titik pemasangan. Artinya pada setiap boot /var/run akan mulai kosong. Saat Anda menggunakan service perintah /etc/init.d/ssh skrip akan digunakan untuk memulai sshd tetapi sebelum melakukan itu skrip akan membuat /var/run/sshd jika tidak ada.

Dengan systemd hal-hal bekerja sedikit berbeda. Akan ada file bernama /usr/lib/tmpfiles.d/sshd.conf dengan konten ini:

d /var/run/sshd 0755 root root

Selama boot ini akan menyebabkan /var/run/sshd direktori yang akan dibuat. Apa yang Anda butuhkan untuk memverifikasi bahwa file tersebut ada dan memiliki konten yang benar. Jika /var/run/sshd direktori masih hilang, Anda dapat memverifikasi apakah itu dibuat saat Anda menjalankan systemd-tmpfiles --create secara manual.

Solusi 2:

Jadi /run (dan /var/run disinkronkan dengannya) dibuat ulang setiap reboot. Kecuali bahwa file systemd-tmp tidak melakukan itu untuk beberapa file termasuk (/var)/run/sshd.

Rupanya, ini diperbaiki dengan pemutakhiran kernel OpenVZ. Tetapi untuk benar-benar memperbaikinya sekarang Anda mengedit /usr/lib/tmpfiles.d/sshd.conf dan hapus /var dari baris d /var/run/sshd 0755 root root untuk membaca sebagai gantinya: d /run/sshd 0755 root root

Dan itu dia..!

Dan ketika openssh-server ditingkatkan, kami berharap mereka akan memperbaiki bug ini (atau apakah itu benar-benar bug di systemd? atau openvz??) -- jika tidak, Anda dapat mengalami masalah yang sama.

Solusi 3:

Tampaknya ini teratasi saat menjalankan kernel OpenVZ 2.6.32-042stab134.7 atau yang lebih baru. Saya merasa aneh bahwa tidak ada perbaikan yang mungkin dilakukan dalam skrip start systemd. Mungkin peretasan yang jelek seperti membuat /run/sshd/ secara otomatis setelah memulai dan kemudian memulai sshd akan berhasil.

Output dari systemd-tmpfiles --create saya :

[/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

Log perubahan OpenVZ 2.6.32-042stab134.7 mengatakan ini:

Menjalankan wadah Ubuntu dengan systemd 229-4ubuntu21.9 dapat menyebabkan layanan gagal dimulai karena systemd-tmpfiles tidak dapat memvalidasi jalur karena masalah penautan symlink. (PSBM-90038)

Solusi 4:

Untuk masalah sebanyak yang saya alami dengan systemd selama bertahun-tahun, saya harus mengakui bahwa masalah ini berasal dari sinkronisasi yang memungkinkan pengarahan.

Untuk beberapa alasan, setelah menyediakan host ini dengan skrip ansbile kami, ia meninggalkan direktori / (serta /etc, /opt dan lainnya) yang dimiliki oleh pengguna admin, dan bukan root. Setelah menjalankan chown untuk mengoreksi, /var/run/sshd sekarang dibuat saat boot lagi.

Saya sangat menghargai semua masukan tetapi tidak ada bug di sini, setidaknya dalam arti bahwa menerapkan kepemilikan yang tidak tepat ke direktori root menyebabkan perilaku sistem yang tidak terdefinisi.


Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Perbaiki ::Kesalahan SSH:Memulai sshd:Direktori pemisahan hak istimewa yang hilang:/var/empty/sshd

  3. Mengapa delay-loop ini mulai berjalan lebih cepat setelah beberapa iterasi tanpa tidur?

  1. NGINX:connect() ke unix:/var/run/php7.0-fpm.sock gagal (2:Tidak ada file atau direktori seperti itu)

  2. Kapan saya harus menggunakan /dev/shm/ dan kapan saya harus menggunakan /tmp/?

  3. Mengubah ukuran partisi boot

  1. Mengapa partisi boot ext2 100MB direkomendasikan untuk linux?

  2. Bagaimana saya bisa menjalankan perintah setelah boot?

  3. Bagaimana saya mengakses Postgres ketika saya mendapatkan kesalahan tentang /var/run/postgresql/.s.PGSQL.5432?