Permissões permanentes em portas seriais (UDEV)

permdev

No post de hoje ensinarei alguns passos para habilitar permissões definitivas nas portas seriais com UDEV no Linux CentOS 6.8 SAGE versão 27-17 modificado pelo CEPEL.

*** ATUALIZAÇÃO: Rotina compatível com SAGE versão 28 (CentOS 7.4)

No Linux CentOS SAGE, as permissões dos dispositivos seriais COM1, COM2… por padrão são:

sage@srv1:~/sage > ls -l /dev/ttyS*
crw-rw---- 1 root dialout 4, 64 Ago 16 13:33 /dev/ttyS0
crw-rw---- 1 root dialout 4, 65 Ago 16 13:33 /dev/ttyS1
crw-rw---- 1 root dialout 4, 66 Ago 16 13:33 /dev/ttyS2
crw-rw---- 1 root dialout 4, 67 Ago 16 13:33 /dev/ttyS3

Para que o usuário sage possa se comunicar com os outros dispositivos via porta serial (ex.: ABB MicroScada) é necessário mudar as permissões, mas antes de prosseguir com a mudança vamos primeiro entender como o Linux trata as permissões.

Olhando a lista acima, nossa COM1 é o ttyS0, COM2 é o ttyS1 e assim por diante. O dono do dispositivo é o usuárioroote o grupo é odialout. Ainda sobre a lista, vemos que o primeiro caracter"c"define como um arquivo especial, pois trata-se de um dispositivo serial.

Os tipos disponíveis são:

  • – (nenhum) – arquivos regulares;
  • d – diretório;
  • c – dispositivo de caractere (portas seriais); l – link simbólico;
  • p – pipe nomeado; s – soquete;
  • b – dispositivo de bloco e
  • D – porta, não é comum em sistemas Linux, mas foi portada.

Na sequência temos:rw-rw----

  • Os primeiros três (rw-) são as permissões do dono (root) – ler (r), gravar (w), mas não executar (x);
  • Os três do meio (rw-) são as permissões do grupo (dialout) – ler (r), gravar (w), mas não executar (x);
  • Os três últimos (---) são as permissões dos demais usuários do linux – não ler(r), não gravar (w), e não executar (x).

Substituindo e somando cada agrupamento: 4 (r): Leitura – 2 (w): Gravação – 1 (x): Execução / listagem,

temos:420 420 000 = 660.

  • 0 : Sem permissão alguma. Acesso negado.
  • 1 : Permissão apenas para executar (não é possível ler o arquivo ou alterá-lo, apenasexecutar um programa) ou, no caso de diretórios, permissão apenas para ver a lista dosarquivos dentro da pasta, sem poder abrí-los.
  • 4 : Apenas leitura. Se usado em uma pasta, o usuário não conseguirá listar o conteúdo,ou seja, conseguirá abrir os arquivos apenas caso indique o caminho completo.
  • 5 (4+1): Ler e executar (no caso de um arquivo) ou ver os arquivos e abri-los, no caso dediretórios.
  • 6 (4+2): Leitura e gravação. Assim como no caso do “4”, se usado em diretórios faz comque o usuário não consiga listar o conteúdo, apenas acessar os arquivos diretamente.
  • 7 (4+2+1): Controle total.

Para saber quais grupos o usuário participa faça:id -Gn sage

Se ele não fizer parte do grupo dialout suas permissões são totalmente negadas ao uso dos dispositivos ttyS0 ao ttyS3 da lista. O usuário sage faz parte de outros.

Para mudar a permissão dos dispositivos de forma permanente, vamos editar, com usuário root, o arquivo/etc/udev/rules.d/50-udev.rulesusando o seu editor de texto favorito.

# vi /etc/udev/rules.d/50-udev.rules

Agora vamos inserir o seguinte conteúdo no mesmo.

KERNEL=="ttyS*", MODE="0666"

Salvamos o arquivos e reiniciamos o computador.

Após reiniciar e logar vamos listar os dispositivos novamente. O resultado deve ser igual ao abaixo. Isso fará com que outros possam ler e gravar (rw) nos dispositivos ttyS*.

sage@srv1:~/sage > ls -l /dev/ttyS*
crw-rw-rw- 1 root dialout 4, 64 Ago 16 13:38 /dev/ttyS0
crw-rw-rw- 1 root dialout 4, 65 Ago 16 13:38 /dev/ttyS1
crw-rw-rw- 1 root dialout 4, 66 Ago 16 13:38 /dev/ttyS2
crw-rw-rw- 1 root dialout 4, 67 Ago 16 13:38 /dev/ttyS3

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *