Come posso ripristinare un chmod nella directory etc?


9

Ho accidentalmente eseguito il seguente comando nella directory etc:

sudo chmod -R 700 /etc

So di aver fatto qualcosa di molto sbagliato. Il mio terminale ora stampa:

I have no name!@ubuntu: /$

Come posso ripristinare la mia directory etc al suo stato precedente?

Ho provato a cambiare i permessi ma adesso non ci riesco. Inoltre, sarebbe molto utile se qualcuno potesse spiegare cosa effettivamente è andato storto quando ho eseguito quel comando su ecc. Erano solo i permessi dei file. Allora perché l'intero sistema sembra completamente fatto saltare in aria? Perché ora nessuna password di accesso funziona? So che c'è un file nella directory etc che ha a che fare con gli utenti. Ma in che modo il cambiamento delle autorizzazioni ha messo a rischio tutto? Alcuni dettagli tecnici su questo sarebbero molto utili.


3
È necessario un elenco di directory ( ls -laR) da un altro sistema in esecuzione. Quale versione è tua? È possibile modificare le directory su 755 ee i file su 644, ma alcuni devono avere modalità diverse (come / etc / shadow ad esempio).
ott--

4
Quando digiti sudodovresti rileggerlo nella tua mente come "Mi sto concedendo il massimo potere sul mio sistema senza rete di sicurezza, sono sicuro di sapere cosa sto facendo? Sono sicuro di aver digitato ciò che intendevo?" prima di premere Invio.
msw,

1
Con un sistema funzionante, è possibile utilizzare find /etc -type d ! -perm 755 -exec ls -ld {} \;e find etc -type f ! -perm -644 -exec ls -l {} \;trovare directory e file con modalità non standard. In Debian sono solo 2 directory e 39 file
ott--

"Ma in che modo il cambiamento delle autorizzazioni ha messo a rischio tutto?" - alcune cose che dovevano leggere quei file ora non hanno il permesso di leggere quei file.
user253751

Risposte:


15

Una cosa è andata storta: l'uso di sudoquel comando. Lo -Rswitch dice chmoddi impostare in modo ricorsivo le autorizzazioni per quella directory, che è, in ogni caso, un'azione non raccomandata (dovremmo chiamarla: eresia) se non sai cosa stai facendo (una volta che mi è successo, io non ha emesso il comando ma è stata eseguita una GUI difettosa e il mio sistema è andato via cavo).

Erano solo i permessi dei file. Allora perché l'intero sistema sembra completamente fatto saltare in aria?

GNU / Linux è molto sensibile alle autorizzazioni dei file, poiché è stato creato pensando alla stabilità e alla sicurezza . Lo stesso vale per la maggior parte dei programmi eseguiti in GNU / Linux (ad esempio, apache2elimina i privilegi e gli usi di root www-datao utenti simili e la tua 700autorizzazione non gli consentirebbe di leggere / scrivere i propri file).

Perché ora nessuna password di accesso funziona?

Come già accennato, le password di accesso sono archiviate in un file /etc/passwde solo root (presumo non l'abbia modificato) può leggerlo, ma il prompt di accesso (o accesso alla GUI) utilizza un account senza privilegi, quindi non può leggere il file.

Ma in che modo il cambiamento delle autorizzazioni ha messo a rischio tutto?

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

Come posso ripristinare la mia directory etc al suo stato precedente?

Se usi una distro basata su RPM, questo può essere fatto usando il rpm --setpermscomando, sarebbe dolorosamente ripristinare uno per uno i pacchetti, su un sistema simile a Debian apt-get --reinstall installè tuo amico. Altre soluzioni potrebbero essere disponibili, ma avrebbero bisogno di un sistema funzionante per esso.


5

Vediamo, quello che hai fatto è impostare le autorizzazioni nell'intera directory / etc come read / write / execute consentite solo per il proprietario del file / dir, negato per tutti gli altri. Se sei confuso dalle autorizzazioni dei file, puoi leggere di più su Wikipedia: Autorizzazioni UNIX tradizionali .

Il motivo per cui hai fatto saltare in aria il tuo sistema è perché molti processi non sono più in grado di leggere le loro impostazioni, non essendo in grado di accedere a / etc. Non sarà facile ripristinare l'intero dir / 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 aiuto rapido alla banda per poter usare il sistema, al fine di risolverlo 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 le autorizzazioni liberali in tutte le directory / etc, con lettura / scrittura consentite per il proprietario e il gruppo e lettura consentita per tutti gli altri. Il motivo dei due chmod è impostare il bit di esecuzione solo su dirs. Alcuni processi si lamentano o falliscono anche in questo caso, incluso qualsiasi eseguibile all'interno di / etc, ma dovresti essere in grado di fare la reinstallazione che ho descritto sopra.

Si noti che fino a quando non si ripristinano le autorizzazioni originali il sistema sarà almeno in uno stato non sicuro.


2
Inoltre, alcuni programmi non funzioneranno; SSH, ad esempio, richiede autorizzazioni restrittive su determinati file. /etc/sudoersè un altro.
Mel Boyce,

1
Ma alcuni file /etcnon devono mai essere resi leggibili dal mondo! Ripristina dai backup, ecco perché li hai (o, ecco perché le persone ti hanno invitato a fare i backup).
tripla il

0

700 ha rimosso l'accesso a molti file per gruppi e utenti del mondo (ad esempio, i file ora dispongono di rwx------autorizzazioni). Ad esempio, tutti gli utenti devono essere in grado di leggere /etc/passwd. Con la tua configurazione, ora solo root può leggere /etc/passwd. Molte cose si rompono se si rompono le autorizzazioni sui file in /etc/modi imprevedibili.

Potresti provare a ricostruire le autorizzazioni (supponendo che tu possa ancora passare al root) in base a un server funzionante, ma è soggetto a errori.

Suggerisco di ripristinare /etc/dal backup se ne hai uno (assicurandoti che il ripristino ripristini le autorizzazioni o, se la tua soluzione di backup lo supporta, ripristina solo le autorizzazioni).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.