
그래서 이제 나는.ssh
파일에 ssh_home_t
파일 컨텍스트 가 필요하다는 것을 알아냈습니다., 이제 SELinux 규칙을 중첩하는 방법을 알아내야 합니다.
첫 번째 문제는 용도가 무엇인지 설명하는 SELinux 파일 컨텍스트 목록을 찾을 수 없다는 것입니다. 그럼 난 여기서 나갈 수도 있겠네요. 내 생각엔 다음 세 가지 일을 순서대로 해야 할 것 같아.
- 일치하는 모든 디렉터리를
/exports/home/$USER
다음과 같이 설정합니다.nfs_t
없이아래의 하위 디렉터리와도 일치합니다$USER
. 이는 내 NFS 서버에 홈 디렉토리를 합법적으로 내보낼 수 있음을 알려줍니다. - 모든 일치 항목을
/exports/home/$USER/.*
... 뭔가로 설정하시겠습니까? 여기에서 설명이 포함된 포괄적인 목록이 유용할 것입니다. SELinux에는 일반적으로 사용자의 홈 디렉터리에 있는 파일을 지정하는 파일 컨텍스트가 있습니까? - 모든 항목을 일치하도록 설정
/exports/home/$USER/\.ssh(/.*)
오직로ssh_home_t
SSHD에서 의 사용을 허용할 수 있습니다authorized_keys
.
NFS 서버에서 세 가지 규칙을 모두 호출해야 합니다. 그리고 두 번째와 세 번째 규칙을 호출해야 합니다.개인 사용자로서홈 디렉토리를 마운트하는 모든 호스트의 개별 사용자 파일에. 분명히 나는 이러한 홈 디렉토리 중 하나를 마운트하는 모든 호스트에서 루트를 스쿼시할 것이기를 바랍니다. 사용자는 NFS 서버가 아닌 호스트에서 SSH 파일을 포함한 파일을 생성할 가능성이 높습니다.
업데이트
올바른 파일 컨텍스트를 알아낸 것 같습니다. 이제 올바른 정규식을 알아내면 됩니다.
# semanage fcontext -a nfs_t '<regexp 1>'
# semanage fcontext -a user_home_t '<regexp 2>'
# semanage fcontext -a ssh_home_t '<regexp 3>'
어디
<regexp 1>
붙잡고/exports/home/$USER
더 이상 가지 않습니다.<regexp 2>
잡는다/exports/home/$USER\.*
제외하고exports/home/$USER/\.ssh(/.*)?
.<regexp 3>
잡는다exports/home/$USER/\.ssh(/.*)?
.
문자열에 구애받지 않습니다 $USER
(즉, 모든 사용자).POSIX 확장 정규식허용되지 않는 것으로 보입니다.
답변1
쉽고 놀라운 답변:
SELinux에는 이미 `/export/home/*에 대한 기본 규칙이 있습니다. "s"를 삭제하면 문제가 해결되었습니다.