Come posso ottenere una shell interattiva come un altro utente non root?


14

Sto usando Ubuntu 10.04 LTS server, con il modello di sicurezza predefinito (root bloccato, usando sudoper elevare i privilegi). A volte mi piace usare sudo -iquando avrò bisogno di eseguire una serie di comandi con privilegi elevati, o quando dovrò rovistare in directory con privilegi solo root.

A volte, quando si configura un software che verrà eseguito come proprio account di sistema non privilegiato ( adduser --system --group --no-create-home --disabled-login some-daemon-user), trovo che devo eseguire una sequenza di comandi come quell'utente , piuttosto che me stesso o root. Ho provato a utilizzare sudo -i -u some-daemon-user, ma restituisce solo uno 1stato senza alcun messaggio di errore.

Ho controllato il syslog, messages, auth, e debugfile di log in /var/loge nessuno di loro di riportare qualsiasi messaggio di riferimento sudoo l'account in questione.

Quindi, è possibile diventare un altro utente non root, sudo-style senza solo impostare una password e accedere (come loro)? Il mio sistema è "rotto" in qualche modo o sto semplicemente sbagliando?

Risposte:


14

Ahmm .. il problema è che la shell standard di quegli utenti è normalmente impostata su /bin/falsee per ragioni di sicurezza non dovresti cambiarla. Ma puoi ancora eseguire ad esempio:sudo -u www-data /bin/sh


1
Puoi fornire maggiori dettagli sui "motivi di sicurezza"? È diverso se uso sudouna shell come utente, come suggerisce Florian sopra?
Calrion,

1
Il motivo è che qualsiasi utente malintenzionato che esegue un login come utente di sistema, ovvero sfruttando un bug nel programma di login, ha meno probabilità di finire con una shell valida. Quindi, dovresti lasciare l'impostazione così com'è nel file / etc / passwd, anche se è solo per un buon karma. Invocare la shell direttamente tramite sudo non è correlato a questo.
Paul Hänsch,

Quindi il problema è impostare una shell nel passwdfile, non eseguendo effettivamente una shell come utente. Gotcha!
Calrion,

9

sudo -iesegue la shell specificata dalla voce del database delle password dell'utente di destinazione, che è /bin/falseper l'utente del sistema.

Uso

 sudo -u some-daemon-user bash

o

sudo -u some-daemon-user -H bash

se si desidera impostare la variabile di ambiente $ HOME impostata per l'utente di destinazione.

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.