GNU/Linux >> Linux Esercitazione >  >> Linux

Perché mi manca /var/run/sshd dopo ogni avvio?

Soluzione 1:

Un errore che hai fatto è stato provare ad avviare sshd a mano.

Se invece avvii sshd attraverso mezzi ufficiali dovrebbe funzionare. Il service command sa qual è il modo corretto per avviare un servizio sulla tua distribuzione, e questo dovrebbe funzionare:

service ssh start

In caso di script sysv init, è tutto ciò che devi fare. Il motivo per cui manca la directory è /var/run è un collegamento simbolico a /run e /run è un tmpfs punto di montaggio. Ciò significa che ad ogni avvio /var/run partirà vuoto. Quando usi service comanda il /etc/init.d/ssh script verrà utilizzato per avviare sshd ma prima di farlo lo script creerà /var/run/sshd se non esiste.

Con systemd le cose funzionano in modo un po' diverso. Ci sarà un file chiamato /usr/lib/tmpfiles.d/sshd.conf con questo contenuto:

d /var/run/sshd 0755 root root

Durante l'avvio questo dovrebbe causare il /var/run/sshd directory da creare. Cosa serve per verificare che il file esista e abbia il contenuto corretto. Se /var/run/sshd directory è ancora mancante, puoi verificare se viene creata quando esegui systemd-tmpfiles --create manualmente.

Soluzione 2:

Quindi /run (e /var/run collegato simbolicamente ad esso) viene ricreato ad ogni riavvio. Solo che systemd-tmpfiles non lo fa per alcuni file tra cui (/var)/run/sshd.

Apparentemente, questo è stato risolto da un aggiornamento del kernel OpenVZ. Ma per risolverlo effettivamente ora devi modificare /usr/lib/tmpfiles.d/sshd.conf e rimuovi /var dalla riga d /var/run/sshd 0755 root root da leggere invece: d /run/sshd 0755 root root

E questo è tutto..!

E quando openssh-server viene aggiornato, speriamo che abbiano corretto questo bug (o è davvero un bug in systemd? o openvz??) -- altrimenti potresti incorrere nello stesso problema.

Soluzione 3:

Apparentemente questo viene risolto quando si esegue un kernel OpenVZ 2.6.32-042stab134.7 o successivo. Trovo strano che non ci sia alcuna soluzione possibile negli script di avvio di systemd in qualche modo. Probabilmente un brutto hack come la creazione automatica di /run/sshd/ dopo l'avvio e poi l'avvio di sshd funzionerebbe.

L'output del mio 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

Il registro delle modifiche di OpenVZ 2.6.32-042stab134.7 dice questo:

L'esecuzione di contenitori Ubuntu con systemd 229-4ubuntu21.9 potrebbe causare il mancato avvio dei servizi perché systemd-tmpfiles non è stato in grado di convalidare il percorso a causa di problemi di collegamento simbolico. (PSBM-90038)

Soluzione 4:

Per tutti i problemi che ho avuto con systemd nel corso degli anni, devo ammettere che questo problema deriva invece dalla sincronizzazione di Ansible direttiva.

Per qualche motivo, dopo aver fornito a questo host i nostri script ansbile, ha lasciato la directory / (così come /etc, /opt e altri) di proprietà di un utente amministratore e non di root. Dopo aver eseguito chown per correggere le cose, /var/run/sshd viene ora creato di nuovo all'avvio.

Apprezzo davvero tutti gli input, ma qui non c'è alcun bug, almeno nel senso che l'applicazione di una proprietà inappropriata alle directory root ha causato un comportamento di sistema indefinito.


Linux
  1. Debian – Forza E2fsck su /var ad ogni avvio?

  2. Perché questo ciclo di ritardo inizia a funzionare più velocemente dopo diverse iterazioni senza sospensione?

  3. NGINX:connect() a unix:/var/run/php7.0-fpm.sock non riuscito (2:nessun file o directory simile)

  4. Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

  5. Ridimensionamento della partizione di avvio

Perché mettere cose diverse da /home in una partizione separata?

Perché le directory /home, /usr, /var, ecc. hanno tutte lo stesso numero di inode (2)?

Perché sono necessari < o > per usare /dev/tcp

I siti web dovrebbero vivere in /var/ o /usr/ in base all'utilizzo consigliato?

Crea una directory sotto /var/run all'avvio

I log di sistema sono vuoti (/var/log/messages; /var/log/secure; ecc.)