Jag har skapat en virtuell dator med nyckelfärdig Linux redmine och jag försöker SSH i servern för att installera några fler objekt.
Det verkar inte känna igen sudo-kommandot. Varje gång jag försöker sudo något får jag ett felmeddelande:
-bash: sudo: command not found
Jag läste någon annanstans för att skriva ”whereis sudo” och resultatet var:
sudo:
Svar
Det ser ut från http://www.turnkeylinux.org/redmine som Redmine, till skillnad från Ubuntu, använder inte sudo som standard. Vilket användarnamn använder du för att SSH? Om det är ”s root
behöver du inte använda sudo
, eftersom allt du gör när SSHed in i Redmine-systemet är gjort som root
. Om det är något annat, som admin
, kan du försöka använda kommandot su
för att få ett root
skal där kommandon ska köras som root
.
Kommentarer
Svar
Kanske är det inte installerat? Öppna din pakethanterare och installera sudo -paketet.
Kommentarer
- Det var inte ' t installerat! Tack. Jag ' är ganska ny på Linux och antog bara att det var på alla installationer. Behöver jag bara sudopaketet eller sudo-ldap också?
- Du behöver inte ' sudo-ldap-paketet. Sudo fungerar bra på min dator och jag har inte ' sudo-ldap har inte installerats.
Svar
Första inloggningen till ditt root-konto. Sedan
$ apt-get install sudo
Lägg till din befintliga användare i gruppen sudo
$ sudo adduser <user> sudo
Du ska sedan logga in som <user>
, och kommandot sudo
ska finnas där.
Svar
försök att använda hela sökvägen
/usr/bin/sudo
om det kommandot fungerar, inkludera / usr / bin / i din env-variabel PATH i ~ / .bashrc
echo "export PATH="$PATH:/usr/bin"" >> ~/.bashrc
fungerar förhoppningsvis ..
Kommentarer
- Att ' är mycket osannolikt att det är problemet;
/usr/bin
kommer nästan säkert att vara i din standardväg. Problemet, som indikeras av andra svar och kommentarer, är att kommandotsudo
inte alls var '.
Svar
Felet uppstår eftersom det binära du försöker ringa från kommandoraden bara är en del av den aktuella användarens PATH variabel, men inte en del av rotanvändarens PATH.
Du kan verifiera detta genom att hitta sökvägen till det binära du försöker komma åt. I mitt fall försökte jag kalla ”bettercap-ng”. Så jag sprang,
$ which bettercap-ng
output: /home/user/work/bin/bettercap
I kontrollerat om den här platsen är en del av min rotanvändares PATH.
$ sudo env | grep ^PATH
output: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Så sudo kan inte hitta den binära som jag försöker ringa från kommandoraden. Därför returnerar felkommandot hittades inte.
Du kan rikta sudo att använda den aktuella användaren ”s PATH när man ringer till en binär som nedan.
$ sudo -E env "PATH=$PATH" [command] [arguments]
Man kan faktiskt göra ett alias av det:
$ alias mysudo="sudo -E env "PATH=$PATH""
Det är också möjligt att namnge aliaset själv sudo och ersätta den ursprungliga sudo.
Se till den här videon för steg för steg-lösning
sudo
är ett bättre alternativ