Bem, tecnicamente você não está redirecionando nada aqui.
Chamar script /dev/null faz com que script salve todo o texto datilografado em /dev/null , o que na prática significa descartar o conteúdo.
Veja man script para informações detalhadas e util-linux-ng para implementação ( misc-utils/script.c ).
Isso não tem nada a ver com screen , na verdade. Por que isso funciona é invocar script tem um efeito colateral de criar um pseudo-terminal para você em /dev/pts/X . Dessa forma, você não precisa fazer isso sozinho, e a tela não terá problemas de permissão - se você su do usuário A para o usuário B , invocando diretamente screen você tenta pegar a posse do pseudo-terminal do usuário A . Isso não terá sucesso a menos que você esteja root . É por isso que você vê a mensagem de erro.