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?
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?
Risposte:
È 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:
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.
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)
chmod a-x /bin/ping
e debsums -c
non avrei segnalato quel file.
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.
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?
Non è possibile annullare chmod
un'operazione; almeno non nel senso di tornare a un'impostazione precedente, che è ciò che richiede questa situazione. Probabilmente, puoi annullare chmod
un'operazione, chmod
riportando ogni file e directory nella sua modalità originale - ma non sono tutti uguali; determinare le modalità originali è complicato (come discusso nelle altre risposte).