Co oznacza pierwszy znak ciągu trybu UNIX?

29

Bardzo dobrze znam uprawnienia do plików linux i specjalne perms (lepki bit, suid, guid)

Ale nie wiem, co coznacza skrót? Czy to pozwolenie czy coś innego? Zrobiłem trochę googlingu i nie mogę tego rozgryźć.

Oto plik urządzenia, który go zawiera.

steven@A215:~$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Dec 29 20:58 /dev/null
użytkownik169254
źródło
Wygląda na to, że wszyscy /devmają to specjalne pozwolenie.
Seth
1
To nie jest pozwolenie. To typ pliku.
Gilles „SO - przestań być zły”,

Odpowiedzi:

34

Oznacza to, że plik jest plikiem specjalnym znakowym - zasadniczo plikiem urządzenia, który zapewnia dostęp szeregowy (w przeciwieństwie do specjalnego urządzenia blokowego , takiego jak napęd dyskowy). Na przykład terminale i urządzenia szeregowe są podłączone za pośrednictwem specjalnych plików znakowych ( /dev/tty1, /dev/ttyS0i tak dalej).

Krótkie wprowadzenie do plików urządzeń znajduje się w Linux / UNIX: Pliki urządzeń [cyberciti.biz]. Aby uzyskać bardziej szczegółową dyskusję, zobacz odpowiedź na temat wymiany stosów Zrozumienie / dev oraz jego podkatalogów i plików . Aby dowiedzieć się o podstawowych strukturach danych, zapoznaj się z Rozdziałem 4 Podręcznika programowania modułu jądra Linux: Pliki urządzeń znakowych [tldp.org]

steeldriver
źródło
3
Dobrze, ale lepiej będzie, jeśli rozszerzysz nieco swoją odpowiedź i podasz przydatne linki. :)
Saurav Kumar,
3
@SauravKumar, proszę dodać trochę - nie mogłem znaleźć niczego na odpowiednim poziomie (ani niczego nie dodałem, ani nie zagłębiłem się w struct char_deviceprogramowanie jądra kodu C)
steeldriver
@steeldriver Mogą one dać ci początek :)
Seth
20

Urządzenie znakowe jest oznaczone cjako pierwsza litera ciągu trybu. Podobnie urządzenie blokowe jest oznaczone symbolem b,

$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Jan 21 21:50 /dev/null
$ ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 Jan 21 21:50 /dev/sda

tych specjalnych urządzeń jest więcej (pliki w tym sensie, że w Linuksie wszystko jest plikiem),

d : directory
s : socket
p : pipe
D : Door
l : symbolic link etc.

Zobacz tę stronę wikipedii, aby uzyskać więcej informacji.

souravc
źródło
czy jest jakiś sposób, aby to zrobić?
Edik Mkoyan
5

ls -lwyprowadza 10-znakowy ciąg znaków UNIX, popularnie znany jako ciąg uprawnień. na przykład

-rw-rw-r--  1 userName groupName   13200650 Dec 13 21:23 fileName

Pierwszy znak ciągu uprawnień lub ciągu trybu , znany jako deskryptor pliku , wskazuje typ pliku, a pozostałe dziewięć w grupach trzyosobowych wskazuje uprawnienia dla danego pliku, gdzie:

  • pierwsza grupa trzech znaków (po pierwszym znaku spośród 10) wskazuje uprawnienia właściciela,
  • druga grupa trzech wyznacza uprawnienia dla grupy,
  • ostatnia grupa trzech wyznacza uprawnienia dla innych (lub świata).

Tutaj, w powyższym przykładzie pierwszy znak / symbol „-” oznacza normalny plik.

Podczas gdy w poniższych przykładach

crw-rw-rw- 1 root root 1, 3 Dec 29 20:58 /dev/null
crw-rw-rw- 1 root root 1, 5 Jan 13 20:56 /dev/zero

pierwszy znak ciągu uprawnień to „c” i jak wspomniano powyżej, jest to wskaźnik typu pliku, który wskazuje urządzenie znakowe .

Oprócz -, cniektóre inne deskryptory plików są:

  • d -> katalog
  • l -> link symboliczny
  • s -> Gniazdo Unix
  • b -> urządzenie blokowe
  • p -> rurociąg
  • D -> Drzwi

Referencje:

precyzyjny
źródło
2

Pierwszy znak w pierwszej kolumnie, tj. „C” w crw-rw-rw- powyżej, informuje poinformowanego użytkownika o typie pliku, w tym przypadku o urządzeniu znakowym.

Maythux
źródło