Come ripristinare il comando chown?


17

Se corro:

sudo chown -R user:user /

Posso ripristinare ciò che era prima di eseguirlo?


1
Proprio come un avvertimento per gli altri: il seguente comando sudo chown -R user:user ..potrebbe avere lo stesso effetto di quello menzionato qui se ci si trova ad un livello inferiore alla radice del file system. Non tentare qualcosa di simile.
passerby51,

Risposte:


22

In breve: no.

Dovrai ripristinare da un backup. (Alcuni strumenti di backup potrebbero avere opzioni per ripristinare solo le autorizzazioni, altri possono elencare i file di backup con le loro autorizzazioni e puoi usarli per riparare il tuo sistema.)

Se non si dispone di un backup, è necessario correggere tutto manualmente.


Dopo sudo chown -R user:user /, è probabile che il sistema sia così gravemente nascosto che non è possibile ripristinare da un backup.
Keith Thompson,

1
Se non riesci a recuperare le parti importanti dei tuoi dati utente in questo scenario dal tuo backup, il tuo "backup" non è davvero uno. Se non riesci a ripristinare l'intero sistema operativo, dovresti comunque essere in grado di reinstallare la base e quindi ripristinare dal backup. Molto probabilmente avrà bisogno di un CD live o di un avvio di rete in questo caso, ma se la tua strategia di backup non può recuperare da questo, non è abbastanza buona.
Mat,

Il mio precedente commento probabilmente non era chiaro. Un sistema funzionante può essere ripristinato usando il sistema stesso. Una volta eseguita la chowndescrizione, è probabile che non sarai in grado di fare nulla prima di installare l'intero sistema da zero; il sistema non ha nemmeno un rootaccount e sudonon funzionerà. Probabilmente vale la pena provare ad avviare una shell per singolo utente, ma non aspettarti che funzioni.
Keith Thompson,

1
L'account di root non è andato (è ancora UID 0); semplicemente non possiede più alcun file, ma root ignora comunque i normali controlli delle autorizzazioni. Se sudoo anche sucontinuerà a funzionare quando tutti i suoi file rilevanti sono di proprietà userè una questione diversa (probabilmente non perché tra le altre cose il bit SUID sull'exe sparirà).
jw013,

6

Solo se conosci la proprietà dell'utente e del gruppo di ogni file e directory nella tua /directory.

Anche allora, hai già bloccato la proprietà dei file di sistema critici che devono essere di proprietà di root, incluso il sudocomando. Probabilmente avresti bisogno di montare il disco rigido su un altro sistema e tieni presente che l'altro sistema probabilmente non avrà gli stessi UID e mappature GID di quello che hai appena bloccato.

Se possibile, copia dell'intero disco rigido, quindi reinstalla il sistema operativo. Una volta fatto, puoi provare a copiare i file sul sistema appena cancellato e ripristinarne le proprietà. Probabilmente puoi presumere (anche se non in modo affidabile al 100%) che tutto ciò che /home/fooè sotto è di proprietà dell'utente fooe che ogni file di spool di posta sotto /var/mailsia di proprietà dell'utente appropriato (se hai e-mail sul sistema). Probabilmente puoi andare via senza ripristinare la maggior parte dei file che non sono sotto /home, a seconda di ciò che hai fatto con il sistema.

E poi inizia a coltivare l'abitudine di ricontrollare qualsiasi comando esegui sudo prima di colpire Enter.


6

Se la distribuzione è basata su RPM, è possibile ripristinare SOLO i file installati dai pacchetti rpm.

Per ripristinare tutte le autorizzazioni del pacchetto:

rpm --setperms -a

Per ripristinare tutto il proprietario del pacchetto (utente / gruppo):

rpm --setugids -a

Se -a non viene eseguito, è possibile eseguire un ciclo bash:

Per le autorizzazioni:

for x in $(rpm -qa); do rpm --setperms $x; done

Per il proprietario:

for x in $(rpm -qa); do rpm --setugids $x; done

Estratto da: http://www.sysadmit.com/2016/10/linux-restaurar-permisos-de-un-paquete.html


1

È possibile memorizzare le versioni correnti e quindi analizzarle per ripristinarle utilizzando l'opzione -v.

chown -R nobody:nobody -v /tmp/some_file > /tmp/chown.log
cat /tmp/chown.log

I contenuti sarebbero:

changed ownership of `/tmp/some_file' from me:users to nobody:nobody

Utilizzando il tuo linguaggio di scripting preferito e le espressioni regolari, puoi eseguire il doloroso processo di ripristinarli (se necessario).

Consiglio vivamente di non fare un abito ricorsivo su / mentre esponerai / etc / shadow o qualsiasi altro file importante.


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.