Uma resposta fácil para bater a testa:
O SELinux já tem uma regra padrão para '/ export / home / *. Basta soltar o "s" e eu fui consertado.
Então, agora que eu descobri que .ssh os arquivos precisam do contexto do arquivo ssh_home_t , agora preciso descobrir como aninhar as regras do SELinux.
Meu primeiro problema é que não consigo encontrar nenhuma lista de contextos de arquivos do SELinux que descrevam o que eles pretendem usar. Então, eu posso estar fora daqui. Acho que preciso fazer três coisas, nesta ordem:
/exports/home/$USER a nfs_t sem também corresponderem a quaisquer subdiretórios em $USER . Isso informa ao meu servidor NFS que os diretórios pessoais podem ser exportados legalmente. /exports/home/$USER/.* para ... alguma coisa? É aqui que uma lista abrangente com descrições seria útil. O SELinux tem um contexto de arquivo que geralmente designa arquivos no diretório pessoal de um usuário? /exports/home/$USER/\.ssh(/.*) somente a ssh_home_t , para que o SSHD possa permitir o uso de authorized_keys . Eu preciso invocar todas as três regras do servidor NFS. E preciso invocar a segunda e a terceira regra como usuário individual nos arquivos desse usuário individual de qualquer host que esteja montando o diretório inicial. Porque, obviamente, espero, eu vou estar esmagando o root em qualquer host que monte um desses diretórios home. É mais provável que um usuário esteja criando arquivos, incluindo arquivos ssh, de um host que não seja o servidor NFS.
UPDATE
Acho que descobri os contextos de arquivos corretos. Agora, só preciso descobrir as expressões regulares certas.
# semanage fcontext -a nfs_t '<regexp 1>'
# semanage fcontext -a user_home_t '<regexp 2>'
# semanage fcontext -a ssh_home_t '<regexp 3>'
onde
<regexp 1> pega /exports/home/$USER e não vai mais longe. <regexp 2> pega /exports/home/$USER\.* exceto para exports/home/$USER/\.ssh(/.*)? . <regexp 3> pega exports/home/$USER/\.ssh(/.*)? . e $USER são agnósticos (ou seja, qualquer usuário), e Expressões Regulares Extensas POSIX parecem ser proibido.