Come ripristinare le autorizzazioni delle cartelle ai loro valori predefiniti in Ubuntu?


19

Di recente ho digitato il comando

sudo chmod 777 -R /

dopo che alcune cose piace

sudo -i

non funzionano normalmente. Quindi mi chiedo se c'è un modo per ripristinare le autorizzazioni della cartella al loro stato originale?


Non penso che Linux ricordi le precedenti impostazioni di autorizzazione. Prova a creare un nuovo file e guarda quali impostazioni di autorizzazione ottiene.
thecoshman,

Oh aspetta, vedo cosa hai fatto lì. Questa è probabilmente una situazione di reinstallazione. Basta eseguire il backup dei dati, prendere nota delle applicazioni installate. Buon divertimento, perché non provare 10.4! (il miglior nome in assoluto tra ... cosa significhi quella cosa radiofonica?)
diavolo

Ti sfido a trovare una persona che non ha fatto esattamente quella cosa: D è una situazione molto complicata. puoi sistemarlo, provare la risposta di jlovi ma ci vorrà tempo e fatica e diventerà frustrante. basta reinstallare e farlo finita. E non usare mai sudo chmod se non sai cosa stai facendo.
Jack Mayerz,

Risposte:


17

È possibile tornare da questa situazione disordinata.

Ho eseguito di nuovo lo stesso tipo di problema (qualche bug in una sceneggiatura che stavo scrivendo) e l'ho risolto, ma è necessario chiedere l'aiuto di un esperto. Sii molto cauto!

Innanzitutto, la mia situazione era più facile da risolvere perché avevo un sistema a doppio avvio (Ubuntu e la mia vecchia installazione di Fedora), ma eseguire il sistema operativo da un CD / DVD o una chiave USB dovrebbe fare la stessa cosa.

MPOINT=/mount/ubuntu

Per prima cosa ho montato i miei file system in questo modo (non dimenticare di creare i punti di montaggio):

mount /dev/ubuntu/root $MPOINT
mount /dev/ubuntu/home $MPOINT/home

Quindi ho eseguito il seguente comando (il mio problema era solo in alcune directory - critiche -) per copiare le autorizzazioni dal sistema in esecuzione a quello disordinato (in effetti, nel mio caso, ho installato un sistema Ubuntu in Virtual Box sotto fedora e ottenuto le autorizzazioni lì):

find /etc /usr /bin /sbin -exec stat --format "chmod %a \"${MPOINT}%n\"" {} \; > /tmp/restoreperms.sh

E poi ho eseguito lo script restoreperms.sh.

Sono stato di nuovo in grado di eseguire l'avvio su Ubuntu.

Il contenuto di restoreperms.sh sarà simile a:

(...)
chmod 755 /mount/ubuntu//etc/ppp
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up
chmod 2750 /mount/ubuntu//etc/ppp/peers
chmod 640 /mount/ubuntu//etc/ppp/peers/provider
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up.d
chmod 777 /mount/ubuntu//etc/ppp/resolv.conf
(...)

Non l'ho provato ma deve funzionare anche per proprietari e gruppi di proprietari. Qualcosa di simile a:

find /etc /usr /bin -exec stat --format 'chown %U:%G ${MPOINT}%n' {} \; > /tmp/restoreperms.sh^

(...)
chown root:root /mount/ubuntu//etc/obex-data-server/imaging_capabilities.xml
chown root:root /mount/ubuntu//etc/obex-data-server/capability.xml
chown root:dip /mount/ubuntu//etc/ppp
chown root:root /mount/ubuntu//etc/ppp/ipv6-up
chown root:dip /mount/ubuntu//etc/ppp/peers
chown root:dip /mount/ubuntu//etc/ppp/peers/provider
chown root:root /mount/ubuntu//etc/ppp/ipv6-up.d
chown root:root /mount/ubuntu//etc/ppp/resolv.conf
(...)

Naturalmente, devi fare attenzione qui, che UID e GID sono uguali su entrambi i sistemi, ma per gli utenti e i gruppi relativi al sistema, questo non dovrebbe essere un problema.

Modificare:

Inoltre, l'impostazione del proprietario annulla i flag SGID e SUID , il che causa strani problemi (ad esempio, non sarai in grado di eseguire sudo se l'autorizzazione non è 4755). È necessario e impostare le autorizzazioni solo DOPO aver impostato i proprietari. SALVA le informazioni complete sull'autorizzazione del file insieme alle informazioni sul proprietario.

