O que o primeiro caractere da seqüência do modo UNIX indica?

29

Estou muito familiarizado com permissões de arquivo linux e permissões especiais (sticky bit, suid, guid)

Mas eu não sei o que isso csignifica? É uma permissão ou algo mais? Eu já pesquisei no Google e não consigo descobrir.

Aqui está o arquivo do dispositivo.

steven@A215:~$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Dec 29 20:58 /dev/null
user169254
fonte
Parece que todos /devtêm essa permissão especial.
Seth
1
Não é uma permissão. É o tipo de arquivo.
Gilles 'SO- stop be evil'

Respostas:

34

Isso significa que o arquivo é um arquivo especial de caractere - basicamente um arquivo de dispositivo que fornece acesso serial (em oposição a um dispositivo especial de bloco , como uma unidade de disco). Por exemplo, os terminais e dispositivos seriais são interligados através de arquivos especiais de caracteres ( /dev/tty1, /dev/ttyS0e assim por diante).

Para uma breve introdução aos arquivos do dispositivo, consulte Linux / UNIX: Arquivos do dispositivo [cyberciti.biz]. Para uma discussão mais detalhada, consulte esta resposta stackexchange Understanding / dev e seus subdiretórios e arquivos . Para aprender sobre as estruturas de dados subjacentes, consulte o Capítulo 4 do Guia de programação do módulo Kernel Linux: Arquivos de dispositivos de caracteres [tldp.org]

chave de aço
fonte
3
Bom, mas será melhor se você expandir sua resposta um pouco mais e fornecer alguns links úteis. :)
Saurav Kumar
3
@SauravKumar sinta-se livre para acrescentar algumas - eu não consegui encontrar nada em um nível adequado (ou não acrescentou nada, ou mergulhou para a direita em struct char_deviceC código Kernel programação)
steeldriver
@steeldriver Estes podem dar-lhe um começo :)
Seth
20

Um dispositivo de caractere é marcado com a ccomo a primeira letra da string de modo. Da mesma forma, um dispositivo de bloco é marcado com um 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

existem mais desses dispositivos especiais (arquivos no sentido de que tudo é um arquivo no Linux),

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

Veja esta página da Wikipedia para mais detalhes.

souravc
fonte
existe uma maneira de gato isso?
Edik Mkoyan 03/03
5

ls -lgera uma sequência de informações UNIX de 10 símbolos, conhecida popularmente como sequência de permissão. por exemplo

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

O primeiro caractere da cadeia de permissão ou da cadeia de modo , conhecido como descritor de arquivo , indica o tipo de arquivo e os nove restantes obtidos em grupos de três indicam as permissões para o arquivo em questão, onde:

  • o primeiro grupo de três caracteres (após o primeiro caractere entre os 10) indica as permissões do proprietário,
  • o segundo grupo de três designa permissões para o grupo,
  • o último grupo de três designa permissões para outras pessoas (ou para o mundo).

Aqui, no exemplo acima, o primeiro caractere / símbolo "-" indica um arquivo normal.

Enquanto nos exemplos a seguir,

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

o primeiro caractere da string de permissão é "c" e, como mencionado acima, é um indicador de tipo de arquivo que indica um dispositivo de caractere .

Além do -, calguns outros descritores de arquivos são:

  • d -> diretório
  • l -> link simbólico
  • s -> Soquete Unix
  • b -> dispositivo de bloqueio
  • p -> gasoduto
  • D -> Porta

Referências:

preciso
fonte
2

O primeiro caractere na primeira coluna, ou seja, 'c' em crw-rw-rw- acima, informa ao usuário informado o tipo do arquivo, neste caso, um dispositivo de caractere.

Maythux
fonte