systemy plików używają uprawnień i atrybutów do regulowania poziomu interakcji procesów systemowych z plikami i katalogami.

ostrzeżenie: gdy są używane ze względów bezpieczeństwa, uprawnienia i atrybuty chronią tylko przed atakami uruchamianymi z bootowanego systemu. Aby chronić przechowywane dane przed atakującymi z fizycznym dostępem do komputera, należy również wdrożyć szyfrowanie danych w spoczynku.,

uprawnienia wyświetlania

użyj polecenia ls -l opcja wyświetlania uprawnień (lub trybu plików) ustawionych dla zawartości katalogu, na przykład:

$ ls-l /ścieżka/do/katalogu

Pierwsza kolumna jest tym, na czym musimy się skupić., Taking an example value of drwxrwxrwx+, the meaning of each character is explained in the following tables:

d rwx rwx rwx +
The file type, technically not part of its permissions. See info ls -n "What information is listed" for an explanation of the possible values., uprawnienia właściciela nad plikiem, wyjaśnione poniżej. uprawnienia, które grupa ma nad plikiem, wyjaśnione poniżej. uprawnienia, które mają wszyscy inni użytkownicy nad plikiem, wyjaśnione poniżej. pojedynczy znak określający, czy do pliku ma zastosowanie alternatywna metoda dostępu. Gdy znak ten jest spacją, nie ma alternatywnej metody dostępu. Znak . wskazuje plik z kontekstem zabezpieczeń, ale nie ma innej alternatywnej metody dostępu., Plik z inną kombinacją alternatywnych metod dostępu jest oznaczany znakiem +, na przykład w przypadku list kontroli dostępu.,

każda z trzech Triad uprawnień (rwx w powyższym przykładzie) może składać się z następujących znaków:

znak wpływ na pliki wpływ na katalogi
uprawnienia do odczytu (pierwszy znak) - plik nie może być odczytany., nie można wyświetlić zawartości katalogu.
r plik można odczytać. zawartość katalogu może być pokazana.
uprawnienia zapisu (drugi znak) - plik nie może być modyfikowany. zawartość katalogu nie może być modyfikowana.
w plik można modyfikować., zawartość katalogu można modyfikować (tworzyć nowe pliki lub foldery; zmieniać nazwy lub usuwać istniejące pliki lub foldery); wymaga ustawienia uprawnień execute, w przeciwnym razie uprawnienie to nie ma wpływu.
Execute permission (trzeci znak) - plik nie może zostać wykonany. do katalogu nie można uzyskać dostępu za pomocą płyty cd.
x plik można uruchomić., do katalogu można uzyskać dostęp za pomocą płyty cd; jest to jedyny bit uprawnień, który w praktyce można uznać za „odziedziczony” od katalogów nadrzędnych, w rzeczywistości, jeśli jakikolwiek folder w ścieżce nie ma ustawionego bitux, ostateczny plik lub folder nie może być również dostępny, niezależnie od jego uprawnień; więcej informacji można znaleźć w path_resolution(7).,
s bit setuid znaleziony w triadzie użytkownika; bit setgid znaleziony w triadzie grupy; nie znajduje się w pozostałych triadach; oznacza to również, że x jest ustawione.
S to samo co s, ale x nie jest ustawione; rzadkie na zwykłych plikach i bezużyteczne na folderach.,
t The sticky bit; it can only be found in the others triad; it also implies that x is set.
T Same as t, but x is not set; rare on regular files, and useless on folders.

See info Coreutils -n "Mode Structure" and chmod(1) for more details.,

Wskazówka: Możesz wyświetlić uprawnienia wzdłuż ścieżki za pomocą namei -l path.

przykłady

zobaczmy kilka przykładów do wyjaśnienia:

drwx------ 6 archie users 4096 Jul 5 17:37 Documents

Archie ma pełny dostęp do katalogu Documents. Może wyświetlać, tworzyć pliki i zmieniać nazwy, usuwać dowolny plik w dokumentach, niezależnie od uprawnień do plików. Jego możliwość dostępu do pliku zależy od jego uprawnień.

dr-x------ 6 archie users 4096 Jul 5 17:37 Documents

Archie ma pełny dostęp, z wyjątkiem tego, że nie może utworzyć, zmienić nazwy, usunąć żadnego pliku., Może wyświetlić listę plików i (jeśli uprawnienie pliku upoważnia) może uzyskać dostęp do istniejącego pliku w dokumentach.

