Dlaczego chmod 777 -R / pozostawia system bezużyteczny?

52

Udzielam wszystkim pozwolenia na robienie czegokolwiek, ale dlaczego system zawiesza się, dając tylko uprawnienia? Zmieniam tylko uprawnienia, nie zmieniając plików.

Brij Raj Kishore
źródło
2
Myślę, że to nie zawiesza, ale po prostu przerywa proces uruchamiania w pewnym momencie. Jeśli spojrzysz na to /var/log/syslog, odkryjesz nawet powód.
Cześć Angel
7
Ważne jest, aby wiedzieć, że nawet jeśli to nie popsuło, nie „pozwoliłoby wszystkim na nic”. Nadal byłaby duża liczba działań, które mogłaby wykonać tylko „rootowanie” (a dokładniej proces o efektywnym UID zero).
zwolnienie
6
@Glen, jeśli przez „pokrewny” rozumiesz „dokładny duplikat, który pokazuje, dlaczego powinniśmy być w stanie oznaczyć jako duplikat w różnych witrynach”, to na pewno! świetny link. ;)
underscore_d
4
Bardzo chciałbym usłyszeć historię o tobie, która zadaje to pytanie.
Dewi Morgan

Odpowiedzi:

104

Jest kilka powodów.

Po pierwsze, oprócz zwykłych uprawnień do odczytu / zapisu / wykonania, są jeszcze inne bity, które zawierają uprawnienia do plików. W szczególności setuidi setgid. Po uruchomieniu programu z jednym z tych bitów uprawnień otrzymuje on „efektywny identyfikator UID” i / lub „skuteczny identyfikator GID” właściciela programu, a nie użytkownika, który go uruchomił. Umożliwia to uruchamianie programów z większą liczbą uprawnień niż użytkownik, który je uruchomił. Jest używany przez wiele kluczowych narzędzi systemowych, w tym sui sudo. Twoje chmodpolecenie usuwa te bity, pozostawiając narzędzia bezużyteczne.

Po drugie, niektóre programy (zwłaszcza ssh) sprawdzają poczytalność uprawnień do plików i odmawiają używania plików z uprawnieniami, które uważają za niepewne. Zmniejsza to ryzyko nieostrożnego administrowania przypadkowego pozostawienia dziur bezpieczeństwa, ale sprawia, że ​​radzenie sobie z usuniętymi uprawnieniami do plików jest tym bardziej bolesne.

Peter Green
źródło
41

Krótka odpowiedź.

System Linux wymaga określonych uprawnień dla niektórych programów, takich jak sudoitp.

Po uruchomieniu chmod 777 -R /wyczyścisz wszystkie uprawnienia i zastąp je 777. To sprawia, że ​​system nie nadaje się do użytku, chyba że ręcznie przywrócisz wszystkie uprawnienia.

W praktyce instalacja jest znacznie szybsza i łatwiejsza.

Problem polega na tym, że wiele programów systemowych zaprojektowano w taki sposób, że nie uruchamiają się, jeśli „nie lubią” uprawnień. Jest to zrobione ze względów bezpieczeństwa.

Myślę, że ważniejsze jest wyjaśnienie, w jaki sposób obsługiwać projekt systemu w praktyce, niż wyjaśnienie, dlaczego każdy program nie działa z niewłaściwymi uprawnieniami.

Jeśli naprawdę chcesz, aby wszyscy użytkownicy mieli nieograniczone uprawnienia w Ubuntu, możesz dodać wszystkich użytkowników do sudogrupy zamiast zmieniać uprawnienia do plików i katalogów. Będzie to miało taki sam efekt, ale nie zniszczy systemu.

Innym sposobem (bardzo złym) jest aktywacja konta root i zezwalanie wszystkim na logowanie się jako root.

Pilot 6
źródło
11
Może ktoś poświęci czas i udzieli szczegółowej odpowiedzi ;-)
Pilot6
1
Mógłbym wskazać lepszy sposób, aby pozwolić wszystkim na zrobienie wszystkiego w tym systemie - ale napisanie szczegółowego artykułu na temat tego, dlaczego każdy plik binarny potrzebuje określonych uprawnień, ustawień i flag, to trochę za dużo, imho. ;-)
Phillip -Zyan K Lee- Stockmann
4
Systemy Linux nie są zaprojektowane tak, aby każdy mógł zrobić wszystko. Możesz włączyć konto root i każdy może zalogować się jako root. To głupie, ale tak właśnie jest.
Pilot6
9
Więc Pilot6 masz na myśli powiedzieć, że programy systemowe są zaprojektowane w taki sposób, że jeśli pozwolenie pójdzie nie tak, to nie będą mogły / nie będą działać poprawnie? I proszę Pilot6, jeśli to możliwe, proszę podać głębszą odpowiedź wraz z przykładami i wyjaśnieniem, dlaczego niektóre aplikacje wymagają ograniczonych uprawnień. Dzięki.
Brij Raj Kishore,
13
@Goldname Awaria jest błędem - cała liczba programów mówi: „Nie mogę wykonywać krytycznych funkcji z systemem w tym stanie, więc przerywam”
Shadur
32

chmod ma subtelne niuanse.

chmod 0777zachowuje się inaczej niż chmod u+rwx,g+rwx,o+rwxto, że setuid i setgid są zerowane przez pierwszy i zachowywane przez ten drugi.

Właśnie dlatego system stał się bezużyteczny. Usunąłeś niezbędny setuid z kilku programów.

