Dopo aver rinominato accidentalmente / ecc., Come posso rinominarlo?


36

Sto usando Ubuntu 18.04.

Ho rinominato la /etccartella in apache2. Questo è stato il mio più grande errore

Ora non posso rinominarlo perché devo usarlo sudo, ma quando provo ottengo l'errore

sudo: unknown uid 1000

Come posso risolvere questo problema? Non ho un sistema live da cui avviare, e in modalità di ripristino il terminale di root si apre ma poi chiude dicendo cannot open password database.


17
Avvia da un supporto di installazione, seleziona "Prova Ubuntu", monta il tuo file system di root /mnt, esegui la ridenominazione, riavvia.
AlexP

Come avviare un supporto di installazione?
Racoon,

@Zanna, il turno non mi ha mostrato nessun menu. Forse un altro pulsante può aprirlo?
Racoon,

@Zanna, menu di ripristino -> root apre il terminale, ma dice che non è possibile aprire il database delle password e si chiude
Racoon

@Zanna, no, no :(
Racoon,

Risposte:


62

Un modo semplice per risolvere problemi come questo è spesso l'avvio da un sistema live, montare la partizione di root /mnt e quindi rinominare il file.

Se non hai un sistema live o un mezzo per crearne uno o non hai accesso fisico al sistema ma puoi riavviare e ottenere il menu GRUB, puoi usare l'editor GRUB per ottenere una shell root e rinominare il file.

Riavvia o spegni, accendi e, se normalmente non vedi il menu di GRUB all'avvio, premi Shifto Escper accedere al menu di GRUB.

Spostare il cursore verso il basso su Opzioni avanzate per Ubuntu e premere enter, quindi premere eper modificare le opzioni di avvio (una sola volta: le modifiche qui non saranno permanenti, quindi non sarà necessario ripulire in seguito).

Vedrai una schermata simile a questa 1 :

screenshot dell'editor di menu di GRUB

Spostare il cursore verso il basso sulla riga che inizia con, linuxquindi spostare il cursore alla fine di quella riga o ovunque tra i parametri di avvio del kernel. Assicurati di essere sulla riga corretta e digita attentamente qui, poiché il sistema potrebbe non avviarsi senza essere /etcin posizione.

Aggiungi il testo init=/bin/bashe premi F10per avviare.

Questo avvierà il sistema con una shell Bash come init. Otterrai una shell di root e il filesystem verrà montato in sola lettura. 2 Per rendere scrivibile il filesystem, immettere il comando

mount -o remount,rw /

Ora puoi rinominare /etc(potresti voler lsprima)

mv /apache2 /etc

Ora puoi riavviare o completare l'avvio normalmente da qui facendo sostituire la shell root con il normale sistema init 3 :

exec systemd 

Ho testato questa procedura su Ubuntu MATE 18.04.


1 Mille grazie a Kulfy per aver ottenuto uno screenshot di buona qualità dell'editor GRUB da VirtualBox!
2 Sebbene PATH non possa essere impostato dai file di configurazione /etcin questo scenario, Bash imposterà automaticamente uno .
3 Se exec systemdnon funziona per te, exec /sbin/initdovresti fare il trucco. In caso contrario, readlink -e /sbin/initdovrebbe fornire il percorso a qualunque programma init debba essere in esecuzione, che è quindi possibile execcon l'intero percorso. Se non puoi procedere in questo modo, inserisci semplicemente reboot.


4
Molto completo incluso lo screenshot +1 :)
WinEunuuchs2Unix il

3
@Kulfy grazie mille! è meraviglioso: DI non può usare VB perché non ho abbastanza RAM. Molto gentile da parte tua per aiutare a migliorare la mia risposta
Zanna,

3
Penso di aver preso lo screenshot troppo grande: P ;-) e grazie per i crediti dello screenshot :)
Kulfy

1
@Racoon Sei il benvenuto, felice di averlo riparato :)
Zanna

