
Entonces, ahora que tengodescubrí que .ssh
los archivos necesitan elssh_home_t
contexto del archivo, ahora necesito descubrir cómo anidar las reglas de SELinux.
Mi primer problema es que no puedo encontrar ninguna lista de contextos de archivos SELinux que describan su uso previsto. Entonces, puede que me vaya aquí. Creo que necesito hacer tres cosas, en este orden:
- Establezca cada directorio que coincida
/exports/home/$USER
connfs_t
sintambién coincide con cualquier subdirectorio bajo$USER
. Esto le dice a mi servidor NFS que los directorios personales pueden exportarse legalmente. - Configurar todo para que coincida
/exports/home/$USER/.*
con... ¿algo? Aquí es donde sería útil una lista completa con descripciones. ¿SELinux tiene un contexto de archivo que generalmente designa archivos en el directorio de inicio de un usuario? - Establecer todo coincidente
/exports/home/$USER/\.ssh(/.*)
soloassh_home_t
, por lo que SSHD puede permitir el uso deauthorized_keys
.
Necesito invocar las tres reglas desde el servidor NFS. Y necesito invocar la segunda y tercera reglas.como usuario individualen los archivos de ese usuario individual desde cualquier host que monte el directorio de inicio. Porque, obviamente espero, aplastar la raíz en cualquier host que monte uno de estos directorios de inicio. Lo más probable es que un usuario esté creando archivos, incluidos archivos ssh, desde un host que no es el servidor NFS.
ACTUALIZAR
Creo que he descubierto los contextos de archivos correctos. Ahora sólo necesito encontrar las expresiones regulares correctas.
# semanage fcontext -a nfs_t '<regexp 1>'
# semanage fcontext -a user_home_t '<regexp 2>'
# semanage fcontext -a ssh_home_t '<regexp 3>'
dónde
<regexp 1>
atrapa/exports/home/$USER
y no avanza más.<regexp 2>
capturas/exports/home/$USER\.*
excepto porexports/home/$USER/\.ssh(/.*)?
.<regexp 3>
capturasexports/home/$USER/\.ssh(/.*)?
.
y $USER
es independiente de las cadenas (es decir, cualquier usuario), yExpresiones regulares extendidas POSIXparecen estar prohibidos.
Respuesta1
Una respuesta fácil y sorprendente:
SELinux ya tiene una regla predeterminada para `/export/home/*. Simplemente suelte la "s" y ya estaba arreglado.