computerの日記

Cisco,SHELL,C,Qt,C++,Linux,ネットワーク,Windows Scriptなどの発言です

SELinux を頑張る-その4

では、次に、ユーザーを作成した時に、staff_u をデフォルトにしましょう。

# semanage login -m -s staff_u __default__

設定を確認します。

# semanage login -l

(表示)
ログイン名 SELinux ユーザー MLS/MCS 範囲 サービス名
__default__ staff_u s0 *
root staff_u s0 *

次に、staff_u に、staff_r, system_r, sysadm_r の SELinux ロールを割当てます。
要すれば、SELinux ロールの unconfined_r を抜きます。

現在の設定を確認します。

# semanage user -l

(表示)

ラベリング MLS/ MLS/
SELinux ユーザー プレフィックス MCS レベル MCS 範囲 SELinux ロール

guest_u user s0 s0 guest_r
root user s0 s0-s0:c0.c1023 staff_r sysadm_r system_r unconfined_r
staff_u user s0 s0-s0:c0.c1023 staff_r sysadm_r system_r unconfined_r
sysadm_u user s0 s0-s0:c0.c1023 sysadm_r
system_u user s0 s0-s0:c0.c1023 system_r unconfined_r
unconfined_u user s0 s0-s0:c0.c1023 system_r unconfined_r
user_u user s0 s0 user_r
xguest_u user s0 s0 xguest_r

設定します。

# semanage user -m -R "staff_r system_r sysadm_r" staff_u

(表示)

ラベリング MLS/ MLS/
SELinux ユーザー プレフィックス MCS レベル MCS 範囲 SELinux ロール

guest_u user s0 s0 guest_r
root user s0 s0-s0:c0.c1023 staff_r sysadm_r system_r unconfined_r
staff_u user s0 s0-s0:c0.c1023 staff_r sysadm_r system_r
sysadm_u user s0 s0-s0:c0.c1023 sysadm_r
system_u user s0 s0-s0:c0.c1023 system_r unconfined_r
unconfined_u user s0 s0-s0:c0.c1023 system_r unconfined_r
user_u user s0 s0 user_r
xguest_u user s0 s0 xguest_r

マシン再起動

myuser ユーザーのセキュリティコンテキストを確認します。

$ id
uid=1000(myuser) gid=1000(myuser) groups=1000(myuser) context=staff_u:staff_r:staff_t:s0

su コマンドを発行して、正しいパスワードを入力しても、以下のようになり、root になれません。

$ su
パスワード :
su: 認証失敗

というのも、staff_u は、su コマンドが禁止されているためです。

ということは、root になれなくなってしまったということなのだ。。
単純に、unconfined_u を抜いてしまうと、root になれなくなってしまいます。
このような場合を考慮して、sudo を有効に使う必要がありました。

つづく。