
Итак, теперь, когда явыяснил, что .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. И мне нужно вызвать второе и третье правилакак индивидуальный пользовательна файлах этого отдельного пользователя с любого хоста, монтирующего домашний каталог. Потому что, очевидно, я надеюсь, что я буду раздавливать root на любом хосте, который монтирует один из этих домашних каталогов. Пользователь, скорее всего, будет создавать файлы, включая файлы ssh, с хоста, который не является сервером NFS.
ОБНОВЛЯТЬ
Я думаю, что я разобрался с правильными контекстами файлов. Теперь мне просто нужно разобраться с правильными регулярными выражениями.
# 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" и все будет исправлено.