私はUbuntu 14.04派生、基本OS Freyaを使用しています。
多くのモジュールを含むこのパッケージを使用してSELinuxをインストールして構成しましたselinux-policy-default
。また、staff_u
SELinuxユーザーに私のユーザーを追加しました。
$ 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_t
Xsession.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/sudoers
sudoの使用に切り替えるためのアクセス権を与えましたが、デフォルト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.so
login
sshd
私はすぐに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:s0
selinux ユーザーに割り当てられた役割が必要です。プロセスsshd
はドメインで実行されますsystem_r:sshd_t
。デフォルトのコンテキストを切り替えようとすると、staff_u
ログインsysadm_r:sysadm_t|system_r:system_r
はstaff_r:staff_t:s0
そのguest_r:guest_t
部分のみを置き換えることに置き換えられます。これは、system_r:sshd_t
またはへのコンテキスト切り替えを許可しないポリシーに関連しています。system_r
sysadm_t
誤った組み合わせを設定すると、Fedoraはunconfined_r:unconfined_t
forをtargeted
含むデフォルトの種類を生成しますが、selinuxユーザーはテスト中にその役割にアクセスできません。default_contexts
user_r:user_t
system_r:sshd_t
user_r
このトピックの詳細:
https://selinuxproject.org/page/PolicyConfigurationFiles#contexts.2Fusers.2F.5Bseuser_id.5D_File
https://selinuxproject.org/page/RefpolicyBasicRoleCreation#Default_Contexts