Questa risposta dovrebbe comunque aiutarti, anche tenendo conto delle modifiche alla domanda. In particolare, un account creato con
--disabled-login
non ha una password impostata e nessun altro mezzo per accedere , ma dovrebbe essere comunque possibile usare sudo
(spiegato di seguito) per eseguire comandi o una shell come utente. Questo è, infatti, il modo in cui l'
root
account è impostato in Ubuntu.
Esistono più problemi con il comando su - irssi
.
Questo comando tenta di avviare una shell di proprietà di un utente di nomeirssi
.
Fallirà se:
- Non ci sono
irssi
utenti
- L'
irssi
account dell'utente è disabilitato.
- L'
irssi
account dell'utente è disabilitato per l'accesso interattivo. A volte a un account è consentito utilizzare servizi come FTP ma è vietato accedere normalmente impostando la shell su qualcosa che si chiude immediatamente, come /bin/false
. Quindi un accesso termina immediatamente, senza alcun messaggio.
- La password che stai inserendo non è corretta per l'
irssi
utente.
Il -
flag lo rende così la shell simula una shell di login iniziale - cioè, è davvero molto simile all'accesso come irssi
. Senza il -
flag, se il su
comando avesse esito positivo, avresti comunque una shell di proprietà irssi
, ma le variabili d'ambiente come HOME
sarebbero invariate.
Se invece vuoi eseguire un programma chiamato irssi
, devi invocare su
diversamente:
su username - -c irssi
Se lo lasci , è lo stesso di - tenta di eseguire il comando come root.-c username
-c root
In alternativa è possibile avviare una shell e quindi eseguire il comando :
- Inizia la shell con .
su username -
- Nella shell, esegui il comando (
irssi
).
- Se hai finito, lascia la shell eseguendo
exit
.
Comandi in esecuzione come root
Se si desidera eseguire irssi
come root
, su
non è il modo di farlo. Gli accessi root sono disabilitati di default su Ubuntu e raramente ci sono motivi per riattivarli . Se hai abilitato l' root
accesso, dovresti essere in grado di utilizzare su
per diventare root
. Il motivo per cui non è necessario abilitare l' root
account è che, indipendentemente dal fatto, è ancora possibile eseguire comandi come root
con sudo
.
Quando si eseguono comandi sudo
, si inserisce la password, non la password dell'utente con la cui identità si desidera eseguire il comando. Solo gli amministratori possono eseguire comandi arbitrari come root
con sudo
(a meno che non si riconfigura sudo
per permettere ad altri di farlo, ovviamente). Pertanto, a un utente a cui non è consentito amministrare il sistema non è autorizzato a eseguire comandi come root
con la propria password.
Per funzionare irssi
come root
con sudo
:
sudo irssi
E inseriresti la tua password quando richiesto, non root
di.
Tranne la password che inserisci, fa la stessa cosa di:
su -c irssi
Tranne che la sudo
versione può avere successo perché non richiede che l' root
account sia abilitato.
Come con su
, è possibile utilizzare sudo
per eseguire comandi come un altro, non root
utente . Per funzionare irssi
come username
con sudo
:
sudo -u username irssi
Se vuoi sudo
comportarti come su -
rispetto aHOME
- cioè, vuoi usare le HOME
variabili d'ambiente dell'utente di destinazione , puoi eseguire sudo
con il -H
flag:
sudo -H irssi
sudo -H -u username irssi
Puoi iniziare un'intera shell con sudo
, come puoi fare con su
. Ad eccezione della password inserita, questo comando ha lo stesso effetto di su
:
sudo -s
E questo comando ha lo stesso effetto di su -
:
sudo -i
( i
Indica la shell di login iniziale .)
Puoi avviare una shell anche come un altro utente:
sudo -u username -s
sudo -u username -i
Ulteriori approfondimenti sudo
Per saperne di piùsudo
, dai un'occhiata a:
Perché ha gksu
funzionato quando su
no?
gksu
probabilmente ha funzionato correndosudo
.
gksu
è un frontend per entrambi su
e sudo
. In Ubuntu, viene utilizzato per impostazione predefinita sudo
(poiché in Ubuntu, in su
genere non viene utilizzato per diventare root
, ed è solo un modo secondario per diventare altri non root
utenti).
È possibile gksu
utilizzare su
come frontend eseguendo gksu --su-mode
.
Puoi scoprire se gksu
è in su
modalità o sudo
modalità e (se lo desideri) modificare questa impostazione, eseguendo gksu-properties
. Questa è un'impostazione per utente.
Quando gksu
è in sudo
modalità, si comporta come gksudo
.
Ulteriori approfondimenti gksu
Analisi post-soluzione
Alla fine hai scoperto che sei stato in grado di eseguire il comando necessario con:
sudo -u username irssi
(Quale delle tecniche sopra elencate.)
Alla fine, hai riportato due informazioni, che sono sufficienti per spiegare il motivo per cui altre tecniche avevano fallito, ma ciò è riuscito:
L' username
account è stato creato con il --disabled-login
flag, il che lo rende privo di password (e nessun altro mezzo per accedere). Non avere password non significa che è possibile accedere con una password vuota . Significa che nessuna password è sufficiente per l'autenticazione. In combinazione con l'eliminazione di altri mezzi di autenticazione, questo mezzo username
non può autenticare affatto.
Quindi le su
soluzioni basate su tutti sono disponibili. sudo
può funzionare, perché con sudo
te non esegui l'autenticazione come l'utente che stai per impersonare. Invece, devi essere autorizzato a spacciarli e ti autentichi come te stesso (cioè, inserisci la tua password, non la loro).
È possibile impostare una password sull'account, che rimuove questa barriera all'accesso:
sudo passwd username
Tuttavia, potrebbe esserci una buona ragione per cui l'utente non è autorizzato ad accedere. Ad esempio, se questo utente fosse autorizzato ad accedere e abbia effettuato l'accesso graficamente, potrebbero sorgere problemi gravi dall'ambiente dell'utente o se i privilegi non sono adatti all'esecuzione di app X11 ? Se questo utente potesse accedere, ciò consentirebbe di accedere in remoto come quell'utente (per le macchine in cui hai esposto i servizi di rete)?
Se vuoi disabilitarlo di nuovo:
sudo passwd -dl username
Correlati: riattivazione root
dell'account dopo averlo abilitato temporaneamente.
L' username
account ha /bin/false
come shell di login.
Quando una shell come bash
viene eseguita come shell di accesso, configura il tuo ambiente e ti dà un prompt interattivo con il quale controllare la macchina.
Quando /bin/false
viene eseguito, d'altra parte, non fa nulla e segnala errori . ( /bin/true
non fa nulla e riporta il successo.)
I comandi false
e true
sono utili negli script e per vari scopi di test, ma anche per disabilitare un account in modo che quando qualcuno accede, la sua sessione di accesso termina immediatamente. In questo modo, è possibile abilitare una password (o altri mezzi di autenticazione) e le persone possono accedere, non solo per l' accesso alla shell . Ad esempio, se esiste un server FTP, potrebbero comunque accedere al proprio account tramite FTP. Se esiste un server SSH, non sarebbero in grado di ottenere una shell tramite SSH, ma potrebbero comunque utilizzare sftp
e scp
trasferire file.
Dal momento che username
la shell di login 's era non funzionali, comandi come , , , e non poteva funzionare.su username
su - username
sudo -u username -s
sudo -u username -i
Ma i comandi che non danno una shell, come o potrebbero ancora funzionare.sudo -u username command
su username -c 'command'
Poiché i comandi possono essere eseguiti, è possibile modificare la shell di accesso dell'utente in qualcosa di funzionale:
sudo chsh -s /bin/bash username
Tuttavia, ciò dovrebbe essere eseguito con cautela, poiché potrebbe esserci un buon motivo per disabilitare gli accessi interattivi per l'utente.
Qui, username
entrambi avevano password disabilitata e shell "disabilitata". L'assenza di una password funzionante ha impedito il funzionamento di tutte le su
soluzioni basate su base, mentre l'assenza di una shell di login interattiva funzionante ha impedito il funzionamento di tutte le soluzioni di generazione della shell (tranne che per invocare manualmente una shell, come ).sudo -u username bash
sudo -u username command
è ciò che è rimasto.