Nie znaleziono polecenia Bash Sudo

33

Skonfigurowałem maszynę wirtualną za pomocą pod klucz linux redmine i próbuję połączyć się z serwerem SSH, aby zainstalować więcej elementów.

Wygląda na to, że nie rozpoznaje polecenia sudo. Za każdym razem, gdy próbuję coś sudo, pojawia się błąd:

 -bash: sudo: command not found

Przeczytałem gdzie indziej, aby wpisać „whereis sudo”, a wynik był następujący:

 sudo:
Rui F. Ribeiro
źródło

Odpowiedzi:

20

Wygląda na http://www.turnkeylinux.org/redmine jak Redmine, w przeciwieństwie do Ubuntu, domyślnie nie używa sudo. Jakiej nazwy użytkownika używasz do SSH? Jeśli tak root, nie musisz go używać sudo, ponieważ wszystko, co robisz, gdy SSHed w systemie Redmine odbywa się w ten sam sposób root. Jeśli jest to coś innego, adminmożesz spróbować użyć supolecenia, aby uzyskać rootpowłokę do uruchamiania poleceń jako root.

Eliah Kagan
źródło
Co zrobić, gdy skrypt ma polecenia sudo. Zdarza mi się z mkusb. Lepiej zainstalować sudo dla wygody w przyszłości.
Love Grover,
40

Może nie jest zainstalowany? Otwórz menedżera pakietów i zainstaluj pakiet sudo .


źródło
2
Nie został zainstalowany! Dzięki. Jestem całkiem nowy w Linuksie i po prostu założyłem, że tak było we wszystkich instalacjach. Czy potrzebuję tylko pakietu sudo lub sudo-ldap?
2
Nie potrzebujesz pakietu sudo-ldap. Sudo działa dobrze na moim komputerze i nie mam zainstalowanego sudo-ldap.
Azendale
6

Najpierw zaloguj się na swoje konto root. Następnie

$ apt-get install sudo

Dodaj istniejącego użytkownika do grupy sudo

$ sudo adduser <user> sudo

Następnie powinieneś zalogować się jako <user>, a sudopolecenie powinno tam być.

Gayan Weerakutti
źródło
5

spróbuj użyć pełnej ścieżki

/usr/bin/sudo

jeśli to polecenie działa, to włącz / usr / bin / do zmiennej PATH env w ~ / .bashrc

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

mam nadzieję, że zadziała ...


źródło
4
To bardzo mało prawdopodobne, aby stanowił problem; /usr/binprawie na pewno będzie na twojej domyślnej ścieżce. Problem, jak wskazują inne odpowiedzi i komentarze, polega na tym, że sudopolecenie w ogóle nie zostało zainstalowane.
Keith Thompson
2

Błąd występuje, ponieważ plik binarny, który próbujesz wywołać z wiersza poleceń, jest tylko częścią zmiennej PATH bieżącego użytkownika, ale nie jest częścią PATH użytkownika root.

Możesz to sprawdzić, lokalizując ścieżkę pliku binarnego, do którego próbujesz uzyskać dostęp. W moim przypadku próbowałem nazwać „bettercap-ng”. Więc pobiegłem

$ which bettercap-ng

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

Sprawdziłem, czy ta lokalizacja jest częścią ŚCIEŻKI mojego użytkownika root.

$ sudo env | grep ^PATH

wydajność: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

Więc sudo nie może znaleźć pliku binarnego, który próbuję wywołać z wiersza poleceń. W związku z tym zwraca polecenie błędu nie znaleziono.

Możesz polecić sudo, aby używał ŚCIEŻKI bieżącego użytkownika podczas wywoływania pliku binarnego, jak poniżej.

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

W rzeczywistości można z niego zrobić alias:

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

Można także nazwać sam alias sudo, zastępując oryginalne sudo.

Zapoznaj się z tym filmem, aby uzyskać rozwiązanie krok po kroku

Anonimowy Dziobak
źródło