d-wx------ 6 archie users 4096 Jul 5 17:37 Documents

Archie nie może wykonywać 'ls' W dokumentach, ale jeśli zna nazwę istniejącego pliku, może wyświetlić listę, zmienić nazwę, usunąć lub (jeśli uprawnienie pliku upoważnia go) uzyskać do niego dostęp. Ponadto jest w stanie tworzyć nowe pliki.

d--x------ 6 archie users 4096 Jul 5 17:37 Documents

Archie jest w stanie uzyskać dostęp do tych plików w dokumentach, które zna. Nie może wymienić już istniejących plików lub utworzyć, zmienić nazwę, usunąć żadnego z nich.,

należy pamiętać, że rozwijamy uprawnienia katalogów i nie ma to nic wspólnego z uprawnieniami poszczególnych plików. Podczas tworzenia nowego pliku jest to katalog, który się zmienia. Dlatego potrzebujesz uprawnień do zapisu do katalogu.

spójrzmy na inny przykład, tym razem pliku, a nie katalogu:

-rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar

tutaj widzimy, że pierwsza litera nie jestdale-. Więc wiemy, że to plik, a nie Katalog., Następnie uprawnienia właściciela są rw-, więc właściciel ma możliwość odczytu i zapisu, ale nie wykonuje. To może wydawać się dziwne, że właściciel nie ma wszystkich trzech uprawnień, ale uprawnienia x nie są potrzebne, ponieważ jest to plik tekstowy / danych, do odczytu przez edytor tekstu, taki jak Gedit, EMACS lub oprogramowanie takie jak R, a nie program wykonywalny sam w sobie (jeśli zawierał coś takiego jak kod programowania Pythona, to bardzo dobrze może być)., Uprawnienia grupy są ustawione na r-- , więc grupa ma możliwość odczytu pliku, ale nie zapisu/edycji go w żaden sposób — jest to zasadniczo jak ustawienie czegoś tylko do odczytu. Widzimy, że te same uprawnienia dotyczą również wszystkich innych.

Zmiana uprawnień

chmod to polecenie w Linuksie i innych systemach operacyjnych uniksopodobnych, które pozwala zmienić uprawnienia (lub tryb dostępu) pliku lub katalogu.

metoda tekstowa

aby zmienić uprawnienia — lub tryb dostępu — pliku, użyj polecenia chmod w terminalu., Poniżej znajduje się ogólna struktura polecenia:

chmod who=permissions filename

gdzie who jest dowolna z zakresu liter, każda oznaczająca, kto otrzymuje pozwolenie. Są one następujące:

  • u: użytkownik, który jest właścicielem pliku.
  • g: grupa użytkowników, do której należy plik.
  • o: pozostali użytkownicy, czyli wszyscy inni.
  • a: wszystkie powyższe; użyj tego zamiast wpisywaniaugo.,

uprawnienia są takie same jak opisane w #Viewing permissions (r, w I x).

teraz spójrz na kilka przykładów za pomocą tego polecenia., Załóżmy, że stałeś się bardzo opiekuńczy katalogu dokumentów i chciałeś odmówić wszystkim oprócz siebie, uprawnień do odczytu, zapisu i wykonywania (lub w tym przypadku Szukaj/Szukaj) w nim:

przed: drwxr-xr-x 6 archie users 4096 Jul 5 17:37 Documents

$ chmod g= Documents$ chmod o= Documents

Po: drwx------ 6 archie users 4096 Jul 6 17:32 Documents

tutaj, ponieważ chcesz odmówić uprawnień, nie umieszczasz żadnych liter po =, gdzie uprawnienia zostaną wprowadzone. Teraz możesz zobaczyć, że tylko uprawnienia właściciela są rwx I wszystkie inne uprawnienia są -.,

można to przywrócić za pomocą:

przed: drwx------ 6 archie users 4096 Jul 6 17:32 Documents

$ chmod g=rx Documents$ chmod o=rx Documents

Po: drwxr-xr-x 6 archie users 4096 Jul 6 17:32 Documents

w następnym przykładzie chcesz nadać grupie i innym użytkownikom uprawnienia do odczytu i wykonywania, więc umieszczasz litery dla uprawnień (r I x) po =, bez spacji.