Oto lista plików setuid lub setgid na moim laptopie z Linuxem Fedora 23:

[root@fedora23lnvr61]# find / -perm /g+s,u+s
/var/log/journal
/var/log/journal/75e870eb13c74fbf97556a32ecf80ea2
/opt/google/chrome/chrome-sandbox
/usr/bin/rogue
/usr/bin/gnuchess
/usr/bin/locate
/usr/bin/umount
/usr/bin/lbrickbuster2
/usr/bin/gpasswd
/usr/bin/crontab
/usr/bin/fusermount
/usr/bin/su
/usr/bin/at
/usr/bin/newuidmap
/usr/bin/sudo
/usr/bin/pkexec
/usr/bin/mount
/usr/bin/chsh
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/chage
/usr/bin/chfn
/usr/bin/write
/usr/bin/newgidmap
/usr/sbin/mount.nfs
/usr/sbin/lockdev
/usr/sbin/netreport
/usr/sbin/userhelper
/usr/sbin/usernetctl
/usr/sbin/unix_chkpwd
/usr/sbin/pam_timestamp_check
/usr/libexec/kde4/kdesud
/usr/libexec/kde4/kpac_dhcp_helper
/usr/libexec/dbus-1/dbus-daemon-launch-helper
/usr/libexec/qemu-bridge-helper
/usr/libexec/openssh/ssh-keysign
/usr/libexec/spice-gtk-x86_64/spice-client-glib-usb-acl-helper
/usr/libexec/utempter/utempter
/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache
/usr/libexec/Xorg.wrap
/usr/lib/polkit-1/polkit-agent-helper-1
/usr/lib64/vte-2.90/gnome-pty-helper
/usr/lib64/virtualbox/VBoxSDL
/usr/lib64/virtualbox/VirtualBox
/usr/lib64/virtualbox/VBoxNetNAT
/usr/lib64/virtualbox/VBoxHeadless
/usr/lib64/virtualbox/VBoxNetDHCP
/usr/lib64/virtualbox/VBoxNetAdpCtl
/usr/lib64/virtualbox/VBoxVolInfo
/usr/lib64/vte/gnome-pty-helper
[root@fedora23lnvr61]# 

Usunąłem dziesiątki wpisów hałasu w pamięciach podręcznych i dziennikach.

wallyk
źródło
3
Czy mogę się zastanawiać, dlaczego gnuchess i łobuz są na tej liście?
WiseOldDuck
2
@WiseOldDuck: Oczekuję, że gry mają trochę, więc mogą zaktualizować swój plik „wysoki wynik”, ale nie pozwalają na to żadnemu nieuprzywilejowanemu użytkownikowi.
wallyk
3
@WiseOldDuck Jak wallyk mówi, plus, pamiętaj setuid nie nessecarially musiał użyć root (a AFAIK setgid nie jest bardzo przydatne dla użytkownika root)
StarWeaver
5
Chcielibyśmy zawracać sobie głowę wyjaśnianiem, co chmodsię dzieje i dostarczaniem przykładowych dowodów, czegoś, czego bardzo brakuje gdzie indziej.
underscore_d
1
Czy to oznacza, że chmod u+rwx,g+rwx,o+rwx -R /nie zepsuje systemu?
Dennis Jaheruddin
15

Oprócz innych odpowiedzi: usunąłeś również „lepki bit” /tmp(który zwykle ma uprawnienia 1777), co może powodować inne nieoczekiwane problemy, ponieważ programy będą mogły zapisywać lub usuwać pliki tymczasowe innych użytkowników.

Lepki bit jest specjalnym zezwoleniem, które pozwala każdemu na tworzenie plików /tmp, ale pozwala tylko osobie, która je utworzyła, przenieść lub usunąć.

Ben XO
źródło
4
„a to uniemożliwiłoby korzystanie z katalogu system / tmp wszystkim osobom innym niż root”. - To nie wydaje się właściwe. Nadal pozwoliłby każdemu na korzystanie z katalogu system / tmp. Nie ma potrzeby korzystania z lepkiej wersji, jeśli użytkownik, grupa i inni mają wszystkie prawa. Umożliwiłoby to jednak każdemu usunięcie plików innych osób.
hvd,
1
więc Ben Jeśli uruchomię chmod 1777 -R /, to nie powinno być problemu, ponieważ nie usuwam lepkiego bitu? -
Brij Raj Kishore,
Dzięki @hvd - masz rację i nieznacznie zmieniłem post, aby to odzwierciedlić.
Ben XO
@BrijRajKishore, pozostaje pytanie, dlaczego robisz to w pierwszej kolejności. Ubuntu i zawarte w nim programy nie są zaprojektowane z wielu powodów do uruchamiania „bez uprawnień”. Bardziej rozsądne byłoby „su”, aby zamiast tego zrootować.
Ben XO
1
Nie wiadomo, czy spowoduje to awarię. Jest całkiem możliwe, że tak się stanie, ponieważ nagle aplikacje będą mogły robić ze sobą pliki tymczasowe - być może przypadkowo - a to może spowodować awarię. Ponieważ Ubuntu nigdy nie był tak testowany, prawdopodobnie będziesz pierwszą osobą, która się o tym dowie. :-) Z drugiej strony ustawienie lepkiego bitu na każdym folderze w systemie może powodować wiele innych problemów, z aplikacjami, które spodziewały się, że będą mogły manipulować programami z powodu uprawnień grupowych do folderu (tj. Folderów z uprawnieniami 2777).
Ben XO