sudo
nie można uznać za uniwersalny:
Red Hat Enterprise Linux : sudo
jest domyślnie instalowany w systemie Red Hat Enterprise Linux i jego pochodnych 1, ale instaluje się tylko w wersji gotowej do użycia w wersji RHEL 7 i nowszych.
Red Hat Enterprise Linux 7 dodał nową opcję do ekranu instalacji, na której tworzysz pierwszego użytkownika innego niż root , pole wyboru oznaczone „Ustaw tego użytkownika jako administratora”. Jego cel nie jest udokumentowany na tej stronie przewodnika instalacji, ale jednym z jego efektów jest umożliwienie temu użytkownikowi uruchomienia dowolnej komendy sudo
. Robi to, dodając tego użytkownika do wheel
grupy, która może uruchomić dowolne polecenie w sudo
konfiguracji pakietu podstawowego.
Red Hat Enterprise Linux od 3 do 6 również sudo
jest domyślnie instalowany , 2, ale do wersji RHEL 7 był skonfigurowany tak, aby root
mógł uruchamiać tylko polecenia. Najłatwiej to naprawić, dodając jednego lub więcej użytkowników do wheel
grupy, a następnie uruchom visudo
jako root i odkomentuj %wheel ALL=(ALL)...
linię.
Debian : Począwszy od Debian 9, minimalna instalacja obejmuje sudo
.
W Debianie 7 i 8 trzeba było wybrać pakiet „ Standardowe narzędzia systemowe ” podczas instalacji sudo
. Jeśli zainstalujesz w sudo
ten sposób, instalator systemu operacyjnego automatycznie doda do grupy użytkownika nieadministracyjnego utworzonego wcześniej w procesie instalacji sudo
, który ma uprawnienia do uruchamiania wszystkich poleceń.
W Debianie 6 i wcześniej, trzeba było zainstalować sudo
poprzez apt-get
po instalacji i skonfigurować go ręcznie, aby udzielić użytkownikom innym niż root zdolność do korzystania z niego.
FreeBSD : sudo
nie jest domyślnie instalowany we FreeBSD. Musisz zbudować go z portów.
NetBSD : Taki sam jak FreeBSD.
OpenBSD : sudo
kiedyś instalowany domyślnie w OpenBSD, ale już włączony do doas
jak od 5.8, wydany w październiku 2015 roku . doas
statki są domyślnie wyłączone.
Aby uzyskać sudo
aktualne wersje, musisz zainstalować go z repozytorium pakietów. sudo
Pakiet OpenBSD jest skonfigurowany podobnie jak w RHEL od 3 do 6, dzięki czemu root
można przez niego uruchamiać tylko polecenia, co raczej nie spełnia celu sudo
. Jeśli dodałeś root
użytkownika niebędącego użytkownikiem podczas instalacji, został on dodany do wheel
grupy, więc najprostszym sposobem uczynienia sudo
użytecznym w systemie OpenBSD jest usunięcie polecenia z %wheel ALL=(ALL)...
linii visudo
.
Solaris : sudo
jest instalowany domyślnie w Solaris 11, ale Solaris 10 i starsze korzystają z podobnego, ale niezupełnie tego samego pfexec
.
Możesz dostać sudo
dla starszych systemów, ale domyślne mają znaczenie. Solaris 10 i starszy będzie z nami przez lata, więc jeśli masz Solaris w swoim środowisku i nie masz osobistej kontroli nad tymi systemami, a więc możesz upewnić sudo
się, że tam jest, nie możesz na niego liczyć.
Im starszy system, tym większa szansa, że go nie ma sudo
. Chociaż sudo
jest bardzo stary , zaczął zyskiwać popularność dopiero w połowie 2000 roku. Jest mało prawdopodobne, aby systemy starsze były starsze sudo
. Pudełka unixowe mają tendencję do długiego życia, więc nie jest wykluczone, że nadal można by spotkać się z takim systemem.
Liczę tylko sudo
na systemy, którymi osobiście zarządzam, lub takie jak Ubuntu, macOS lub openSuSE , w których domyślnie jest to jedyny sposób na uzyskanie uprawnień roota.
su
jest bliżej uniwersalnej komendy „Uzyskaj mi superużytkownika” niż sudo
, ale wtedy masz systemy takie jak Ubuntu i macOS, w których konto root jest domyślnie zablokowane, aby zmusić cię do użycia sudo
zamiast su
. Nie można też nazwać su
uniwersalnym.
Przypisy :
CentOS, Oracle Linux, Scientific Linux ...
Tak, nawet przy minimalnych instalacjach.
sudo
może być dołączony do większości dystrybucji, ale nie wszystkie z nich konfigurują każdego użytkownika jako zdolnego do jego uruchomienia.Najczęściej używana dystrybucja, Ubuntu, wykorzystuje
sudo
jako zalecaną metodę rootowania (podczas korzystania z wiersza poleceń - użytkownicy, którzy trzymają się GUI, otrzymają monit o hasło bez zrozumienia lub dbania o to, co dzieje się pod maską). Inne dystrybucje mogą, ale nie muszą, zachęcać do skonfigurowania sudo i mogą go nawet nie wysyłać. Z drugiej stronysu
jest dostępny wszędzie i można go stosować w większości systemów, z wyjątkiem tych, w którychsudo
jest dostępny tylko, ponieważ użytkownik nie będzie miał hasła roota.Pomiędzy
su
isudo
obejmiesz prawie wszystkich swoich użytkowników. Egzotyczne nielicznych, którzy potrzebującalife
lubop
czypfexec
wiem co już robić. Nawet jeśli nie, system, który nie używa anisu
niesudo
będzie prawdopodobnie miał plików w nieznanych miejscach i wystarczająco dużo rzeczy, o których nie pomyślałeś, że instrukcje prawdopodobnie i tak nie będą działać.źródło
Aby odpowiedzieć na twoje pytanie, najdokładniej, nie
sudo
jest uważane za uniwersalne. Prawdę mówiąc, cała koncepcja „uniwersalności” jest często czerwonym śledziem. Jest to szczególnie prawdziwe w odniesieniu do kompatybilności między dystrybutorami. Po wprowadzeniu wielu różnych wersji oprogramowania uniwersalność staje się na wpół nierealna. Pisanie skryptów z natury jest pragmatyczne, gdyby było pedantyczne, pisanie przenośnych skryptów byłoby praktycznie niemożliwe.Normalnie oceniam moje zamierzone środowisko wykonawcze. Pół-nowoczesna dystrybucja Linuksa, oczekuję powłoki POSIX ze wspólnymi GNU Utils. W przypadku skryptów, które mogłyby działać poza Linuksem, oczekuję tylko pełnego standardu POSIX. Oczywiście wiele skryptów jest specyficznych dla Linuksa lub dla dystrybucji, więc często zawęża to zakres przenośności.
Aby rozwiązać konkretny przypadek skryptu,
ten wklejony skrypt jest komplementem powłoki POSIX, zawsze piszę kompatybilny z Dash.
źródło
sudo
instalacji. Wymaga wykonania superużytkownika i można go użyć,sudo
jeśli jest dostępny. Jeślisudo
nie jest dostępny, skrypt musi zostać uruchomiony jako użytkownik root, inaczej będziedie
.sudo -l
. Niestety w tej sytuacji nie można go użyć, ponieważ może wymagać podania hasła. Myśląc o tym ostrożniej, wydaje mi się, że całą koncepcję można najlepiej osiągnąć poprzez test na dystrybucję. Używanie,su -c
chyba że uruchamianiesu
domyślnej wyłączonej dystrybucji, w takim przypadku używaniesudo su -c
. Jak wspomnieli inni, najlepiej pozostawić podniesienie użytkownika superużytkownikowi, uważam, że wszelkie rozglądanie się wokół jest dla wygody.sudo
. Powinno to działać poprawnie w większości dystrybucji, przy założeniu domyślnychsu
/sudo
konfiguracji. Wiem, że przestarzałe Ubuntu, wcześniejlsb_release
, musiałoby zostać rozwiązane ... Ale to naprawdę jest tylko przykład, i oczywiście można go rozszerzyć.