O comando write essencialmente grava em um arquivo de dispositivo, como /dev/pts/1 . Parece consultar utmp para descobrir a correspondência entre usuários e ttys. Pode-se contornar isso simplesmente listando o conteúdo de /dev/pts com ls -lh /dev/pts (embora provavelmente não seja necessário - veja abaixo).
mesg parece não fazer nada além de definir ou remover a permissão de gravação do grupo do arquivo de dispositivo tty:
anthony@laura:~$ who am i
anthony pts/6 Jun 11 17:06 (:0:S.5)
anthony@laura:~$ mesg
is n
anthony@laura:~$ chmod g+w /dev/pts/6
anthony@laura:~$ mesg
is y
Os arquivos em /dev/pts pertencem ao grupo tty . O comando write é setado para este grupo para escrever para eles. Portanto, para que o point (2) funcione, deve ser possível usar as ACLs para tornar utmp legível pelo grupo tty :
setfacl -m g:tty:r /var/run/utmp
(Alterar utmp para que seu grupo seja tty também funcione, mas quem sabe quais efeitos colaterais isso pode ter.)
Para que o point (3) funcione (dado que o sistema de arquivos /dev/pts não suporta ACLs), acredito que você precisaria modificar o write e implementar a funcionalidade nele (por exemplo, ler um arquivo "allow_mesg" no diretório inicial do usuário de destino e veja se o usuário do sistema de mensagens está listado lá).