Jak działają uprawnienia do plików?

37

Czy potrafisz krótko wyjaśnić główne pojęcia i narzędzia wiersza poleceń używane do zarządzania uprawnieniami do plików?

guillermooo
źródło

Odpowiedzi:

23

Każdy plik ma prawa do trzech różnych kategorii:

  • właściciel pliku,
  • grupa powiązana z plikiem oraz
  • wszyscy inni.

Prawa oznaczają prawo do odczytu pliku, prawo do zapisu do pliku lub prawo do wykonania pliku w przypadku skryptu lub programu.

W interfejsie CLI możesz

  • zmienić właściciela za pomocą chownnpchown guillermooo
  • zmień grupę za pomocą chgrpnpchgrp root
  • zmienić prawa przy pomocy chmod, np. chmod u+w filename.ext(Dodaje uprawnienia do zapisu dla właściciela pliku filename.ext)

Jeśli chcesz dowiedzieć się więcej o każdym z tych narzędzi, otwórz terminal i wpisz man [tool], np man chmod.

Paranoia Szczeniak
źródło
8
Jest to nieco trudniejsze w przypadku katalogów - aby uzyskać dostęp do zawartości katalogu, wymagane jest zezwolenie na wykonanie. Oznacza to (na przykład) odczyt lub zapis pliku, który wymaga wykonania dostępu do katalogu zawierającego go, a także odpowiednich uprawnień do samego pliku. To prawie nigdy się nie pojawia, ale dlatego jest słabo udokumentowane / zrozumiane!
adamnfish
Huh Masz rację. Zmienię to jutro, kiedy będę mniej śpiący.
ParanoiaPuppy
1
chown guillermooonie powinno tak być chown guillermooo filename?
Zeynel,
32

Ostrzeżenie: zmiana uprawnień do plików i katalogów jest potencjalnie szkodliwa i może uniemożliwić korzystanie z systemu. Gdy uruchomimy się rekurencyjnie jako root na niewłaściwej ścieżce, możemy dojść do punktu, z którego będziemy musieli ponownie zainstalować Ubuntu. Dlatego dobrym pomysłem jest nie zmieniać uprawnień poza katalogami HOME i uruchamiać polecenia rekurencyjnie, ponieważ w miarę możliwości należy unikać rootowania.

Uprawnienia do plików

Ubuntu odziedziczyło koncepcję uprawnień po Uniksie, gdy dla plików lub katalogów możemy zezwolić lub odmówić na trzy zadania:

  • r (odczyt) plik / katalog może zostać otwarty w celu uzyskania dostępu do odczytu.
  • W (zapis) plik / katalog może być otwarty do zapisu / edycji dostępem.
  • Plik x (wykonaj) może być wykonywany, ponieważ program / katalog może być przeglądany.

( Przejście do katalogu zasadniczo oznacza użycie go jako części nazwy ścieżki. Więcej informacji można znaleźć na stronie https://unix.stackexchange.com/a/13891 lub https://unix.stackexchange.com/questions/21251 ).

Ponadto mamy trzy przypadki dotyczące tego, komu udzielamy pozwolenia:

  • u (użytkownik) właściciel pliku otrzymuje dowolne z uprawnień.
  • g (grupa) grupa, do której należy plik, ma uprawnienia.
  • o (inne) wszystkim innym udziela się pozwolenia.

Teraz, aby uzyskać kombinację tych posortowanych, używamy systemu binarnego, w którym każdy bit definiuje pozwolenie. Można to najlepiej pokazać w poniższej tabeli

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |       |       |       |
      w        |  010   |   2    |       |       |       |
      x        |  001   |   1    |       |       |       |
    =======================================================
    Number

Teraz jeśli chcemy na przykład

a) właściciel pliku (= user) posiada r EAD w obrzędzie i e x ecute pozwolenie,
b) grupa przyznała plik za r EAD i e x ecute uprawnienia oraz
c) wszystkie inne powinny mieć tylko r dostępu EAD.

Następnie uprawnienie do wynikowego pliku będzie:

 u   g   o
rwx r-x r--

Aby uzyskać to w liczbach ósemkowych, np. dla chmodpolecenia lub gdy musimy zrozumieć komunikat o błędzie, musimy wypełnić powyższą tabelę jak poniżej:

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |   4   |   4   |   4   |
      w        |  010   |   2    |   2   |   0   |   0   |
      x        |  001   |   1    |   1   |   1   |   0   |
    ======================================================
    Numbers add to                   7       5       4     

Każdy numer pozwolenia musi zostać dodany, aby sumować się dla użytkownika (4 + 2 + 1 = 7), grupy (4 + 0 + 1 = 5) i innych (4 + 0 + 0 = 4). Wynikowa liczba to:

 u   g   o
 7   5   4

Mamy teraz dwie opcje zmiany bitów uprawnień za pomocą chmod:

chmod u+rwx g+rx o+r filename

lub znacznie prościej z

chmod 751 filename

Oba polecenia zrobią to samo.

Domyślne zezwolenie na nowo utworzony plik w naszym domu to 664 (-rw-rw-r--).

Jeśli chcemy, aby pliki były wykonywane jako programy, będziemy musieli zmienić to uprawnienie.

  • Zauważ, że będziemy musieli również zmienić uprawnienia do katalogu, w którym może znajdować się plik wykonywalny. Tylko jeśli zarówno plik, jak i bit pliku wykonywalnego katalogu są ustawione, będziemy mogli uruchomić ten plik jako program.

  • Podczas kopiowania pliku do naszego domu traci on uprawnienia, które zostaną zastąpione naszymi własnymi domyślnymi uprawnieniami (chyba że kopiujemy przy użyciu opcji zaawansowanych, np. Opcji archiwizacji).

  • Należy również pamiętać, że plik może odziedziczyć swoje uprawnienia z punktu montowania, odpowiednio. opcje montowania. Jest to ważne podczas montowania dysków sformatowanych w systemie Windows, które nie obsługują uprawnień uniksowych.

Użytkownicy i grupy

Wkrótce zdajemy sobie sprawę, że to tylko połowa historii. Musimy także uporządkować rzeczy. Aby to zrobić, każdy plik lub folder ma zdefiniowanego właściciela i zdefiniowane członkostwo w grupie.

Za każdym razem, gdy tworzymy plik, będziemy jego właścicielem, a grupą plików również będziemy my. Dzięki ls -lmożemy zobaczyć uprawnienia, własność i grupę, jak widać z następującego przykładowego wyniku:

-rw-rw-r--  1 takkat takkat    4096 Sep 12 20:25 test
  • Możemy jedynie zmieniać uprawnienia, grupy lub własność pliku, który jest nasz.

Jeśli nie jesteśmy właścicielem pliku, otrzymamy Permission deniedbłąd. Tylko root może to zmienić dla wszystkich plików. Właśnie dlatego musimy używać sudopodczas edycji uprawnień do plików, które nie są nasze. Dostępne są dwa wbudowane polecenia chowndla użytkowników i chgrpgrup.

Aby zmienić własność pliku z dowolnej osoby na inną, takkatmożemy wydać to polecenie:

sudo chown takkat testfile

Aby zmienić grupę plików, takkatwydajemy

sudo chgrp takkat testfile

Przeczytaj strony poleceń, aby uzyskać więcej informacji i opcji. Jest też ten miły, bardziej rozbudowany przewodnik zalecany do dalszego czytania:

Znajdziesz tu także kilka powiązanych pytań:

Takkat
źródło