RK:

  1. Una cosa importante per questo è mantenere un disco di installazione sincronizzato con la versione che stai usando, o almeno lavorare con l'attuale versione di Ubuntu.
  2. Ora, ho questi comandi in un cronjob, in esecuzione ogni giorno (potrebbero essere settimane) al fine di mantenere tali informazioni. La prossima volta renderà la soluzione più semplice ma, naturalmente, dato che ho questa ora, non accadrà mai più. ;-) Qualcosa come questo:

    0 12 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chmod %a %n" {} \; |/bin/bzip2 -c > /tmp/restore_chmod.$(/bin/date +%w).sh.bz2

    0 13 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chown %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_chown.$(/bin/date +%w).sh.bz2

Il comando giusto (combinato) è più simile a:

`/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {} \; -exec /usr/bin/stat --format="/bin/chown -h %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_fileperms.$(/bin/date +%w).sh.bz2`

Si noti che potrebbe essere necessaria un'attenzione aggiuntiva per tenere conto delle parentesi nei nomi dei file (ad esempio in locale) e che chown potrebbe disinserire silenziosamente i bit setuid e setgid impostati da chmod. In quest'ultimo caso, che potrebbe rompere, diciamo, / bin / su e / usr / bin / sudo, potrebbe essere necessario scambiare l'ordine delle clausole exec sopra.


solo una risposta eccellente . L'ho indicato in Ask Ubuntu
Private

Solo una soluzione perfetta per me!

2

Dopo aver ripristinato sudo o aver selezionato la modalità di ripristino all'avvio

E 'possibile recuperare un intero sistema utilizzando debsums che verifiy integrità e permessi dei file.

dalla pagina man:

apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)

Reinstalla i pacchetti con i file modificati

o limitato a un percorso specifico, ad esempio /usr::

apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/usr ) | cut -d : -f 1 | sort -u)

o limitato a un set multiplo di percorso, ad esempio: /sbin /etc /var

apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/etc -e ^/sbin -e ^/var  ) | cut -d : -f 1 | sort -u)

debsums controlla davvero i permessi? Ho provato chmod a-x /bin/pinge debsums -cnon avrei segnalato quel file.
Reox

0

Guarda sempre quello che corri come sudo.

Questo thread spiega che puoi reimpostare manualmente alcune autorizzazioni, e uno script lì aiuta in questo, ma è comunque un grosso lavoro. Piuttosto segui i suggerimenti sul battistrada per salvare i pacchetti installati (contrassegni) e reinstallare il sistema operativo, quindi applicare i contrassegni dei pacchetti salvati per ripristinare le applicazioni.


0

Per quanto ne so, solo i pacchetti System R e gli RPM offrono un comando per riparare i permessi dei file. Su System V (Solaris) è pkgchk, con RPM è rpm --setperms.

Sfortunatamente, questo comando non sembra esistere per i pacchetti Debian / Ubuntu - ma potrei sbagliarmi qui.

Ma anche con l'aiuto di questi comandi, non è un compito banale riportare il sistema in uno stato sano e, riparandolo, puoi facilmente causare nuovi danni al tuo sistema - se non stai attento.

A parte Giuseppe, non sei il primo e non sarai l'ultimo a inserire un tale comando. Ma l'idea da sola, di cambiare i permessi dei file a 777 su un sistema Unix, è una forte indicazione che non hai molta esperienza con questo tipo di sistema. Il meglio che puoi fare in questa situazione è fare il backup di ciò che ti servirà di nuovo (home directory, file di configurazione, file di posta?) E provare una nuova installazione.

E dovresti stare molto, molto attento, quando ripristini i tuoi file di backup danneggiati.

In bocca al lupo!

PS: Mi sto solo chiedendo che tipo di problema volevi risolvere?


0

Wow, l'hai ucciso. È morto! Prova ad accedere e utilizzare la macchina come root (da quando l'hai abilitata), quindi modifica l'appartenenza al gruppo di root agli utenti. Questo potrebbe funzionare o meno perché non l'ho mai provato prima, ma vale la pena provare.


0

Non è possibile annullare chmodun'operazione; almeno non nel senso di tornare a un'impostazione precedente, che è ciò che richiede questa situazione. Probabilmente, puoi annullare chmodun'operazione, chmodriportando ogni file e directory nella sua modalità originale - ma non sono tutti uguali; determinare le modalità originali è complicato (come discusso nelle altre risposte).

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.