systemy plików używają uprawnień i atrybutów do regulowania poziomu interakcji procesów systemowych z plikami i katalogami.
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/kataloguPierwsza 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.,
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 jestd
ale-
. 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
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
, setgid
I 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).
-
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ć.
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
: undeletableA
: brak aktualizacji atimeC
: brak kopii przy zapisieD
: synchroniczne aktualizacje katalogówS
: synchroniczne aktualizacjeT
: góra hierarchii katalogówna 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.
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 extractionbsdtar
-p
for extractionrsync --xattrs
- 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?