O que é um equivalente chmod de mesg

3

O que é um chmod equivalente para mesg y e mesg n ?

    
por MandyLB 06.05.2018 / 00:07

1 resposta

8

Observação: como pontos JdeBP nos comentários , não é trivial reproduzir o comportamento de mesg com chmod .

A seção Justificativa na especificação POSIX para mesg diz

The terminal changed by mesg is that associated with the standard input, output, or error, rather than the controlling terminal for the session. This is because users logged in more than once should be able to change any of their login terminals without having to stop the job running in those sessions. This is not a security problem involving the terminals of other users because appropriate privileges would be required to affect the terminal of another user.

The method of checking each of the first three file descriptors in sequence until a terminal is found was adopted from System V.

A abordagem ingênua seria examinar as mudanças nas permissões no terminal de controle do shell (o dispositivo ao qual a entrada padrão do shell interativo atual está conectada) quando mesg é usado.

O terminal de controle do shell é retornado pelo comando tty . Para descobrir o que mesg n e mesg y estão fazendo com as permissões no dispositivo, podemos usar ls -l e ver as alterações:

$ ls -l "$(tty)"
crw--w----  1 myself  tty    5,   1 May  6 00:21 /dev/ttyp1

$ mesg n
$ ls -l "$(tty)"
crw-------  1 myself  tty    5,   1 May  6 00:21 /dev/ttyp1

$ mesg y
$ ls -l "$(tty)"
crw--w----  1 myself  tty    5,   1 May  6 00:21 /dev/ttyp1

Portanto, parece que mesg n remove a permissão de gravação do grupo para o dispositivo ( rw--w---- muda para rw------- ) e mesg y adiciona a permissão de gravação do grupo novamente.

O chmod equivalente seria, no meu caso,

$ chmod g-w "$(tty)"     # for "mesg n"
$ chmod g+w "$(tty)"     # for "mesg y"

Adicione sal e pimenta de maneira apropriada para o sabor específico do Unix.

No entanto, observe que, se a entrada padrão do shell não for um terminal, tty retornará a string not a tty e o chmod falhará. Nesse cenário, mesg continuaria a tentar com o dispositivo terminal a saída padrão do shell e depois o erro padrão (nessa ordem). É por isso que o acima é uma abordagem ingênua .

    
por 06.05.2018 / 00:25

Tags