O chmod 000 / dev / stdin desativaria o terminal para sempre?

12

Estou trabalhando com perguntas do Unix The Textbook (capítulo 8, nº 16, página 207) :

Give chmod command lines that perform the same tasks that the mesg n and mesg y commands do. (Hint: Every hardware device, including your terminal, has an associated file in the /dev directory.)

Eu acredito que a resposta é:

mesg n = chmod 770 /dev/stdout

mesg y = chmod 777 /dev/stdout

Mas eu queria saber o que acontece se você usar chmod 000 /dev/stdin ?

Você fica bloqueado ao digitar comandos no terminal?

    
por Philip Kirkbride 11.06.2017 / 01:15

1 resposta

20

Não, /dev/stdin e /dev/stdout são o dispositivo errado. Estes não são dispositivos terminais, são aliases para entrada padrão e saída padrão, respectivamente. A entrada padrão e a saída padrão são, por definição, descritores de arquivo que as aplicações esperam estar abertas e ter um significado convencional (descritor de arquivo 0 e 1, respectivamente, há também 2, que é o erro padrão). Dispositivos como /dev/stdin e /dev/stdout são úteis quando um aplicativo requer um nome de arquivo, mas o usuário do aplicativo deseja que ele acesse um descritor de arquivo específico em vez de abrir algum arquivo. Dependendo da variante do unix, eles podem nem ser arquivos do dispositivo; por exemplo, no Linux, eles são links simbólicos para /proc/self/fd/0 e amigos, e estes são, por sua vez, links simbólicos "mágicos" para qualquer arquivo que o processo já tenha aberto naquele descritor de arquivo.

A alteração das permissões de /dev/stdin e /dev/stdout só mudaria o que acontece quando esses nomes de arquivo são usados explicitamente. Ele não afeta nada relacionado ao terminal e não afeta o uso normal da entrada padrão e da saída padrão, já que as permissões só importam ao abrir um nome de arquivo específico.

O que o mesg faz é alterar as permissões do controlador de terminal do processo . Para um aplicativo que está sendo executado em um terminal, o terminal está aberto na entrada padrão, na saída padrão e no erro padrão (descritores de arquivo 0, 1 e 2). Você pode usar o comando tty para ver o que é o dispositivo terminal. mesg n é equivalente a chmod g-w "$(tty)" e mesg y é equivalente a chmod g+w "$(tty)" .

    
por 11.06.2017 / 01:44