GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso ripristinare un chmod nella directory etc?

Una cosa è andata storta:l'uso di sudo con quel comando. Il -R switch dice a chmod per impostare in modo ricorsivo i permessi a quella directory, che è, in ogni caso, un'azione sconsigliata (dovremmo chiamarla:eresia) se non sai cosa stai facendo (una volta che è successo a me, non l'ho fatto emetti il ​​comando ma una GUI difettosa lo ha fatto e il mio sistema è andato in tilt).

Erano solo i permessi dei file. Allora perché l'intero sistema sembra completamente esploso?

GNU/Linux è molto sensibile ai permessi dei file, poiché è stato costruito con stabilità e sicurezza in mente. Lo stesso vale per la maggior parte dei programmi eseguiti in GNU/Linux (ad esempio apache2 elimina i privilegi di root e utilizza www-data , o utente simile, e il tuo 700 il permesso non gli permetterebbe di leggere/scrivere i propri file).

Perché adesso nessuna password di accesso funziona?

Come hai già accennato, le password di accesso sono memorizzate in un file in /etc/passwd e solo root (presumo che tu non l'abbia cambiato) può leggerlo, ma il prompt di login (o login GUI) utilizza un account senza privilegi, quindi non può leggere il file.

Ma in che modo la modifica delle autorizzazioni ha messo a repentaglio tutto?

Come detto sopra, Linux è molto sensibile ai permessi dei file. Alcuni programmi controllano anche i permessi dei loro file di configurazione e se non sono previsti non funzioneranno affatto.

Come posso riportare la mia directory etc allo stato precedente?

Se usi una distribuzione basata su RPM, puoi farlo usando rpm --setperms comando, sarebbe doloroso ripristinare uno per uno i pacchetti, su un sistema simile a Debian apt-get --reinstall install È tuo amico. Potrebbero essere disponibili altre soluzioni, ma richiederebbero un sistema funzionante.


Vediamo, quello che hai fatto è impostare i permessi nell'intera directory /etc come lettura/scrittura/esecuzione consentiti solo per il proprietario del file/dir, negati per tutti gli altri. Se sei confuso dai permessi dei file, puoi leggere di più su Wikipedia:Permessi UNIX tradizionali.

Il motivo per cui hai fatto saltare in aria il tuo sistema è perché molti processi non possono più leggere le loro impostazioni, non essendo in grado di accedere a /etc. Non sarà facile ripristinare l'intera directory /etc al suo stato precedente. Come farlo dipenderà dalla tua distribuzione, ma fondamentalmente significa reinstallare ogni pacchetto che contiene qualsiasi file all'interno di /etc.

Come rapido cerotto per poter utilizzare il sistema, al fine di ripararlo correttamente (reinstallando tutti i pacchetti con contenuti all'interno di /etc, come indicato sopra), potresti fare:

    # sudo find /etc -type d -exec chmod 775 '{}' \;
    # sudo find /etc -type f -exec chmod 664 '{}' \;

Con queste due righe imposterai i permessi liberali in tutta la directory /etc, con la lettura/scrittura consentita per il proprietario e il gruppo e la lettura consentita per tutti gli altri. Il motivo dei due chmod è impostare il bit di esecuzione solo su dirs. Alcuni processi si lamenteranno o falliranno anche così, incluso qualsiasi eseguibile all'interno di /etc, ma dovresti essere in grado di eseguire la reinstallazione che ho descritto sopra.

Tieni presente che fino a quando non recuperi le autorizzazioni originali il tuo sistema sarà, come minimo, in uno stato non sicuro.


Linux
  1. Come viene aggiornato /etc/motd?

  2. CentOS / RHEL:come recuperare dal file /etc/passwd cancellato

  3. comando grpck – Rimuove le voci danneggiate o duplicate nei file /etc/group e /etc/gshadow.

  4. Come posso impostare il completamento automatico per i comandi Git?

  5. /etc/passwd mostra l'utente in un gruppo, ma /etc/group no

Il modo giusto per modificare i file /etc/passwd e /etc/group in Linux

“sudo:/etc/sudoers is world scrivibile” – Come correggere i permessi del file sudoers

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions

Come verificare la sintassi del file /etc/ssh/sshd_config

Come includere tutti i file da una directory nello script di shell (/etc/init.d/iptables in questo caso)

Come configurare /etc/issues per mostrare l'indirizzo IP per eth0