Come risolvere sudo dopo "chmod -R 777 / usr / bin"?


15

Sono entrato chmod -R 777 /usr/bine ora sudo non funziona.

Dice sudo must be setuid root.

Alcuni consigli online dicono di funzionare chown root:root /usr/bin/sudo chmod 4755 /usr/bin/sudo.

Entrando chown root:root /usr/bin/sudomostra un opened in readonly modeerrore.


1
Devi essere root per eseguire questi comandi

Manoj Kumar: Ha il pkexecmetodo nella mia risposta (che hai contrassegnato come accettato) a risolvere questo problema per voi? Mi sono convinto che, come hanno commentato Damien Roche e Oli, questo metodo in realtà non funziona dopo che un sudo chmod -R 777 /usr/bincomando è stato completato con successo. Ad esempio sudo, pkexecdeve essere impostato come root per funzionare. (Non sono sicuro del perché, poiché utilizza il servizio Polkit , ma lo fa.) Tuttavia, penso di aver sentito altre persone dire che ha funzionato per loro, il che è curioso! Avevi premuto Ctrl + C prima che il 777comando chmod fosse terminato?
Eliah Kagan,

Ciao. Questo metodo ha funzionato per me dopo che l'ho eseguito per errore sudo chmod -R 777 /usr/bin, ma solo dopo aver effettuato l'accesso rootall'account.
iHowell,

Risposte:


10

Nonostante lo stato accettato, ora sono convinto che questa risposta sia sbagliata . (Spero di migliorarlo presto, dopo aver consultato l'OP sull'accettazione.) Penso di ricordare ad altri che hanno funzionato, ma credo che i loro problemi fossero almeno leggermente diversi. Il metodo qui descritto rimane prezioso per alcune situazioni in cui chmod -R 777 /usr/binviene interrotto con Ctrl+ Co altrimenti non completo. Ma una volta che lo fa, pkexecè anche non impostato e non funzionerà meglio disudo , come hanno giustamente commentato Damien Roche e Oli.

Su un sistema desktop Ubuntu, PolicyKit è installato, quindi pkexecpuò essere utilizzato per riparare un sudofile eseguibile o un sudoersfile rotto . Non è necessario avviare la modalità di ripristino e non è necessario eseguire l'avvio da un CD live. Non è nemmeno necessario riavviare.

In questo caso, eseguire i seguenti comandi:

pkexec chown root:root /usr/bin/sudo
pkexec chmod 4755 /usr/bin/sudo

Vedi questa domanda per maggiori informazioni.


9
pkexec must be setuid root! Che incubo!
Damien Roche,

1
Come sottolinea Damien, il problema con questo approccio è pkexecesattamente nella stessa situazione sudo. Normalmente è setuid e vive dentro /usr/bin. L'ho provato e questo dopo non funziona più chmod -R 777 /usr/bin.
Oli

@DamienRoche, Oli: mi dispiace di non aver risolto in questo modo prima! Hai ragione entrambi. Non sono sicuro del perché pkexecdebba essere setuid root per funzionare (non funziona attraverso il demone polkit come altri processi non setuid?), Ma ne ha bisogno. Ho commentato la domanda per vedere se l'OP (che l'ha accettato) può far luce su ciò che, se non altro, è giusto o utile su questa risposta. E ho aggiunto un banner temporaneo nella parte superiore di questo post in modo da non fuorviare ulteriormente. Se questa risposta continua a esistere, la sua forma migliorata incorporerà probabilmente alcune informazioni attualmente in quel banner.
Eliah Kagan,

Potresti semplicemente usare su, che si trova sotto / bin
FliiFe l'

@FliiFe La correzione delle autorizzazioni (o della proprietà) dei file /usr/binrichiede i privilegi di root, ma non è possibile sueseguire il root sulla maggior parte dei sistemi Ubuntu perché gli accessi root sono disabilitati per impostazione predefinita. A differenza di sudoe pkexec, quando si utilizza super ottenere una shell root o per eseguire un comando come root, è necessario fornire la password di root, non la propria. Ma root non ha una password di default in Ubuntu (il che significa che l'autenticazione basata su password per root fallirà sempre, non che l'immissione di una password vuota funzionerebbe). Vedi RootSudo per i dettagli.
Eliah Kagan,

4

Anche quando si esegue dal CD / Pendrive live, è necessario aggiungere il prefisso al chmodcomando sudo. Quindi i tuoi passaggi saranno i seguenti:

  1. avvio da un CD / Pendrive live
  2. controlla se il tuo disco è già stato montato automaticamente (e dove). Altrimenti, montalo (vedi sotto)
  3. utilizzare sudo chmod 0755 <path>per regolare le autorizzazioni