można to uprościć, aby umieścić więcej niż jedną literę who w tym samym poleceniu, np.,g:

$ chmod go=rx Documents
uwaga: nie ma znaczenia, w jakiej kolejności umieścisz who litery lub litery uprawnień w chmod polecenie: możesz mieć chmod go=rx file lub chmod og=xr file. Wszystko jest takie samo.,ider drugi przykład, załóżmy, że chcesz zmienić plik foobar tak, aby mieć uprawnienia do odczytu i zapisu, a inni użytkownicy w grupie users, którzy mogą być kolegami pracującymi nad foobar, mogą również odczytywać i zapisywać do niego, ale inni użytkownicy mogą go tylko czytać:

przed:

div id=”51bd7a967d”>

$ chmod g=rw foobar

after: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar

to jest dokładnie tak jak w pierwszym przykładzie, ale z plikiem, a nie katalogiem, i przyznajesz uprawnienia do zapisu (tak, aby dać przykład przyznania każdego uprawnienia).,

skróty metod tekstowych

polecenie chmod pozwala dodawać i odejmować uprawnienia z istniejącego zestawu za pomocą+ lub- zamiast=. Aby zmienić uprawnienia z r-- na rw-, nadal musisz dołączyć r, a także w po = w wywołaniu polecenia chmod., Jeśli przegapiłeś r, odebrałoby to uprawnienia r, ponieważ są one ponownie napisane za pomocą =. Użycie + I - pozwala uniknąć tego poprzez dodanie lub odebranie bieżącego zestawu uprawnień).,>Przed: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar

$ chmod a-w foobar

Po: -r--r--r-- 1 archie users 5120 Jun 27 08:28 foobar

inny skrót jest specjalny X tryb: to nie jest rzeczywisty tryb pliku, ale jest często używany w połączeniu z opcją -R, aby ustawić bit wykonywalny tylko dla katalogów i pozostawić go bez zmian dla zwykłych plików, na przykład:

$ chmod -R a+rX ./data/

uprawnienia do kopiowania

można powiedzieć chmod, aby skopiował uprawnienia z jednej klasy, powiedzmy właściciela i dał te same uprawnienia grupie lub nawet wszystkim., Aby to zrobić, zamiast umieszczać r, w lub x po =, umieść inną literę who. na przykład:

przed: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar

$ chmod g=u foobar

Po: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar

To polecenie zasadniczo tłumaczy się na „zmień uprawnienia grupy (g=), być takim samym jak właściciel użytkownika (=u). Należy pamiętać, że nie można skopiować zestawu uprawnień, jak również przyznać nowe, np.,:

$ chmod g=wu foobar

w takim przypadku chmod wyrzuca błąd.

metoda numeryczna

chmod może również ustawiać uprawnienia za pomocą liczb.

używanie numbers to kolejna metoda, która pozwala na edycję uprawnień dla wszystkich trzech właścicieli, grup i innych jednocześnie, a także bitów setuid, setgid i sticky. Ta podstawowa struktura kodu jest następująca:

$ chmod xxx filename

gdzie xxx jest 3-cyfrową liczbą, w której każda cyfra może być dowolną cyfrą od 0 do 7., Pierwsza cyfra dotyczy uprawnień dla właściciela, druga cyfra dotyczy uprawnień dla grupy, a trzecia cyfra dotyczy uprawnień dla wszystkich innych.

w tej notacji liczbowej wartości r, w I x mają własną wartość liczbową:

r=4w=2x=1

aby uzyskać 3-cyfrowy numer musisz rozważyć, jakie uprawnienia mają mieć właściciel, Grupa I wszystkie inne, a następnie zsumować ich wartości., chcesz, aby grupa i wszyscy inni mieli tylko odczytać i wykonać uprawnienia, możesz wymyślić wartości liczbowe takie jak:

  • właściciel: rwx=4+2+1=7
  • Group: r-x=4+0+1=5
  • Inne: r-x=4+0+1=5
$ chmod 755 filename

jest to odpowiednik następującego:

$ chmod u=rwx filename$ chmod go=rx filename

aby wyświetlić istniejące uprawnienia pliku lub katalogu w postaci liczbowej, użyj polecenia stat(1):

$ stat -c %a filename

gdzie %a opcja określa wyjście w postaci liczbowej.,

