
Então, agora que eudescobri que .ssh
os arquivos precisam do ssh_home_t
contexto do arquivo, agora preciso descobrir como aninhar as regras do SELinux.
Meu primeiro problema é que não consigo encontrar nenhuma lista de contextos de arquivos SELinux que descrevam o uso pretendido. Então, posso estar fora daqui. Acho que preciso fazer três coisas, nesta ordem:
- Defina todos os diretórios correspondentes
/exports/home/$USER
paranfs_t
semtambém correspondendo a quaisquer subdiretórios em$USER
. Isso informa ao meu servidor NFS que os diretórios pessoais podem ser exportados legalmente. - Defina tudo correspondente
/exports/home/$USER/.*
para... alguma coisa? É aqui que uma lista abrangente com descrições seria útil. O SELinux possui um contexto de arquivo que geralmente designa arquivos no diretório inicial de um usuário? - Defina tudo correspondente
/exports/home/$USER/\.ssh(/.*)
apenasparassh_home_t
, então o SSHD pode permitir o uso deauthorized_keys
.
Preciso invocar todas as três regras do servidor NFS. E preciso invocar a segunda e a terceira regrascomo um usuário individualnos arquivos desse usuário individual de qualquer host montando o diretório inicial. Porque, obviamente, espero esmagar qualquer host que monte um desses diretórios pessoais. É mais provável que um usuário crie arquivos, incluindo arquivos ssh, de um host que não seja o servidor NFS.
ATUALIZAR
Acho que descobri os contextos de arquivo corretos. Agora, só preciso descobrir as expressões regulares corretas.
# 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 porexports/home/$USER/\.ssh(/.*)?
.<regexp 3>
pegaexports/home/$USER/\.ssh(/.*)?
.
e $USER
é independente de string (ou seja, qualquer usuário), eExpressões regulares estendidas POSIXparecem não ser permitidos.
Responder1
Uma resposta fácil e contundente:
O SELinux já possui uma regra padrão para `/export/home/*. Basta soltar o "s" e eu estava consertado.