Não, /dev/stdine /dev/stdouté o dispositivo errado. Estes não são dispositivos terminais, são alias para entrada e saída padrão, respectivamente. Entrada padrão e saída padrão são, por definição, descritores de arquivo que os aplicativos esperam que sejam abertos e tenham um significado convencional (descritor de arquivo 0 e 1 respectivamente, há também 2 que são erro padrão). Dispositivos como /dev/stdine /dev/stdoutsã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 unix, eles podem até não ser arquivos de dispositivo; por exemplo, no Linux, eles são links simbólicos para/proc/self/fd/0 e amigos, e esses são, por sua vez, links simbólicos "mágicos" para qualquer arquivo que o processo já tenha aberto no descritor de arquivo.
Alterar as permissões de /dev/stdine /dev/stdoutsó mudaria o que acontece quando esses nomes de arquivo são usados explicitamente. Isso não afeta nada relacionado ao terminal e não afeta o uso normal de entrada e saída padrão, pois as permissões são importantes apenas ao abrir um nome de arquivo específico.
O que mesgfaz é alterar as permissões do terminal de controle do processo . Para um aplicativo que está sendo executado em um terminal, o terminal é 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 ttypara ver qual é o dispositivo terminal. mesg né equivalente a chmod g-w "$(tty)"e mesg yé equivalente a chmod g+w "$(tty)".
mesg npode usar permissões para afetar os futuroswritesomente porquewriteainda não possui o terminal aberto.