Większość folderów i katalogów jest ustawiona na 755, aby umożliwić odczyt, zapis i wykonanie właścicielowi, ale odmówić zapisu wszystkim innym, a pliki są zwykle 644, aby umożliwić odczyt i zapis właścicielowi, ale tylko odczyt dla wszystkich innych; Zobacz ostatnią notatkę o braku x uprawnienia z pliki nie wykonywalne: tutaj jest to samo.,

aby zobaczyć to w akcji z przykładami, rozważ poprzedni przykład, który został użyty, ale zamiast tego zastosowano tę metodę numeryczną:

przed: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar

$ chmod 664 foobar

Po: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar

Jeśli wykonywalny numer byłby 774 jeśli chcesz przyznać uprawnienia wykonywalne właścicielowi i grupie. Alternatywnie, jeśli chcesz, aby wszyscy mieli tylko uprawnienia do odczytu, numer byłby 444., Traktowanie r jako 4, w jako 2 i x jako 1 jest prawdopodobnie najprostszym sposobem na wypracowanie wartości liczbowych do użycia chmod xxx filename, ale istnieje również metoda binarna, w której każde uprawnienie ma liczba binarna, a następnie jest to z kolei konwertowane na liczbę. Jest nieco bardziej zawiła, ale tutaj uwzględniona dla kompletności.,

rozważ ten zestaw uprawnień:

-rwxr-xr--

Jeśli umieścisz 1 pod każdym przyznanym pozwoleniem, a 0 dla każdego nie przyznanego, wynik będzie taki:

-rwxrwxr-x 111111101

Możesz następnie przekonwertować te liczby binarne:

000=0 100=4001=1 101=5010=2 110=6011=3 111=7

wartość powyższego wynosiłaby zatem 775.

rozważmy, że chcemy usunąć zapisywalne uprawnienia z grupy:

-rwxr-xr-x 111101101

dlatego wartość będzie 755 i użyjeszchmod 755 filename aby usunąć zapisywalne uprawnienia., Zauważysz, że otrzymasz ten sam trzycyfrowy numer bez względu na to, jakiej metody używasz. To, czy używasz tekstu, czy liczb, zależy od osobistych preferencji i szybkości pisania. Jeśli chcesz przywrócić katalog lub plik do domyślnych uprawnień, np. uprawnienia do odczytu i zapisu (i wykonywania) dla właściciela, ale odmówić uprawnień do zapisu dla wszystkich innych, może być szybsze użycie chmod 755/644 filename. Jednak jeśli zmieniasz uprawnienia na coś poza normą, może być prostsze i szybsze użycie metody tekstowej w przeciwieństwie do próby przekonwertowania jej na liczby, co może prowadzić do błędu., Można argumentować, że nie ma żadnej znaczącej różnicy w szybkości żadnej z metod dla użytkownika, który musi używać chmod tylko okazjonalnie.

Możesz również użyć metody numerycznej do Ustawienia bitów setuid, setgidI sticky za pomocą czterech cyfr.

setuid=4setgid=2sticky=1

na przykładchmod 2777 filename ustawia bity odczytu/zapisu/wykonywalnego dla wszystkich, a także włącza bitsetgid.

chmod zbiorczy

ogólnie katalogi i pliki nie powinny mieć takich samych uprawnień., Jeśli konieczne jest masowe modyfikowanie drzewa katalogów, użyj find, aby selektywnie zmodyfikować jedno lub drugie.

do chmod tylko katalogi do 755:

$ find directory -type d -exec chmod 755 {} +

do chmod tylko pliki do 644:

$ find directory -type f -exec chmod 644 {} +

zmiana własności

chown zmienia właściciela pliku lub katalogu, co jest szybsze i łatwiejsze niż zmiana uprawnień w niektórych przypadkach.

rozważ poniższy przykład, tworząc nową partycję z GParted dla danych kopii zapasowych. Gparted robi to wszystko jako root, więc domyślnie Wszystko należy do roota., To wszystko jest dobre i dobre, ale jeśli chodzi o zapis danych do zamontowanej partycji, uprawnienia są odmawiane dla zwykłych Użytkowników.

brw-rw---- 1 root disk 8, 9 Jul 6 16:02 sda9drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup

jak widać urządzenie w/dev jest własnością roota, podobnie jak lokalizacja montowania (/media/Backup)., Aby zmienić właściciela lokalizacji montowania, można wykonać następujące czynności:

