Czytałem następujący kod:
$ sudo bash
# cd /home/
# ./gitpull.sh
Dlaczego potrzebuję pierwszej linii, co ona dokładnie robi? Co jeśli właśnie to zrobiłem $ sudo
zamiast $ sudo bash
?
Uruchamia powłokę bash jako root
użytkownik poziomu. Potrzebujesz go, ponieważ zwykle zwykli użytkownicy nie mają dostępu/home/
Niebezpieczeństwo tego, co robisz, polega na tym, że znajdujesz się w skorupie roota - dość łatwo możesz zepsuć maszynę.
cd
w podpowłoce (np. Viasudo
) nie jest produktywną operacją ... nie zmieni katalogu dla powłoki wywołującej.Lepiej byłoby zrobić:
Ponieważ polecenia wywoływane jako root zostaną zarejestrowane. Wywołanie powłoki bezpośrednio przez sudo pozwala uniknąć wszystkich korzyści bezpieczeństwa sudo i należy tego unikać.
źródło
Niesławne sudo jest swego rodzaju akronimem dla Superuser Do.
Zasadniczo sprawia, że zwykły użytkownik na krótki czas staje się Super użytkownikiem.
W swoim poleceniu sudo bash faktycznie mówisz Superuser do -> powłoka Bourne'a (bash), która otwiera użytkownika root zalogowanego w powłoce.
Jeśli uruchomiłeś sudo, system operacyjny nie wiedziałby, co robić. Ogólnie rzecz biorąc, po sudo następuje polecenie unix.
źródło
sudo
umożliwia użytkownikom uruchamianie programów z uprawnieniami bezpieczeństwa innego użytkownika (zwykle superużytkownika lub użytkownika root).bash
uruchamia nową powłokę bash.Tak więc
sudo bash
uruchamia nową powłokę bash z uprawnieniami bezpieczeństwa użytkownika root.źródło
sudo <shell>
, jeśli to działa, zdradza słabą instalację sudo i potencjalną słabość bezpieczeństwa.sudo
nie powinien być skonfigurowany tak, aby zezwalał na dowolne polecenia takie jak shell; celemsudo
jest umożliwienie uwierzytelnionym użytkownikom innym niż root uruchamiania niektórych poleceń jako root, bez znajomości hasła roota.Jeśli
sudo bash
jest dozwolone dla dowolnego użytkownika, użytkownik ten jest rootowany po prostu dzięki znajomości własnego hasła.Jeśli osoba atakująca uzyska hasło do dowolnego konta, które jest w stanie to zrobić
sudo bash
, osoba atakująca ma w ten sposób uprawnienia root.Właściwym sposobem na zrobienie tego
sudo bash
(uzyskanie powłoki roota) jestsu
podanie hasła roota, a nie własnego.źródło
sudo bash
(lubsudo su
, jeśli o to chodzi), z czym nie mógłbyś zrobićsudo evil-command
?sudo
pozwala tylko robić rzeczy określone wsudoers
pliku. Zapewnia bardzo szczegółową kontrolę, ponieważ możesz dać dostęp tylko do tych programów, do których chcesz mieć dostęp. Jeślisudo bash
jednak na to zezwolisz , przyznajesz powłokę poziomu głównego. Możesz zrobić wszystko, co root może zrobić w powłoce. Robi się wokół zaletsudo
isudoers
i w zasadzie sprawia, że użytkownik root.sudo benign-command
.bash
jest instancją klasyevil-command
. Możeszsudoers
dokładnie utworzyć swój plik, aby jedynymi dozwolonymi poleceniami były te, które nie mogą wyrządzić żadnej szkody (lub których potencjał wyrządzenia krzywdy jest w jakiś sposób zawarty) i które nie pozwalają na eskalację uprawnień w zakresie dowolnych działań.Założę się, że
sudo bash
zamiastsudo
jest określony na./gitpull.sh
bash, a nie inną powłokę, taką jaktcsh
,pdksh
lub zwykłą starąsh
. Jestem prawie pewien, że linia hashbanga skryptu powinna pozwalać skryptowi na określenie, pod którą powłoką ma być uruchamiany, ale może z jakiegoś powodu został pominięty lub program piszący instrukcje nie chce, abyś na tym polegał.bash
bez innych argumentów, nie będzie to działało jak „powłoka logowania” i może od tego zależy skrypt.Również @nisdis ma rację. Zwykły stary
sudo
po prostu drukuje informacje o użytkowaniu. Ale dlaczego nie użyćsu
...źródło