Odpowiedzi:
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ę.
Lepiej byłoby zrobić:
$ sudo sh -c 'cd /home; ./gitpull.sh'
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ć.
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.
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.
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; celem sudo
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) jest su
podanie hasła roota, a nie własnego.
sudo bash
(lub sudo su
, jeśli o to chodzi), z czym nie mógłbyś zrobić sudo evil-command
?
sudo
pozwala tylko robić rzeczy określone w sudoers
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śli sudo 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ół zalet sudo
i sudoers
i w zasadzie sprawia, że użytkownik root.
sudo benign-command
. bash
jest instancją klasy evil-command
. Możesz sudoers
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
zamiast sudo
jest określony na
./gitpull.sh
bash, a nie inną powłokę, taką jak tcsh
, 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
...
cd
w podpowłoce (np. Viasudo
) nie jest produktywną operacją ... nie zmieni katalogu dla powłoki wywołującej.