Terminal dla początkujących, cz3: uprawnienia
Komendy, które dziś poznasz dają Ci bardzo duże możliwości, dlatego musisz być bardzo być OSTROŻNY.
Wiem, że wszyscy słyszeliście o czymś takim jak root, uprawnieniach, sudo i innych takich, ale czym to wszystko jest? By to złapać, musisz zrozumieć coś o Uniksach.
Został on zaprojektowany jako system posiadający wielu użytkowników, więc w tym samym czasie może być zalogowanych ich wielu. Niezbyt dobrym pomysłem
byłoby dać każdemu wolną rękę we wszystkim, co dotyczy Twojego systemu, prawda? Nie muszę Ci chybs mówić jakie byłyby trgo skutki. Zbliżamy się do pojęć
dotyczących uprawnień i ograniczeń kont użytkowników. Każdy użytkownik powinien mieć dostęp tylko do tych plików i katalogów, do których posiada uprawnienia.
Wiesz, że możesz odczytać wszystkie pliki w systemie ale większości z nich nie możesz edytować. Jest to związane z tym, że posiadasz prawa tylko do ich odczytu.
Wracajmy jednak do tematu, świeżo utworzony użytkownik ma uprawnienia do modyfikowania rzeczy tylko w swoim katalogu domowym i ewentualnie na zewnętrznych
nośnikach. Jednakże, cały czas istnieje potrzeba zarządzania systemem. I tu wchodzi do gry pojęcie Super Użytkonika pospolicie zwanego rootem. Konto administratora
ma dostęp do wszystkich plików i może z nimi robić wszystko. Zdajesz sobie sprawę, gdzie wykorzystanie tego mogłoby mieć złe konsekwencje? Już śpieszę z
przykładem (NIE WYKONUJ GO U SIEBIE, PONIEWAŻ WYCZYŚCI ON TWÓJ DYSK):
sudo rm -rf /*
Jak na ironię, tak restrykcyjne podejście do uprawnień, w moim przekonaniu, zabezpiecza system oparty na Uniksie przed różnego rodzaju wirusami i robakami.
Zastanówmy się, jeśli zostaniesz zainfekowany będąc na swoim zwykłym koncie, potencjalny wirus może napsocić tylko tam, gdzie posiadasz uprawnienia. Ma to sens,
nie? Moim zdaniem, jest to jedna z najsłabszych stron systemów ze stajni Microsoft. Np. Windows XP domyślnie daje użytkownikom uprawnienia administratora.
Naprawdę uciążliwe jest próbowanie i robienie czegoś na ograniczonym koncie w tym systemie, nie? Poza tym, większość ludzi, przez cały czas używa konta
administratora. Tryb administratora == root w XP, więc nie jest żadną niespodzianką to, że wirusy panoszą się tam na lewo i prawo, czego powodem jest oczywiście pełny
dostęp do wszystkiego w komputerze. Tak czy inaczej, to tylko moje żale, wracajmy do nauki.
Jak uzyskać prawa roota w celu zarządzania systemem?
W większości dystrybucji Linuksa, istnieją 2 typy kont ale jak wielu z was zauważyło, nie występują one w przypadku Ubuntu/Kubuntu/Edubuntu/Xubuntu (od teraz będę
używał „*buntu”). Dostępne są tylko konta użytkowników. W pewnym sensie, pierwsze konto użytkownika jest jakby czymś, pomiędzy root a zwykłym kontem,
ponieważ tylko pierwszy użytkownik może używać komendy sudo do uzyskiwania uprawnień administratora. Sprawdź to! Utwórz inne konto i spróbuj wykonać coś z
sudo, nie da się! To również powód, dla którego pierwszy użytkownik powinien mieć BARDZO mocne hasło, ponieważ to samo hasło wykorzystywane jest z sudo.
Odstępstwa od tego zostały omówione na wiki.ubuntu.com/RootSudo.
Tak czy owak, dosyć owijania w bawełnę. Chcesz wiedzieć jak się wykorzystuje te rzeczy, prawda? Dobrze. Ale najpierw zapamiętaj co powiedział Stan Lee:
With Great Power comes Great Responsiblity (Z wielką władzą wiąże się wielka odpowiedzialność)
Bądź więc na bieżąco z tymi zagadnieniami, kiedy będziesz nimi władał – potraktuj to jak prowadzenie samochodu! Piłeś? Nie siedź na roocie! Dobrze?! To zaczynamy
zabawę…
Chown
Chown służy do zmiany właścicieli plików i katalogów. Nie używaj tego w folderach /etc, /var, /bin, /usr (z wyjątkiem /usr/local), /boot i /sbin. TO SPOWODUJE
POWAŻNE KOMPLIKACJE, KTÓRE MOGĄ BYĆ NIE DO USUNIĘCIA PRZEZ POCZĄTKUJĄCYCH UŻYTKOWNIKÓW! Jako użytkownik do którego W TEJ
CHWILI należy plik (lub jako root/sudo):
chown nowy_użytkownik plik
Wszystko jasne, z wyjątkiem opcji. Istnieje ich kilka ale tylko jedna z nich jest dosyć często wykorzystywana, by o niej wspomnieć, to -R, która sprawia że chown pracuje
rekursywnie, innymi słowy, zmienia podane ustawienia wszystkiemu wewnątrz katalogu (NIE WYKONUJ CHOWN -R TY /). Przepraszam za te ostrzeżenia, ale chcę
was jedynie uczulić na tym punkcie… Chown jest łatwy. Zabawa z uprawnieniami jest troszkę trudniejsza.
Chmod
Uprawnienia CZEGOKOLWIEK można ustawić na 9 sposobów (tak na dobrą sprawę 12, ale ostatnie 3 nie odgrywają zbyt ważnej roli). Odczyt/Zapis/Wykonanie dla
użytkowników, tak samo dla grup i dla pozostałych. 9 ustawień i na dodatek same ładnie się tłumaczą. Jeśli prawo do wykonywania jest ustawione dla wszystkich, to
znaczy, że każdy może uruchomić dany program. Łapiesz to? Wspaniale. Przedstawmy składnię komendy:
chmod [uprawnienia] plik
Tak jak przedtem, niewiele jest popularnych opcji, tutaj będą to -R (tryb rekursywny) i -v (wyświetli wszystkie informacje). Zapytacie, co znajduje się w miejscu
„uprawnienia”? Umieszczamy tam prawa, jakie chcemy nadać plikowi lub katalogowi. Właśnie tutaj jest cała trudność chmod, ponieważ istnieje kilka sposobów na
przedstawianie tego. Osobiście uważam, że metoda ósemkowa (OCTAL-MODE) jest łatwiejsza. Składa się z 3 cyfr. Pierwsza z nich odnosi się do właściciela, kolejna do
grupy użytkowników do której należy plik i ostania do wszystkich pozostałych. Aby faktycznie zmienić uprawnienia, trzeba przypomnieć sobie trochę matematykę. Ale to
banalne. Jeśli chcesz dodać prawo do odczytu, dodajesz 4. Do zapisu – 2. I na koniec, aby wykonywać dodajesz 1. Może przykład bardziej to przybliży. Chcemy dać
wszystkie prawa właścicielowi, odczyt i wykonywanie grupie a pozostałym brak praw. W metodzie ósemkowej będzie to 750. Rozłóżmy to na czynniki pierwsze.
Pierwsza cyfra to prawa właściciela, racja? Więc:
7 = 4 (odczyt) + 2 (zapis) + 1 (wykonywanie)
To było proste, teraz grupa:
5 = 4 (odczyt) + 1 (wykonywanie)
No i prawa dla pozostałych wynoszą 0, ponieważ nie chcemy im na nic pozwolić :D
Teraz króciutka ściąga, którą możesz wykorzystywać. Zobacz:
7 = WSZYSTKO (odczyt/zapis/wykonywanie)
6 = odczyt + zapis
5 = odczyt + wykonywanie
4 = tylko odczyt
3 = zapis + wykonywanie (jak to może działać jeśli nie da się odczytać...)
2 = zapis
1 = wykonywanie
0 = brak
Rozumiesz? Suuuper, jeszcze na koniec mały przykład użycia tego polecenia w praktyce:
kyral@UltimateInsaneFreedomDestinyDarknessAndLight:~$ ls -lah xmaslist.txt
-rw-r--r-- 1 kyral kyral 1.9K 2005-11-30 23:51 xmaslist.txt
Widzimy, że plik posiada prawa 644. Naszła mnie ochota, by każdy mógł go edytować. Więc…
kyral@UltimateInsaneFreedomDestinyDarknessAndLight:~$ chmod 666 xmaslist.txt
kyral@UltimateInsaneFreedomDestinyDarknessAndLight:~$ ls -lah xmaslist.txt
-rw-rw-rw- 1 kyral kyral 1.9K 2005-11-30 23:51 xmaslist.txt
kyral@UltimateInsaneFreedomDestinyDarknessAndLight:~$
Bombowe, nie?