Co decyduje o tym, które polecenia systemu Linux wymagają dostępu do konta root? Rozumiem powody, dla których pożądane jest, powiedzmy, apt-get
wymaganie root
przywilejów; ale co odróżnia te polecenia od reszty? Czy to po prostu kwestia własności i wykonywania uprawnień do pliku wykonywalnego?
linux
root
privileges
Brian Zgredek
źródło
źródło
open
i otrzymują „odmowę zgody”. Niektóre aplikacje sprawdzajągetuid
i przestają działać, jeśli nie są wywoływane przez root. Niektóre są fizycznie własnością root i tylko właściciel może je wykonać (patrzchmod
). Jeśli pytasz, czy w nagłówku aplikacji jest jakiś znak „potrzebuje root” - odpowiedź brzmi „nie”. Nie ma takiej rzeczyOdpowiedzi:
W Linuksie, przywileje korzenia były w jednym punkcie podzielone na „możliwości”, dzięki czemu można uzyskać pełną listę specjalnymi uprawnieniami roota, patrząc na tej dokumentacji:
man 7 capabilities
.Aby odpowiedzieć na twoje pytanie, polecenie będzie wymagało uruchomienia jako root, gdy potrzebuje jednego z tych uprawnień, a jego plik wykonywalny nieskryptowy nie ma ustawionej odpowiedniej zdolności w swoich metadanych pliku (np. Jeśli skrypt python wymaga takiej możliwości, wtedy zdolność musiałby być w interpreterze python określonym w linii shebang).
Zauważ, że niektóre polecenia, które wymagają dostępu do roota, nie potrzebują czegoś takiego,
sudo
ponieważ mają ustawiony bit SUID w swoim pliku wykonywalnym. Ten bit powoduje, że plik wykonywalny działa jako właściciel (zwykle root), gdy jest wykonywany przez każdego, kto ma dostęp do wykonywania. Przykładsudo
sam w sobie, ponieważ zmiana użytkowników jest uprzywilejowaną akcją, którą musi wykonać.EDYCJA: Z twojego pytania wynika, że możesz mieć pomysł, aby ustalić, czy polecenie będzie wymagało dostępu do konta root przed jego uruchomieniem. To nie o to chodzi. Program może czasami wymagać uprawnień roota, a innym razem nie, a może to być decyzja podjęta przez program z powodu danych dostarczonych podczas działania. Weźmy na przykład wywoływanie
vim
, podobnie jak bez argumentów, a następnie szereg naciśnięć klawiszy i wklejanie, mówiąc mu, aby napisał coś do pliku, do którego nie ma uprawnień do zapisu, lub może wykonać inną komendę, która sama będzie wymagać uprawnień administratora. Nic o komendzie przed wykonaniem nie może wskazywać, że ostatecznie wymagałoby to dostępu do konta root. Jest to coś, co można ustalić tylko w momencie, gdy próbuje zrobić coś, co tego wymaga.W każdym razie oto kilka przykładów z przywoływanej strony przywilejów roota:
źródło
Jest to głównie kwestia tego, co narzędzie lub program robi . Pamiętając, że osoba niebędąca superużytkownikiem może dotykać tylko plików, do których jest właścicielem lub do których ma dostęp, każde narzędzie, które musi mieć dostęp do wszystkiego, będzie wymagało dostępu administratora w celu wykonania tego, co robi. Szybka próbka rzeczy, które mogą wymagać dostępu administratora, obejmuje między innymi:
/etc
)/lib
i/usr/lib
) lub plików binarnych (/bin
,/usr/bin
)renice
)źródło
Myślę, że weryfikacja uprawnień jest zgodna z tożsamością użytkownika, a nie zgodnie z kolejnością podziału uprawnień. Pliki i użytkownicy są uprzywilejowani, a poleceń nie należy dzielić.
źródło