Come capire dove è montato il tuo disco: da una finestra terminale, esegui mount(senza argomenti). Questo elencherà tutti i dispositivi montati. Controlla l' typeelenco - puoi saltare tutto senza usare un "file system reale" (il tuo disco probabilmente usa ext3 o ext4 - puoi sicuramente saltare cose come proc, sysfs e simili). Se qualcosa sembra promettente (simile a /dev/sda1 on /media/sda1 type ext3), controlla il suo contenuto usando ls /media/sda1per vedere se è quello.

Se non è installato, è possibile controllare le /devvoci in cui il disco potrebbe essere (usando ls /dev/ |grep '/dev/sdper controllare i dispositivi disponibili; il disco dovrebbe essere simile /dev/sdaX, /dev/sdbXo simili - con X è un numero). Confronta questo con l'elenco dei dispositivi montati. Se non è lì, prova a montarlo e controlla il suo contenuto (come mostrato sopra). Per montarlo, crea prima un mountpoint, ad esempio sudo mkdir /mnt/mydisk, quindi prova a montare il dispositivo utilizzando mount /dev/sda1 /mnt/mydiske controlla il suo contenuto utilizzando ls /mnt/mydisk.

Una volta che il disco proprio lì, si può andare a cambiare i permessi sulla vostra dir usr: sudo chmod 0755 /mnt/mydisk/usr.

Ora potresti ancora avere problemi se in origine hai eseguito il chmodcomando in modo ricorsivo, usando il -Rparametro In tal caso, puoi provare a correggere manualmente ogni voce oppure puoi procedere direttamente con una nuova installazione ...


Ho cercato di creare un punto di montaggio, ma ho ottenuto un errore che diceva punto di montaggio mnt / mydisk non esiste è mydisk essere sostituito con qualche cosa e solo per il record che ho scritto mount /dev/sda /mnt/mydiskdaroot@Ubuntu:/dev#
vin

Hai a) creare quel punto (directory) prima di emettere il comando mount (come descritto Mount) e b) prese cura per il leader barra pure? Prova mkdir -p /mnt/mydisk && mount /dev/sda1 /mnt/mydisk(non credo che tu non abbia partizioni/dev/sda , quindi devi aver perso anche il numero della partizione. Assicurati di specificare il dispositivo corretto (o il montaggio fallirà).
Izzy

1

Penso che Mat sia corretto, devi essere root per aggiungere il bit a / usr / bin, ma ovviamente sudo è rotto. Se si dispone di una password di root, è possibile utilizzarla per accedere come root e quindi correggere le autorizzazioni con il comando sopra. Se non lo fai, tuttavia (e nemmeno io) sarebbe probabilmente meglio:

  • avvio da un CD live di Linux
  • diventa radice lì
  • montare la partizione con il sistema sopra
  • quindi raddrizzare le autorizzazioni su quel file system usando un terminale.

Il root è sempre il numero utente 0, quindi root su qualsiasi sistema può apportare modifiche autorizzate a root su altri file system.


1

Non ho molta conoscenza. Ma questi passaggi hanno risolto il mio problema anche senza riavviare la mia macchina. Segui questi passi:

su root
<enter root password>
cd /usr
chmod -R 755 *

1
Manca almeno un comando "cd". Se lo fai in questo modo, stai facendo "chmod" nella directory home per root. Ciò peggiorerà le cose.
Rinzwind,

grazie ... modificato la mia risposta ... ero nella cartella / usr
Manu Mohan Thekkedath il

2
Funziona solo se è impostata una password root, che non è la configurazione predefinita di Ubuntu.
David Foerster,

1

Nel tentativo di impostare i permessi per i miei script locali, ho rotto il permesso sudo e cambiato proprietà, per errore. Sono stato in grado di ripristinare la proprietà di sudo su root procedendo come segue:

Passaggio 1: passa alla modalità di ripristino di Ubuntu . Se non si è a conoscenza del processo, è possibile fare riferimento a una risposta qui: /ubuntu//a/172346/223901

Passaggio 2: una volta in modalità di ripristino, selezionare root - Drop to root shell prompt

Passaggio 3: eseguire i seguenti comandi

mount -o remount,rw /
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
reboot

Attendi che il tuo sistema si avvii normalmente e vedrai la proprietà di sudo tornare alla radice.

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.