Jeśli dobrze rozumiem filozofię Linuksa, sudo
należy jej używać oszczędnie, a większość operacji powinna być wykonywana jako użytkownik o ograniczonych uprawnieniach. Ale to nie wydaje się mieć sensu, ponieważ zawsze muszę wprowadzać dane sudo
, czy zarządzam pakietami, edytuję pliki konfiguracyjne, instaluję program ze źródła lub co masz. To nie są nawet techniczne rzeczy, tylko coś, co robi zwykły użytkownik.
Bardzo przypomina mi UAC systemu Windows, który ludzie albo wyłączają, albo konfigurują tak, aby nie wymagali hasła (tylko kliknięcie). Ponadto wielu użytkowników systemu Windows również ma konta administratora.
Widziałem też, jak niektórzy ludzie wyświetlają polecenia, które wymagają sudo
uprawnień bez sudo
. Czy mają skonfigurowany system w taki sposób, aby sudo
nie był wymagany?
sudo
robić wszystko, co wiąże się ze zmianą systemu, jeśli działasz tylko na własnych plikach / pulpicie, nie wpływasz na nikogo, więc nie potrzebujesz podwyższonych uprawnień. Jeśli wykonujesz uprzywilejowane polecenia bez sudo, prawdopodobnie jesteś już superużytkownikiem (tj. Rootem) i zwykle jest to mniej wskazane niż używanie sudo do konkretnych zadań ogólnosystemowychsudo
kiedy nie powinieneś? Normalne polecenia użytkownika uniksowego powinny składać się głównie zcd
,ls
przenoszenia, kopiowania, usuwania i edycji plików, do których mają dostęp. Jeśli twoje zwykłe polecenia nie składają się z tego, prawdopodobnie nie jesteś zwykłym użytkownikiem Uniksa.sudo !!
do ponownego uruchomienia ostatniego polecenia, które wpisałeś z sudo na początku.Odpowiedzi:
Wspomniałeś o tych funkcjach administracji systemu
jak rzeczy, które
W typowym systemie dla wielu użytkowników nie są to zwykłe działania użytkownika; administrator systemu martwi się tym. Zwykli użytkownicy (nie „uprzywilejowani”) mogą następnie korzystać z systemu bez obawy o jego utrzymanie.
W systemie domowym tak, ostatecznie musisz zarówno administrować systemem, jak i korzystać z niego.
Czy to naprawdę takie trudne w użyciu
sudo
? Pamiętaj, że jeśli jest to tylko twój system, nie ma powodu, dla którego nie możesz wskoczyć doroot
powłoki (sudo -s
- zobacz ten post, aby zapoznać się z różnymi sposobami uzyskania powłoki roota) i / lub skonfigurować,sudo
aby nie pytać o hasło.źródło
sudo
- to jak kontrola zdrowia psychicznego.Sudo / Root jest używany za każdym razem, gdy robisz coś, na co zwykły użytkownik nie powinien mieć ryzyka uszkodzenia / zmiany konfiguracji systemu w sposób, na który administrator systemu normalnie nie pozwoliłby.
Wszystkie są technicznie funkcjami administracyjnymi i mogą drastycznie uszkodzić twój system, jeśli zrobisz coś nieprawidłowego. W środowisku korporacyjnym, jako Sysadmin, są to rzeczy, których NIE pozwoliłbym mojemu użytkownikowi zrobić bez mojej wyraźnej wiedzy, stąd sudo.
Na przykład, jeśli plik pakietu / konfiguracji mógłby zostać zmodyfikowany bez podniesionych uprawnień, byłoby bardzo proste dla zewnętrznego źródła, aby po prostu wykonać zdalny kod, który mógłby złamać / naruszyć system. Wymuszając, aby te akcje wymagały dostępu do konta root, zmusza Cię jako użytkownika do podjęcia decyzji, czy te akcje mają miejsce.
Jest bardzo podobny do systemu
UAC
Windows, w rzeczywistości system Windows wpadł na pomysłUAC
.Oferta, którą otrzymujesz przy pierwszym użyciu sudo, jest bardzo trafna i bardzo ważna:
Szczególnie # 2, Pomyśl zanim napiszesz. Jest to ważny powód, dla którego sudo istnieje, kiedy wpiszesz polecenie i odrzuci „musi być root, aby wykonać tę akcję”, zmusza cię do zatrzymania się i MYŚL o tym, co faktycznie robisz.
źródło
Musisz wykonać te polecenia jako superużytkownik, ale nie musisz ich wykonywać za pomocą
sudo
. Możesz na przykład zamiast tego użyćsu
lubdoas
(zamiennik OpenBSD dlasudo
), lub po prostu zalogować się jako root.Jeśli więc wyświetlą tutaj swoje polecenia bez
sudo
, zakładają, że czytelnik użyje swojego ulubionego sposobu wykonywania tych poleceń jako superużytkownika.Z pewnością nie oznacza to, że mogą wykonywać te polecenia jak zwykły użytkownik.
źródło
sudo -i
lub podobnego narzędzia, aby uzyskać powłokę roota, a następnie rozpocząć uruchamianie poleceń roota bez potrzeby poprzedzania każdego z nich słowemsudo
# vi /etc/hosts
Zamiast nieuprzywilejowanego monitu$ vi /etc/hosts
(Bash zastosuje się do konwencji, jeśli użyjesz\$
wPS1
)Jedną z oferowanych funkcji bezpieczeństwa jest
sudo
to, że możesz mieć system bezroot
hasła , abyroot
użytkownik nie mógł zalogować się bezpośrednio. Zapewnia to dodatkową ochronę użytkownikom, którzy wybiorą słabe hasła - atakujący próbujący wymusić hasło (za pośrednictwem SSH lub w inny sposób) będzie musiał najpierw ustalić prawidłową nazwę użytkownika.Kolejnym aspektem jest bardziej szczegółowe zarządzanie uprawnieniami. Pomyśl o
make; sudo make install
vsmake; make install
jako rootie. Wiele rzeczy może się nie udaćmake
. Źle skonfigurowane narzędzie może próbować zastąpić ważny plik systemowy, „wyczyścić”/lib
zamiast bieżącego katalogu, zużyć całą dostępną pamięć RAM i zawiesić system itp.make install
To niewielkie, proste działanie ze znacznie mniejszym prawdopodobieństwem wystąpienia błędu krytycznego.źródło
Chodzi o to, że historycznie system naprawdę ma być współużytkowany przez wielu użytkowników, którzy po prostu logują się, robią pewne rzeczy, a następnie wylogowują się. Zatem różnica między administratorem a zwykłym użytkownikiem. Takie systemy nadal istnieją w laboratoriach uniwersyteckich i możesz wyraźnie poczuć różnicę, jeśli używasz takich komputerów. Komputer domowy, na którym jesteś jedynym użytkownikiem, a także musi działać jako administrator, to naprawdę znacznie późniejszy rozwój.
źródło
Komputer to narzędzie. Spróbujmy analogii z innym narzędziem, powiedzmy patelnią. Czasami musisz dbać o swoją patelnię. Na przykład musisz wyczyścić go mydłem do naczyń. Czy powiedziałbyś, że mydło do naczyń jest niezbędnym składnikiem każdego przepisu, do którego używasz patelni? Nigdy nie zobaczysz „mydła do naczyń” wymienionego jako składnik książek kulinarnych. Jest to potrzebne, ale przygotowanie narzędzia to inna sprawa, więc książki kucharskie o tym nie wspominają. Patelnia musi zostać wyczyszczona, ale nie do tego jest przeznaczona.
Tak samo jest z twoim komputerem. Trzeba go skonfigurować i zająć się nim, ale nie do tego jest przeznaczony. Zajmujesz się tym, konfigurujesz go, aby działał poprawnie. Gdy to zrobisz, możesz z niego korzystać nie jako administrator systemu, ale jako użytkownik. Po to jest zrobione. Kiedy jesteś użytkownikiem, nie potrzebujesz już sudo . Po prostu użyj wcześniej przygotowanego narzędzia. Oczywiście od czasu do czasu będziesz musiał korzystać z uprawnień administratora, tak jak musisz czyścić patelnię tak często, jak używasz jej do gotowania.
Więc bez przesady, moglibyśmy powiedzieć, że nigdy nie potrzebujesz sudo (lub hasła roota) do korzystania z komputera. Tylko w celu przygotowania komputera.
źródło
sudo
lub po prostu pójść na mistrz kuchni i zrobićsu
.Założę się, że to dlatego, że używasz oprogramowania GUI do wszystkiego oprócz zadań administracyjnych systemu lub mówisz o serwerach Linux, w którym to przypadku większość dostępu będzie naturalnie administracją systemu. Dlatego może się wydawać, że w ogóle wszystko wymaga powłoki
sudo
.Można również używać powłoki do codziennych zadań. Zarządzanie plikami osobistymi
~
, edytowanie plików, czatowanie na IRC, kompilowanie kodu, przeglądanie Internetu - wszystko to jest możliwe w powłoce. Używam nawetbc
jako kalkulatora. Niektóre rzeczy są łatwiejsze do zrobienia za pośrednictwem GUI, niektóre są łatwiejsze do wykonania za pomocą powłoki - nawet jeśli wolisz używać GUI, powłoka często przoduje w operacjach wsadowych i automatyzacji (pomyśl skrypty powłoki). Osobiście korzystam z tych, które są najlepsze dla danego zadania.W niektórych przypadkach dobrym pomysłem jest skonfigurowanie systemu tak, aby nie trzeba było używać go za
sudo
każdym razem do operacji, które domyślnie wymagają rootowania, ale raczej nie powodują problemów. Jednym z przykładów jest to, że pracuję ze sprzętem, który wymaga użycia portów szeregowych i skonfigurowałem reguły udev, aby zapewnić dostęp do urządzeń jako mój zwykły użytkownik bez konieczności rootowania.Nie sądzę, że dobrym pomysłem jest skonfigurowanie,
sudo
aby nie wymagało hasła. Zbyt łatwo zepsuć cały system jednym błędnym poleceniem lub złośliwym skryptem.Jeśli chcesz wykonywać zadania, które bezwzględnie wymagają rootowania, dlaczego nie pozostawić trwałej
sudo -s
powłoki roota działającej w oknie terminala? Wtedy będzie dostępny bez konieczności wpisywania hasła i nie będzie tak łatwy w użyciu przez przypadek. Nawet ustawiłem mój monit powłoki, aby był jasno czerwony, gdy znajduje się w powłoce root.źródło
Domniemany przymiotnik związany z nimi wszystkimi polega na tym, że są to zmiany systemowe lub globalne . Musisz wziąć pod uwagę pochodzenie systemu Unix jako systemu dla wielu użytkowników 1, w którym kilku użytkowników zdalnie korzystałoby z tej samej instalacji. Jeden laik nie miałby sensu zezwalać na zmianę ustawień globalnych dla wszystkich użytkowników. To był administrator, root, przywilej i odpowiedzialność.
W ustawieniach dla wielu użytkowników masz wstępnie zainstalowane oprogramowanie i ich konfigurację w całym systemie odpowiednio w
/usr
i/etc
. Dotknięcie tych lokalizacji wymagałoby uprawnień roota. Ponieważ jednak oprogramowanie Unix jest napisane z myślą o wielu użytkownikach, możesz kompilować i instalować oprogramowanie w$HOME
katalogu 2 , a także mieć własne pliki konfiguracyjne w domu, w których możesz swobodnie edytować pliki, nie będąc superużytkownikiem.Oprócz instalowania własnego oprogramowania w domu, większość oprogramowania systemowego odczyta konfigurację specyficzną dla użytkownika od
$HOME
razu po pierwszym odczytaniu konfiguracji/etc
. Umożliwia to dostosowanie większości elementów bez konieczności odchodzeniaroot
.Dzięki komputerowi domowemu w jednym głównym ustawieniu użytkownika możesz używać
sudo
i zrootować swoją drogę do rzeczy, które lubisz. Ale zwyczajowo nie należy dotykać konfiguracji aplikacji,/etc
ale zamiast tego zawsze zapewnia konfigurację specyficzną dla użytkownika w domu. W ten sposób możesz pozwolić swojemu menedżerowi pakietów zresetować konfiguracje systemowe w przypadku aktualizacji. Instalowanie nowego oprogramowania w całym systemie jest w porządku dla jednego użytkownika; pakiety dystrybucyjne nie zakładają alternatyw, więc jest to łatwe wyjście.Pozwolę mojemu menedżerowi pakietów instalować rzeczy globalnie, ale wszelkie skompilowane ze źródeł i samodzielnie wykonane rzeczy, które pozostawiam
$HOME
. I nie muszę za to sudo.Jeśli masz pliki danych, przechowuj je poza sobą
$HOME
, nie krępuj sięchown
lubchgrp
katalogi na swoje nazwisko, abyś mógł uzyskać dostęp do plików bezsudo
.[1] (nieco ironiczne, ponieważ Unix miał być wersją systemu operacyjnego Multics dla jednego użytkownika)
[2] (jeśli system na to pozwala, nie instalując partycji domowych jako noexec)
źródło
W rodzajach systemów wieloużytkownikowych, dla których zaprojektowano UNIX (i, z założenia, Linux), nie są to zwykłe działania użytkownika . Administrator systemu może je wykonać, ale nie typowi użytkownicy, dlatego system prosi o upewnienie się, że sysadmin naprawdę chce to zrobić.
Ale nawet w systemach domowych dla jednego użytkownika nie są to zwykłe działania użytkownika . Zwykle można to zrobić przy początkowej konfiguracji systemu, ale po zakończeniu typowy użytkownik nie powinien tego robić zbyt często . Większość typowych użytkowników po prostu pracuje na plikach w swoim katalogu domowym (lub jego podkatalogach), używając programów / pakietów, które zostały już zainstalowane, i nie jest to potrzebne
sudo
. Mogą też działać w specjalnym katalogu gdzieś indziej w systemie, który został przeznaczony do tego celu, i musiszsudo
to skonfigurować, ale zazwyczaj musisz to zrobić tylko raz.Dlaczego to ma znaczenie? Ponieważ „pojedynczy użytkownik” jest mylącą nazwą: nie jesteś jedynym użytkownikiem swojego komputera, nawet jeśli jesteś jego jedynym ludzkim użytkownikiem . Nawet w typowej domowej instalacji Linuksa wiele programów jest skonfigurowanych do korzystania z maszyny na różne sposoby, często symulując coś, co człowiek może zrobić, jeśli ma czas i uwagę: wolne kopie zapasowe, aktualizacje, skanowanie w poszukiwaniu złośliwego oprogramowania i lubić. Przez większość czasu te zastosowania są całkowicie łagodne, ale nawet w przypadku niektórych z nich rozsądne jest upewnienie się, że użytkownik naprawdę chce to zrobić. A kiedy te przypadki się pojawią, właśnie po to
sudo
. Komputer tylko się sprawdza, aby upewnić się, że naprawdę to Ty chcesz zrobić to, co ktoś (może ty, może program) powiedział, że zrobiłeś. I to nawet nie wchodzi w możliwość złośliwego oprogramowania, którego z pewnością nie chcesz maskować jako siebie.źródło
Prawdopodobnie nie jest to tak powszechne, jak pokazano, ale zwykle dzieje się, gdy coś nieformalnego wewnętrznie wymaga znacznie bardziej ogólnego uprzywilejowanego wywołania systemowego, aby osiągnąć wynik, na przykład:
umount
jest poważnym poleceniem, ponieważ można przy nim odmontować wiele rzeczy.ifup
itp.) Jest przeznaczona tylko dla administratora.Systemy ogólnie ewoluują, aby zmniejszyć liczbę takich przypadków. Pamięci USB można teraz montować przez użytkownika, a sieci można podłączać. Ale nie zawsze tak było.
źródło
Założenie: to jest twój system i twoje dane.
Musisz tylko wyważyć ryzyko przypadkowego usunięcia danych lub zepsucia systemu operacyjnego w porównaniu z łatwością robienia rzeczy bez pisania
sudo
za każdym razem.Rutynowo loguję się i pracuję jako root na moich serwerach domowych, ponieważ
mogęto jest łatwiejsze.Zostaniesz poinformowany, że możesz uruchomić broń nuklearną, jeśli nie pójdziesz przez świętego,
sudo
ale w rzeczywistości ludzie mająroot
moc (*) na wielu urządzeniach (telewizor, telefon, toster, system Windows (jak wspomniałeś)). Linux nie jest tu inny, chociaż wielu lubi myśleć inaczej.BTW
UAC
nie został modelowany,sudo
ponieważ jego rolą człowieka jest (poza tym, że twoje życie jest nieszczęśliwe), aby upewnić się, że zobaczysz, kiedy złośliwe oprogramowanie chce robić rzeczy w Twoim imieniu.(*)
root
uprawnienia są definiowane jako zdolność do wykrywania ważnych danych. Stosuje się powiedzenie „z wielką mocą przychodzą wielkie problemy” (czy cokolwiek to było).Jeśli moje założenie jest błędne , nadal musisz zważyć ryzyko powyżej, ale istnieje więcej zmiennych (Twoja praca, zdjęcia zrobione przez małżonka i przechowywane na tym samym laptopie, ...)
źródło
rm -rf ~/
bez specjalnych uprawnień. Z drugiej strony nie możesz zablokować telefonu komórkowego lub telewizora bez uprzedniego zrootowania go.W obronie osoby, która napisała pierwsze pytanie, miałem to samo pytanie w przeszłości, ale podjąłem inne podejście.
Większość odpowiedzi tutaj można po prostu odtworzyć w pętli, ponieważ wszystkie podkreślają ten sam punkt dotyczący sudo i roota. Dodaję inną perspektywę do tego tematu:
Sposób, w jaki nauczyłem się Uniksa i Linuksa na lewą stronę, było użycie jednego z moich komputerów jako „świnki morskiej”. Zainstalowałem SCO Linux, a ostatecznie Solaris, a potem Linux znacznie później, cały czas radośnie eksperymentując jako root, aby móc czytać i / lub eksplorować hierarchię katalogów i wszystkie pliki z nieograniczonym dostępem, tworząc również konta „normalnych użytkowników” w moim domu -rosła skrzynka dla wielu użytkowników, mimo że byłem jedynym użytkownikiem. I cieszę się, że tak to zrobiłem. Nauczyłem się bardzo dużo o „filozofii uniksowej” i sposobie, w jaki Unix był przeznaczony do moich eksperymentów.
Świetnie się uczyłem o bezpieczeństwie, a także uruchamiałem niebezpieczne komendy, wpisując rm -rf / * w terminalu jako root. (NIE RÓB TEGO! BĘDZIE WĄŻ TWÓJ SYSTEM !!) Zrobiłem takie rzeczy i wiele innych poleceń, aby zobaczyć, co się stanie w czasie rzeczywistym. Robiłem takie rzeczy, znając konsekwencje, ale mimo to wiele się nauczyłem. Korzystałem z SCO Unix LONG zanim jeszcze istniała sieć (tak, jestem taka stara!), A eksperymentowanie w ten sposób było nieocenione dla mojej nauki.
Mówię więc, że jeśli nie masz nic przeciwko ponownemu instalowaniu, gdy coś pójdzie nie tak, użyj su lub zaloguj się jako root, jak chcesz i skonfiguruj / zhakuj! Dzięki temu nauczysz się piekła.
Pamiętaj tylko, że często powtarzana rada została powtórzona z ważnego powodu: Protokoły najlepszych praktyk ewoluowały w ciągu dziesięcioleci wraz z rozwojem compsec, i POWINNYŚ zwracać na nie uwagę, nawet jako użytkownik domowy / pojedynczy systemu . Dzięki temu dobra higiena / nawyki sysadmin staną się dla ciebie drugą naturą.
Tylko trochę do przemyślenia na temat su i sudo. Miłego hakowania!
źródło