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.