私はカスタムボードとUNIXシリーズのオペレーティングシステムを開発しています。 SSHを使用して接続するときにルートがないと、次のSELinuxエラーが発生します。有効なコンテキストを取得できません。ユーザーはrootユーザーではありません。私の日誌で私は読んだ。
pam_selinux(sshd:session): Unable to get valid context for user
ssh_selinux_getctxbyname: Failed to get default SELinux security
ssh_selinux_getctxbyname: Failed to get default SELinux security
ssh_selinux_setup_pty: security_compute_relabel: Invalid argument
私の殻から私は読んだUnable to get valid context for user
。
したがって、私はこれが/usr/sbin/sshd
SELinuxのコンテキストであると考え、そのラベルが間違っています。sestatus -v
ルートなしで実行すると、次のようになります。
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: permissive
Policy MLS status: disabled
Policy deny_unknown status: denied
Memory protection checking: actual (secure)
Max kernel policy version: 31
Process contexts:
Current context: system_u:system_r:initrc_t
Init context: system_u:system_r:init_t
File contexts:
Controlling terminal: system_u:object_r:initrc_devpts_t
/etc/passwd system_u:object_r:etc_t
/etc/shadow system_u:object_r:shadow_t
/bin/login system_u:object_r:login_exec_t
/bin/sh system_u:object_r:bin_t
/sbin/init system_u:object_r:init_exec_t
/usr/sbin/sshd system_u:object_r:root_t
/lib/libc.so.6 system_u:object_r:lib_t -> system_u:object_r:lib_t
実行id -Z
中 /usr/sbin/sshd system_u:system_r:kernel_t
またはsystem_u:system_r:initrc_t
。にラベルを付けrestorecon -v -r /*
直し、/usr/sbin/sshd
プロセスを試してみたので、system_u:system_r:kernel_t
ファイル/usr/sbin/sshd
のコンテキストが system_u:system_r:bin_t
。
私の考えではsshdのための良いコンテキストはsystem_u:object_r:sshd_exec_t
。ルートのchconを使用して設定しようとしましたが、id -Z
ルートなしで実行するとコンテキストにラベルが再割り当てされず、再起動後にルートsshdがない場合はコンテキストにラベルが付けられません。
私のシステムではsemangeプログラムは利用できず、設定する「ログインブール」はありません。私のgetsebool -aリストは非常に短いです。
私の/etc/pam.d/sshd
設定には次の行があります。
session optional /lib/security/pam_selinux.so close
session optional /lib/security/pam_selinux.so multiple open
上記のpam構成ファイルから2行目を削除すると、ログエラーのみが発生し、コンソールエラーは発生しません。また、これらの2行を削除すると、ログとコンソールのエラーが発生します。なぜ?
誰でも私を助けることができますか?ありがとう