przed: drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup

# chown archie /media/Backup

Po: drwxr-xr-x 5 archie root 4096 Jul 6 16:01 Backup

teraz partycja może mieć dane zapisane do niej przez nowego właściciela, Archiego, bez zmiany uprawnienia (ponieważ właściciel triady miał już rwx uprawnienia).

Uwaga:

  • chown zawsze czyści bity setuid i setgid.
  • użytkownicy spoza katalogu root nie mogą używaćchown do „rozdawania” plików, które posiadają innemu użytkownikowi.,

listy kontroli dostępu

listy kontroli dostępu zapewniają dodatkowy, bardziej elastyczny mechanizm uprawnień dla systemów plików, umożliwiając ustawienie uprawnień dla dowolnego użytkownika lub grupy do dowolnego pliku.

Umask

narzędzie umask służy do sterowania maską trybu tworzenia plików, która określa początkową wartość bitów uprawnień do plików dla nowo utworzonych plików.,

atrybuty plików

oprócz bitów trybu Pliku, które kontrolują uprawnienia odczytu, zapisu i wykonywania przez użytkownika, kilka systemów plików obsługuje atrybuty plików, które umożliwiają dalsze dostosowywanie dozwolonych operacji na plikach. Ta sekcja opisuje niektóre z tych atrybutów i jak z nimi pracować.

Ostrzeżenie: domyślnie atrybuty plików nie są zachowywane przez cp, rsync i inne podobne programy.,

chattr i lsattr

dla systemów plików ext2 i ext3 pakiet e2fsprogs zawiera programy lsattr i chattr, które odpowiednio wyświetlają i zmieniają atrybuty pliku.,/li>

  • u: undeletable
  • A: brak aktualizacji atime
  • C: brak kopii przy zapisie
  • D: synchroniczne aktualizacje katalogów
  • S: synchroniczne aktualizacje
  • T: góra hierarchii katalogów
  • na przykład, jeśli chcesz ustawić niezmienny bit na jakimś pliku, użyj następującego polecenia:

    # chattr +i /path/to/file

    aby usunąć atrybut z pliku wystarczy zmienić + na -.,

    Rozszerzone atrybuty

    z Xattr(7): „Rozszerzone atrybuty to pary nazw: wartości powiązane na stałe z plikami i katalogami”. Istnieją cztery rozszerzone klasy atrybutów: security, system, trusted i user.

    Ostrzeżenie: domyślnie atrybuty rozszerzone nie są zachowywane przez cp, rsync i inne podobne programy, zobacz #Preserving extended attributes.

    Rozszerzone atrybuty są również używane do ustawiania możliwości.

    atrybuty rozszerzone użytkownika

    atrybuty Rozszerzone użytkownika mogą być używane do przechowywania dowolnych informacji o pliku., To create one:

    $ setfattr -n user.checksum -v "3baf9ebce4c664ca8d9e5f6314fb47fb" foo.txt

    Use getfattr to display extended attributes:

    $ getfattr -d foo.txt
    # file: foo.txtuser.,3de557528"> --preserve=mode,ownership,timestamps,xattr   mv preserves by default1    tar  --xattrs for creation and extraction   bsdtar  -p for extraction   rsync --xattrs   
    1. mv silently discards extended attributes when the target file system does not support them.,

    aby zachować rozszerzone atrybuty za pomocą edytorów tekstu, musisz skonfigurować je tak, aby przy zapisie obcinały pliki zamiast używać rename(2).

    porady i wskazówki

    Zachowaj root

    Użyj flagi--preserve-root, aby uniemożliwićchmod działanie rekurencyjne na/. Może to na przykład zapobiec usunięciu wykonywalnego systemu bitowego, a tym samym uszkodzeniu systemu. Aby użyć tej flagi za każdym razem, ustaw ją w aliasie. Zobacz też,

    Patrz także

    • wikipedia:Chattr
    • zamieszanie w uprawnieniach do plików Linuksa
    • zamieszanie w uprawnieniach do plików Linuksa część 2
    • wikipedia:Rozszerzone atrybuty pliku#Linux
    • rozszerzone atrybuty: dobre, nie Takie dobre, złe.
    • tworzenie kopii zapasowych i przywracanie uprawnień plików w Linuksie
    • dlaczego „chmod-R 777 /” jest destrukcyjny?

    Dodaj komentarz

    Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *