Ontem adicionei uma unidade a uma caixa da VM Centos6, criei um ponto de montagem / home na unidade e movi um usuário (Jenkins, neste caso) para liberar espaço do / ponto de montagem.
Isso pareceu funcionar bem, e todas as permissões e rótulos parecem corretos, mas hoje cedo comecei a ver os problemas em que não era possível usar o SSH na caixa como o usuário do jenkins em qualquer caixa. SSH para a caixa como root e su
ing para jenkins funcionaram bem. Além disso, se eu fizesse um service sshd stop
e, em seguida, /usr/sbin/sshd
, eu poderia me conectar diretamente à caixa como o usuário do jenkins.
Depois de muita depuração, acabei descobrindo negações do SELinux em /var/log/audit/audit.log
da seguinte forma:
type=AVC msg=audit(1428584552.564:187): avc: denied { search } for pid=1798 comm="sshd" name="/" dev=sdd1 ino=2 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:file_t:s0 tclass=dir
type=AVC msg=audit(1428584552.567:188): avc: denied { getattr } for pid=1798 comm="sshd" path="/home" dev=sdd1 ino=2 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:file_t:s0 tclass=dir
Definir o SELinux como permissivo, em seguida, permitiu que eu me reconectasse como o usuário do jenkins remotamente.
Eu não sou muito bom com o SELinux, mas depois de ler (novamente) os tutoriais do Gentoo sobre o SELinux Eu li esses erros como sshd tentando acessar ambos / e / home com um contexto do sistema de system_u:system_r:sshd_t:s0
. Em vez disso, esses pontos finais são rotulados como system_u:object_r:file_t:s0
, que é pelo menos o que o diretório / home é rotulado como (não muito certo como ver o rótulo para /).
Para mim, esses rótulos parecem corretos para esses diretórios e não sei muito bem por que ele está tentando procurar um rótulo sshd_t até agora na árvore de diretórios.
A execução de ls -laZ para obter as partes importantes (pasta .ssh e authorized_keys) me dá:
drwx------. jenkins jenkins unconfined_u:object_r:ssh_home_t:s0 .ssh
e
-rw-------. jenkins jenkins unconfined_u:object_r:ssh_home_t:s0 authorized_keys
Que parece o mesmo que as outras caixas que estou verificando e elas funcionam bem.
O que preciso fazer para que o SELinux coopere para que eu possa voltar a aplicar?
EDIT: Tentei desmontar / home e usar o restorecon para tentar reclassificar o diretório graças à sugestão de Michael Hampton mas isso não alterou o rótulo no diretório e, como mencionado acima, o rótulo system_u:object_r:file_t:s0
de / home parece correto quando comparado a outras caixas que estão funcionando bem.
Existe uma maneira de alterar o contexto do sistema do sshd ao tentar acessar este diretório?