Posso avviare un processo come root senza avviare la shell di login di root?


8

Ho provato a cambiare la shell di accesso.

Ecco /etc/passwdcome appare la prima linea (su un'installazione Debian Wheezy):

rootx:0:0:root:/root:/:zsh

Quando provo ad accedere come root:

Cannot execute zsh: No such file or directory

So che zshè disponibile:

$ which zsh
/usr/bin/zsh

Va bene, sembra logico sostituirlo zshcon il suo percorso completo. Ma come posso farlo?

Ho un altro utente sul sistema ( user), tuttavia non ha i privilegi di root e sudonon è installato sul sistema.

Supponiamo che per qualsiasi motivo (crittografia, accesso fisico, ...) non riesco ad avviare un CD live per modificare il file.

Conosco tuttavia le credenziali per l' rootaccount.

La mia domanda è: esiste un modo, anche programmatico, per avviare un processo con l' rootaccount senza prima avviare la sua shell di accesso?


che dire su? o gksu? qualcosa del generesu -c 'sed -i s,root:/:zsh,root:/:/usr/bin/zsh, /etc/passwd'
qdii,

La riga del file passwd non dovrebbe essere / usr / bin / zsh? Perché hai messo solo la stringa zsh?
slm

@slm Questo è il cambiamento che l'OP vuole fare ...
un CVn del

1
se il suggerimento di @qdii funziona (cioè quello su -c "<commands>") funziona ... non potremmo semplicemente usare su -c "/bin/bash"per arrivare a un bash funzionante con l'utente root ?
umanità e

1
@humanityANDpeace: non dovrebbe funzionare. Il comando passato -cviene eseguito tramite la shell di accesso dell'utente. -spuò essere usato per usare un'altra shell ... solo se la shell di login esistente è valida o il chiamante è root.
Mat

Risposte:


4

Autorizzazioni su

È possibile utilizzare il comando seguente per modificare la shell di qualsiasi utente.

su -c "/usr/bin/chsh -s /bin/bash root"

Se hai accesso fisico

Durante l'avvio di Grub puoi accedere a qualsiasi sistema purché tu abbia accesso alla console e non sia presente una password che ti impedisca di accedere al menu di Grub.

Durante l'avvio iniziale del sistema quando viene visualizzato il menu Grub, se si accede al menu e si modifica (premere il etasto) la riga del kernel, è possibile aggiungere una delle seguenti cose per eseguire l'avvio del kernel in modalità utente singolo.

  • singolo
  • init = / bin / sh
  • 1

La linea sarà simile a questa:

 kernel /vmlinuz-2.6.15-27-386 root=/dev/mapper/Ubuntu-root ro init=/bin/bash

In Grub dovrebbe essere simile a questo:

       ss di grub

Dopo aver apportato le modifiche, avvia il kernel (premi il tasto b).

Questo ti darà accesso temporaneo al sistema con una shell in cui puoi usare vi / vim per apportare qualsiasi modifica ti serva al tuo /etc/passwdfile. Digita rebootquando hai finito.


2
Dice che non ha accesso fisico, quindi probabilmente non sarà in grado di vedere il menu di GRUB.
Renan,

@Renan. OK, non l'ho capito dalle prime letture. È nascosto nella riga sul "..non riesco ad avviare un CD live .." che è formulato in modo strano per me.
slm

4
Il tuo sucomando non funzionerà, dal momento che proverà a invocare la shell di root, che non esiste.
Gilles 'SO- smetti di essere malvagio'

@Gilles: hai altre idee? Allora non vedo un modo per risolvere questo problema senza accesso fisico. Senti che stiamo lavorando esattamente contro ciò che il sistema è stato progettato per prevenire a questo punto.
slm

1
@slm Senza sudo, penso che l'account di root sia bloccato, quindi è necessario l'accesso fisico.
Gilles 'SO- smetti di essere malvagio'
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.