Prova di provarlo ma non funziona in Ubuntu 18.04.Desktop. Seguite le istruzioni alla lettera . Non funziona. Dopo F10solo poche righe appaiono e si fermano a schermo vuoto. Puoi suggerire qualcosa?
Vijay,

8

Se disponi di un USB live, dovresti essere in grado di avviarlo e montare il tuo filesystem esistente, quindi rinominare /etcda lì. Ecco un tutorial su come creare un USB live se ne hai bisogno.

Una volta avviato l'USB live (se si utilizza un'unità Ubuntu 18.04), selezionare "Prova Ubuntu senza installare" e ti fornirà essenzialmente un'istanza completa di un'installazione Ubuntu che non persisterà dopo l'arresto. Una volta avviato, hai alcune opzioni:

Modo da riga di comando

Apri un terminale ed esegui lsblk. Cerca il volume che sarebbe l'unità della tua installazione originale e nota quale numero è (/ dev / sd #)

Quindi, creare un mountpoint per l'unità con mkdir -p /mnt/directory, quindi montare l'unità con sudo mount /dev/sd# /mnt/directory. Passa alla directory con cd /mnt/directorye ora dovresti trovarti nella directory root dell'installazione, ma ora con un sudocomando funzionante . esegui sudo mv apache2 etce riavvia il tuo sistema operativo funzionante ipoteticamente.

Modo grafico

Aprire l'utilità dei dischi cercando i dischi. Seleziona il volume che assomiglia all'unità di installazione e montalo. Apri il file manager e seleziona il volume montato, fai clic con il pulsante destro del mouse sulla /apache2cartella e rinominalo in /etc, quindi riavvia.


"Graphical Way" non funziona perché non è disponibile l'opzione "Rinomina" su RT. clic.
Vijay,

1
@Vijay Questo è probabilmente a causa delle autorizzazioni dei file, per farlo graficamente dovrai aprire il file manager come root. Per fare ciò, eseguire il comando sudo nautilusdal terminale. (Ubuntu usa "nautilus" come suo file manager allo stesso modo in cui Windows usa "explorer".)
AJMansfield

2
@AJMansfield ovviamente non importa su un sistema live, ma in generale dovremmo usare sudo -H nautilusper evitare che root diventi il ​​proprietario dei file di configurazione $HOME, rendendoli potenzialmente inaccessibili dai programmi eseguiti come un normale utente. Probabilmente ne sei consapevole, ma sto citando per altri lettori.
Zanna,

6
  1. Crea USB avviabile come mostrato qui.

  2. Avviare da USB premendo il tasto come mostrato qui.

  3. Scopri la tua partizione del file system eseguendo gparted. Supponiamo che sia sdxy.

  4. Esegui sul terminale sudo mount /dev/sdxy /mnt

  5. Esegui sul terminale sudo mv /mnt/apache2 /mnt/etc

  6. Controlla il tuo file system in / mnt per la modifica del nome.

  7. Esegui sul terminale sudo reboot

  8. Quando richiesto, rimuovere l'USB e premere Invio


@Kulfy Ho provato ma non funziona senza sudo. Vedi qui .
Vijay,

Questo perché sda2 è stato montato con sudo, quindi solo sudo può eseguire azioni. Ma se monti drive da nautilus (senza alcuna autorizzazione speciale) puoi eseguire attività senza sudo.
Kulfy,

Controllato `ubuntu @ ubuntu: ~ $ mount / dev / sda2 / mnt mount: solo root può farlo ubuntu @ ubuntu: ~ $
Vijay

1
AFAIK il mountprogramma è molto rigoroso e deve sempre essere eseguito come root; l'unica eccezione a ciò è quando il filesystem è dentro fstabe ha l' useropzione. Il programma udisksctlconsente agli utenti normali di montare i dispositivi, usando ad esempio udisksctl mount -b /dev/sda1(crea un punto di montaggio adatto /media/$USER/). Non ho provato a utilizzare udisksctlda un sistema live, ma su un sistema live uno è sempre un utente privilegiato in grado di eseguire sudosenza password, quindi non sono necessarie utilità come quelle udisksctlche sarebbero altrimenti così utili
Zanna
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.