Jeśli używasz Linuksa od jakiegoś czasu (a nawet OS X), prawdopodobnie napotkasz błąd „uprawnień”. Ale czym właściwie są i dlaczego są potrzebne lub przydatne? Zajrzyjmy do środka.
Uprawnienia użytkownika
Kiedyś komputery były ogromnymi maszynami, które były niewiarygodnie drogie. Aby jak najlepiej je wykorzystać, podłączono wiele terminali komputerowych, co umożliwiło wielu użytkownikom jednoczesne prowadzenie działalności. Przetwarzanie i przechowywanie danych odbywało się na maszynie, podczas gdy same terminale były jedynie narzędziem do przeglądania i wprowadzania danych. Jeśli się nad tym zastanowić, to mniej więcej w jaki sposób uzyskujemy dostęp do danych w „chmurze”; spójrz na system Amazon Cloud MP3, Gmail i Dropbox, a zauważysz, że chociaż zmiany można wprowadzać lokalnie, wszystko jest przechowywane zdalnie.
(Zdjęcie: „głupi” terminal Zenith Z-19; zdjęcie: ajmexico )
Aby to zadziałało, indywidualni użytkownicy muszą mieć konta. Muszą mieć przydzieloną część obszaru przechowywania i muszą mieć możliwość uruchamiania poleceń i programów. Każdy otrzymuje określone „uprawnienia użytkownika”, które określają, co może, a czego nie może robić, gdzie w systemie robi, a nie ma dostępu, oraz czyje pliki mogą, a których nie mogą modyfikować. Każdy użytkownik jest również przydzielany do różnych grup, które udzielają lub ograniczają dalszy dostęp.
Dostęp do plików
W tym zwariowanym świecie wielu użytkowników już ustaliliśmy granice tego, co mogą robić użytkownicy. Ale co z tym, do czego mają dostęp? Cóż, każdy plik ma zestaw uprawnień i właściciela. Oznaczenie właściciela, zwykle związane podczas tworzenia pliku, określa użytkownika, do którego należy, i tylko ten użytkownik może zmieniać swoje uprawnienia dostępu.
W świecie Linuksa uprawnienia są podzielone na trzy kategorie: odczyt, zapis i wykonywanie. Dostęp „do odczytu” umożliwia przeglądanie zawartości pliku, dostęp „do zapisu” umożliwia modyfikację zawartości pliku, a „wykonanie” pozwala na uruchomienie zestawu instrukcji, takich jak skrypt lub program. Każda z tych kategorii jest stosowana do różnych klas: użytkownika, grupy i świata. „Użytkownik” oznacza właściciela, „grupa” oznacza dowolnego użytkownika, który należy do tej samej grupy co właściciel, a „świat” oznacza każdego i wszystkich.
Przy użyciu tych uprawnień można również ograniczyć foldery. Możesz na przykład zezwolić innym osobom w grupie na przeglądanie katalogów i plików w Twoim folderze domowym, ale nie nikomu spoza grupy. Prawdopodobnie będziesz chciał ograniczyć dostęp do zapisu tylko do siebie, chyba że pracujesz nad jakimś wspólnym projektem. Możesz także utworzyć udostępniony katalog, który umożliwi każdemu przeglądanie i modyfikowanie plików w tym folderze.
Zmiana uprawnień w Ubuntu
GUI
Aby zmienić uprawnienia do pliku, który posiadasz w Ubuntu, po prostu kliknij plik prawym przyciskiem myszy i przejdź do „Właściwości”.
Możesz zmienić, czy właściciel, grupa lub inne osoby mogą czytać i pisać, tylko czytać lub nic nie robić. Możesz również zaznaczyć pole, aby zezwolić na wykonanie pliku, a to włączy go jednocześnie dla właściciela, grupy i innych.
Wiersz poleceń
Możesz to również zrobić za pomocą wiersza poleceń. Przejdź do katalogu zawierającego pliki i wpisz następujące polecenie, aby wyświetlić wszystkie pliki na liście:
ls -al
Obok każdego pliku i katalogu zobaczysz specjalną sekcję opisującą jego uprawnienia. To wygląda tak:
-rwxrw-r–
Plik r oznacza „czytać” w oznacza „pisać”, a x oznacza „wykonaj”. Katalogi będą zaczynać się od „d” zamiast „-”. Zauważysz również, że istnieje 10 spacji, które przechowują wartość. Możesz zignorować pierwszy zestaw, a następnie są 3 zestawy po 3. Pierwszy zestaw jest dla właściciela, drugi dla grupy, a ostatni dla świata.
Aby zmienić uprawnienia do pliku lub katalogu, spójrzmy na podstawową formę polecenia chmod.
chmod [class][operator][permission] plik
chmod [ugoa][+ or –] [rwx] plik
Na początku może się to wydawać skomplikowane, ale uwierz mi, to całkiem proste. Najpierw spójrzmy na zajęcia:
- u: To jest dla właściciela.
- g: To jest dla grupy.
- o: To jest dla wszystkich innych.
- O: Spowoduje to zmianę uprawnień do wszystkich powyższych.
Następnie operatorzy:
- +: Znak plus doda kolejne uprawnienia.
- -: Znak minus usunie uprawnienia, które następują.
Nadal ze mną? Ostatnia sekcja jest taka sama, jak przy sprawdzaniu uprawnień do pliku:
- r: zezwala na dostęp do odczytu.
- w: umożliwia dostęp do zapisu.
- x: umożliwia wykonanie.
Teraz złóżmy to razem. Załóżmy, że mamy plik o nazwie „todo.txt”, który ma następujące uprawnienia:
-rw-rw-r–
Oznacza to, że właściciel i grupa mogą czytać i pisać, a świat może tylko czytać. Chcemy zmienić uprawnienia na te:
-rwxr—–
Oznacza to, że właściciel ma pełne uprawnienia, a grupa może czytać. Możemy to zrobić w 3 krokach. Najpierw dodamy uprawnienia do wykonywania dla użytkownika.
chmod u + x todo.txt
Następnie usuniemy uprawnienia do zapisu dla grupy.
chmod g-w todo.txt
Na koniec usuniemy uprawnienia do odczytu dla wszystkich innych użytkowników.
chmod o-r todo.txt
Możemy również połączyć je w jedno polecenie, na przykład:
chmod u + x, g-w, o-r todo.txt
Jak widać, każda sekcja jest oddzielona przecinkami i nie ma spacji.
Oto kilka przydatnych uprawnień:
- -rwxr-xr-x: Właściciel ma pełne uprawnienia, grupa i inni użytkownicy mogą czytać zawartość plików i wykonywać.
- -rwxr – r–: właściciel ma pełne uprawnienia, grupa i inni użytkownicy mogą tylko czytać plik (przydatne, jeśli nie masz nic przeciwko przeglądaniu twoich plików przez innych.
- -rwx——: Właściciel ma pełne uprawnienia, wszyscy inni nie mają żadnych (przydatne dla osobistych skryptów).
- -rw-rw—-: Właściciel i grupa mogą czytać i pisać (przydatne do współpracy z członkami grupy).
- -rw-r – r–: Właściciel może czytać i pisać, grupa i inni użytkownicy mogą tylko czytać plik (przydatne do przechowywania osobistych plików w sieci współdzielonej).
- -rw ——-: Właściciel może czytać i pisać, wszyscy inni nie mają żadnych (przydatne do przechowywania plików osobistych).
Jest kilka innych rzeczy, które możesz zrobić za pomocą chmod - na przykład setuid i setgid - ale są one trochę dogłębne i większość użytkowników i tak nie będzie musiała ich używać.
Pliki root lub superużytkownika i pliki systemowe
W dzisiejszych czasach nie zawsze uruchamiamy systemy, które mają wielu użytkowników. Dlaczego nadal powinniśmy martwić się o uprawnienia?
Cóż, Unix i jego pochodne - między innymi Linux, OS X - również rozróżniają rzeczy uruchamiane przez użytkownika, uruchamiane przez administratora lub z uprawnieniami administratora, od rzeczy uruchamianych przez sam system. W związku z tym rzeczy, które są integralną częścią systemu, wymagają uprawnień administratora, aby można je było zmienić lub uzyskać do nich dostęp. W ten sposób niczego nie zepsujesz przypadkowo.
W Ubuntu, aby dokonać zmian w plikach systemowych, użyj „sudo” lub „gksudo”, aby uzyskać odpowiednik uprawnień administratora. W innych dystrybucjach przełączasz się na „root” lub „superużytkownika”, który faktycznie robi to samo, dopóki się nie wylogujesz.
Należy pamiętać, że w obu tych okolicznościach zmiana uprawnień do plików może prowadzić do niedziałania programów, niezamierzonej zmiany właściciela pliku na użytkownika root (zamiast właściciela) i uczynienia systemu mniej bezpiecznym (poprzez przyznanie większej liczby uprawnień). W związku z tym zaleca się, aby nie zmieniać uprawnień do plików - zwłaszcza plików systemowych - chyba że jest to konieczne lub wiesz, co robisz.
Uprawnienia do plików mają na celu zapewnienie podstawowego systemu bezpieczeństwa wśród użytkowników. Poznanie ich działania może pomóc w skonfigurowaniu podstawowego udostępniania w środowisku wielu użytkowników, chronić pliki „publiczne” i dać wskazówkę, kiedy coś pójdzie nie tak z prawami własności do plików systemowych.
Myślisz, że możesz łatwiej wyjaśnić rzeczy? Masz korektę? Chcesz przypomnieć sobie dawne czasy? Zrób sobie przerwę i umieść swoje myśli w komentarzach.