ログイン時に無効な役割とタイプ

ログイン時に無効な役割とタイプ

私はUbuntu 14.04派生、基本OS Freyaを使用しています。

多くのモジュールを含むこのパッケージを使用してSELinuxをインストールして構成しましたselinux-policy-default。また、staff_uSELinuxユーザーに私のユーザーを追加しました。

$ sudo semanage login -l

Login Name           SELinux User         MLS/MCS Range        Service

__default__          unconfined_u         SystemLow-SystemHigh *
naftuli              staff_u              SystemLow-SystemHigh *
root                 unconfined_u         SystemLow-SystemHigh *
system_u             system_u             SystemLow-SystemHigh *

ちなみにSELinuxユーザーは次のようになります。

$ sudo semanage user -l

                Labeling   MLS/       MLS/                          
SELinux User    Prefix     MCS Level  MCS Range                      SELinux Roles

root            sysadm     SystemLow  SystemLow-SystemHigh           staff_r sysadm_r system_r
staff_u         staff      SystemLow  SystemLow-SystemHigh           staff_r sysadm_r
sysadm_u        sysadm     SystemLow  SystemLow-SystemHigh           sysadm_r
system_u        user       SystemLow  SystemLow-SystemHigh           system_r
unconfined_u    unconfined SystemLow  SystemLow-SystemHigh           system_r unconfined_r
user_u          user       SystemLow  SystemLow                      user_r

ログイン後、次のような奇妙なタイプが発生sysadm_rしましたstaff_r

$ id -Z
staff_u:sysadm_r:gpg_agent_t:SystemLow

gpg_agent_tXsession.dにはgpg-agent次のスクリプトがあり、説明できます/etc/X11/Xsession.d/90gpg-agent

: ${GNUPGHOME=$HOME/.gnupg}

GPGAGENT=/usr/bin/gpg-agent
PID_FILE="$HOME/.gpg-agent-info"

if grep -qs '^[[:space:]]*use-agent' "$GNUPGHOME/gpg.conf" "$GNUPGHOME/options" &&
   test -x $GPGAGENT &&
   { test -z "$GPG_AGENT_INFO" || ! $GPGAGENT 2>/dev/null; }; then

   if [ -r "$PID_FILE" ]; then
       . "$PID_FILE"
   fi

   # Invoking gpg-agent with no arguments exits successfully if the agent
   # is already running as pointed by $GPG_AGENT_INFO
   if ! $GPGAGENT 2>/dev/null; then
       STARTUP="$GPGAGENT --daemon --enable-ssh-support --sh --write-env-file=$PID_FILE $STARTUP"
   fi
fi

gpg_agent_tしかし、私が開くグラフィックシェルにはなぜその種類があり、なぜその文字があるのか​​わかりませんsysadm_r。私は/etc/sudoerssudoの使用に切り替えるためのアクセス権を与えましたが、デフォルトsysadm_rでは次のことはできません。

naftuli ALL=(ALL:ALL) ROLE=sysadm_r PASSWD: ALL

TTYを使ってログインすると、すべてが良く見えます。

staff_u:staff_r:staff_t:SystemLow-SystemHigh

lightdmやガラが私にこの奇妙なタイプと役割を提供するのはなぜですか?どうすれば解決できますか?

私はlightdmやGalaにポリシーがないことを知っており、おそらくポリシーを作成します。このシステムを強制モードに設定しようとしています。現在許可モードになっています。 .X/gala/lightdm を受信するとすぐにクラッシュが発生するためですsetenforce 1


編集:gpg-agent起動スクリプトを編集すると、staff_u:sysadm_r:sysadm_tセッションフローは次のようになります。

system_u:system_r:sysadm_t:s0   root      1875  0.0  0.0 292864  5888 ?        SLsl 10:33   0:00 lightdm
system_u:system_r:xserver_t:s0  root      1927  6.3  0.4 396864 74804 tty7     Ssl+ 10:33  12:38 /usr/bin/X -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
system_u:system_r:sysadm_t:s0   root      4699  0.0  0.0 170580  4688 ?        Sl   10:33   0:00 lightdm --session-child 12 19
staff_u:sysadm_r:sysadm_t:s0    naftuli   5067  2.0  0.4 974688 75180 ?        Sl   10:34   4:08 gala

私の考えでは、Galaがこのようなことをしたのは間違っていると思います。私のログインの挨拶であるlightdmかもしれませんが、私はわかりません。繰り返しますが、これはUbuntuなのでSELinuxを認識する可能性はありません。

答え1

本当に良い質問で興味があって検索をしてみましたが、結果的にはあまり役に立ちませんでした。最後に、Freenode IRCに連絡して、#selinux基本的なselinuxの役割を選択する方法を尋ねました。幸い、ユーザーはgrift不足している情報を提供することで質問に答えることができます。

selinux コンテキスト設定の主なコンポーネントは、pam_selinux.soセッションの設定を担当します。 pamモジュールにはさまざまな構成オプションがあり、ユーザーに必要なコンテキストを対話的に要求することもできます。ログイン中に情報がない場合は、に設定されているコンテキストを/etc/selinux/$TYPE/contexts/user/$USERID使用して(定義されていない場合)に保存されている情報を使用することに置き換えられます。__default__contexts/default_contexts

root@u1604-cnt-host:/etc/pam.d# grep selinux *
lightdm:session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
lightdm:session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
lightdm-autologin:session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
lightdm-autologin:session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
lightdm-greeter:session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
lightdm-greeter:session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
login:session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
login:session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
sshd:session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so close
sshd:session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so open
systemd-user:session  required pam_selinux.so close
systemd-user:session  required pam_selinux.so nottys open
root@u1604-cnt-host:/etc/pam.d#

Asはorと同じ呼び出しをlightdm使用しますが、これは問題の原因ではありません。pam_selinux.sologinsshd

私はすぐにUbuntuで必要な変更を試しましたが、プロセスレベルでselinuxポリシーが混乱しているという印象を受けました。そのため、Fedoraでいくつかのテストを行いました。

[root@workbench users]# cat /etc/selinux/targeted/contexts/users/staff_u
system_r:local_login_t:s0       guest_r:guest_t:s0 staff_r:staff_t:s0
system_r:remote_login_t:s0      staff_r:staff_t:s0
system_r:sshd_t:s0              guest_r:guest_t:s0 staff_r:staff_t:s0
%<--- snipp ---%<

system_r:sshd_t:s0正常に動作するように切り替えると、guest_r:guest_t:s0selinux ユーザーに割り当てられた役割が必要です。プロセスsshdはドメインで実行されますsystem_r:sshd_t。デフォルトのコンテキストを切り替えようとすると、staff_uログインsysadm_r:sysadm_t|system_r:system_rstaff_r:staff_t:s0そのguest_r:guest_t部分のみを置き換えることに置き換えられます。これは、system_r:sshd_tまたはへのコンテキスト切り替えを許可しないポリシーに関連しています。system_rsysadm_t

誤った組み合わせを設定すると、Fedoraはunconfined_r:unconfined_tforをtargeted含むデフォルトの種類を生成しますが、selinuxユーザーはテスト中にその役割にアクセスできません。default_contextsuser_r:user_tsystem_r:sshd_tuser_r

このトピックの詳細:

https://selinuxproject.org/page/PolicyConfigurationFiles#contexts.2Fusers.2F.5Bseuser_id.5D_File

https://selinuxproject.org/page/RefpolicyBasicRoleCreation#Default_Contexts

関連情報