Comando Bash Sudo non trovato


33

Ho impostato una VM usando chiavi in ​​mano Linux Redmine e sto cercando di SSH nel server per installare altri elementi.

Non sembra riconoscere il comando sudo. Ogni volta che provo a fare qualcosa sudo ricevo un errore che dice:

 -bash: sudo: command not found

Ho letto altrove per digitare "whereis sudo" e l'output era:

 sudo:

Risposte:


20

Sembra da http://www.turnkeylinux.org/redmine come Redmine, a differenza di Ubuntu, non usa sudo di default. In quale nome utente stai usando SSH? In tal caso root, non è necessario utilizzarlo sudo, poiché tutto ciò che fai quando SSHed nel sistema Redmine viene eseguito come root. Se è qualcos'altro, come admin, allora potresti provare a usare il sucomando per ottenere una rootshell in cui eseguire i comandi come root.


Cosa fare quando lo script ha comandi sudo. Mi succede con mkusb. È meglio installare sudo per comodità futura.
Love Grover,

40

Forse non è installato? Apri il tuo gestore pacchetti e installa il pacchetto sudo .


2
Non è stato installato! Grazie. Sono abbastanza nuovo su Linux e ho appena pensato che fosse su tutte le installazioni. Ho solo bisogno del pacchetto sudo o anche sudo-ldap?

2
Non è necessario il pacchetto sudo-ldap. Sudo funziona bene sul mio computer e non ho installato sudo-ldap.
Azendale,

6

Per prima cosa accedi al tuo account di root. Poi

$ apt-get install sudo

Aggiungi il tuo utente esistente al gruppo sudo

$ sudo adduser <user> sudo

Dovresti quindi accedere come <user>, e il sudocomando dovrebbe essere lì.


5

prova a utilizzare il percorso completo

/usr/bin/sudo

se quel comando funziona allora includi / usr / bin / nella tua variabile env PATH in ~ / .bashrc

echo "export PATH="$PATH:/usr/bin"" >> ~/.bashrc

speriamo che funzioni ..


4
È molto improbabile che questo sia il problema; /usr/binsarà quasi sicuramente nel tuo percorso predefinito. Il problema, come indicato da altre risposte e commenti, è che il sudocomando non è stato installato affatto.
Keith Thompson,

2

L'errore si verifica perché il file binario che si sta tentando di chiamare dalla riga di comando fa parte solo della variabile PATH dell'utente corrente, ma non fa parte del PATH dell'utente root.

Puoi verificarlo individuando il percorso del binario a cui stai tentando di accedere. Nel mio caso stavo cercando di chiamare "bettercap-ng". Quindi ho corso

$ which bettercap-ng

output: /home/user/work/bin/bettercap

Ho verificato se questa posizione fa parte del PERCORSO del mio utente root.

$ sudo env | grep ^PATH

produzione: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

Quindi sudo non riesce a trovare il binario che sto cercando di chiamare dalla riga di comando. Quindi restituisce il comando di errore non trovato.

Puoi dire a sudo di usare il PERCORSO dell'utente corrente quando chiami un binario come di seguito.

$ sudo -E env "PATH=$PATH" [command] [arguments]

In effetti, si può ricavarne un alias:

$ alias mysudo='sudo -E env "PATH=$PATH"'

È anche possibile nominare lo stesso sudo sudo, sostituendo il sudo originale.

Fare riferimento a questo video per una soluzione dettagliata

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.