Accedi come utente non root nel terminale


18

Questa è una domanda che mi aspetterei di ottenere rapidamente una risposta da Google. Tuttavia in qualche modo google mi sta fallendo. Supponiamo di aver effettuato l'accesso a una sessione terminale e vorrei temporaneamente lavorare come un altro utente non root di cui conosco la password senza uscire dalla sessione. Quando sono registrato come questo utente, voglio che la home directory, ecc., Per questo utente sia configurata correttamente fino al logout. Come lo faccio?

Provai

su -- username

e quindi digitando la password, non ha prodotto alcun errore ma non ho visto alcuna modifica visibile del prompt dei comandi che direbbe ancora myname @ myhost. La directory home era anche quella del mio nome e non il nuovo login che ho provato ad accedere come.

Sono - come è evidente ora - abbastanza inesperto in Linux / Ubuntu, quindi qualsiasi informazione è benvenuta.

Risposte:


18

A quale utente vuoi cambiare?

Il problema è che stai provando a "su" in un utente a cui non è assegnata una shell. Alla maggior parte degli utenti come mysql, pulse, ecc., Creati dal sistema o da alcuni pacchetti quando si installa il software, non è stata assegnata una shell.

Puoi verificare se a un utente è assegnata una shell guardando nel /etc/passwdfile, basta guardare la fine della riga di ogni utente, se dice /bin/falseche significa che non ha una shell assegnata, se ha qualcosa di simile /bin/basho di qualsiasi altro shell, allora dovresti essere in grado di "su" in quell'utente.

Quando dico "shell assegnata" significa sostanzialmente che ha "shell access"

tuttavia se l'utente non ha accesso alla shell, è sempre possibile eseguire comandi come quell'utente

 sudo -u user command

comunque se l'utente non ha accesso alla shell, puoi sempre eseguire comandi come quell'utente con "sudo -u comando utente"
Sam

Aggiungi -s /bin/bashal tuo sucomando o usa chsh -u username -s /bin/bashper cambiare la shell per un utente. Fai attenzione alle implicazioni sulla sicurezza che ciò potrebbe avere.
gertvdijk,

7

se hai accesso sudo allora lo consiglierei

sudo su username -

Praticamente fa la stessa cosa, ma richiede solo di conoscere la password e non gli altri utenti.

tuttavia se hai la password degli altri utenti:

su username - dovrebbe funzionare bene.

nota l'1 - e che è alla fine.


In qualche modo entrambi i modi che hai descritto si comportano esattamente come i miei - il comando è accettato senza errori ma la directory home non è corretta e il prompt dice che sono ancora l'utente originale. Se eseguo il logout dopo di ciò, mi disconnetto completamente.
Andrew Savinykh,

Ok, è l'utente che sta effettuando l'accesso come autorizzato ad accedere? È possibile bloccare l'account dall'accesso impostando la shell su "true" e ciò farà esattamente come descritto. Questo era usato molto su account "di sistema" come "apache" e "ftp" Per controllare sudo cat /etc/passwdNON INCOLLARE IL CONTENUTO QUI. Basta osservarlo e assicurarsi che l'utente abbia una vera shell come ultimo pezzettino della sua linea.
Coteyr,

1
nota a margine, il modo più corretto per farlo è impostare una shell su "false" che genererà un errore. Sebbene alcuni sistemi e account utilizzino ancora true per motivi tecnici o di psudo-sicurezza (per aggravare il furto dei wana-be-hacker)
coteyr,
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.