SELinux
- 概要
このトピックでは、Security-Enhanced Linuxに関する基本情報を提供します。
- 目的
SELinux、およびSLE MicroにSELinuxを設定する方法を理解する必要があります。
- 所要時間
この記事の理解には40分ほどを要します。
1 SELinuxについて #
SELinuxは、そのセキュリティフレームワークをLinuxカーネルで使用する追加のLinuxセキュリティソリューションとして開発されました。その目的は、標準の任意アクセス制御(DAC)や、所有者/グループ/ワールド、読み込み/書き込み/実行という従来のファイル許可を超えた、よりきめ細かいセキュリティポリシーを実現することにありました。
SELinuxでは、オブジェクト(たとえば、ファイルやネットワークソケット)に付けられたラベルを用い、そのラベルを使用してアクセスを決定します。
SELinuxのデフォルトの動作は、あらゆるアクセスを拒否することです。SELinuxでは、SELinuxポリシーで特別に許可されたアクションのみが許可されます。SELinuxのもう1つのセキュリティ強化機能として、SELinuxでは、プロセスが同じシステムの他のプロセスのファイルにアクセスできなくなるまで、プロセスを厳密に制限できます。
SELinuxは、既存のセキュリティソリューションを置き換えるのではなく強化するために設計されました。たとえば、システムでSELinuxを使用していても、任意アクセス制御(DAC)は引き続き適用されます。アクセスが先にDACで拒否された場合、SELinuxは使用されません。そのアクセスはすでに別のメカニズムによってブロックされているからです。
2 SELinuxの入手 #
SELinuxは、SLE Microのインストール時にYaSTによってデフォルトでインストールされるか、または事前構築のイメージに含まれています。
SELinuxがシステムにセットアップされていない場合は、次のコマンドを実行します。
#
transactional-update setup-selinux
コマンドが完了したら、システムを再起動します。このコマンドは、SELinuxポリシーがインストールされていなければインストールし、SELinuxのenforcing
モードを設定して、initrd
を再構築します。
3 SELinuxのモード #
SELinuxは、disabled
、permissive
、またはenforcing
の3つのモードのいずれかで実行できます。
disabled
モードを使用するということは、SELinuxポリシーのルールが一切適用されず、システムが保護されないことを意味します。したがって、disabled
モードの使用はお勧めしません。
permissive
モードでは、SELinuxがアクティブになり、セキュリティポリシーがロードされてファイルシステムがラベル付けされ、アクセス拒否エントリがログに記録されます。ただし、ポリシーは強制されないため、アクセスは実際には拒否されません。
enforced
モードでは、セキュリティポリシーが適用されます。ポリシーで明示的に許可されていないアクセスはそれぞれ拒否されます。
SELinuxのモードの切り替えについては、3.1項 「SELinuxモードの変更」を参照してください。
3.1 SELinuxモードの変更 #
SELinuxのモードを一時的または永続的に切り替えることができます。
3.1.1 SELinuxモードの一時的な変更 #
SELinuxをpermissive
またはenforcing
に一時的に設定するには、setenforce
コマンドを使用します。
setenforce
コマンドの構文は次のとおりです。
#
setenforceMODE_ID
ここで、MODE_IDは、permissive
モードの場合は0、enforced
モードの場合は1です。
setenforce
コマンドを使用してSELinuxを無効にすることはできないことに注意してください。
3.1.2 SELinuxモードの永続的な変更 #
SELinuxのモードを変更してシステムの再起動後もそのモードを維持するには、/etc/selinux/config
設定ファイルを編集します。このファイルで、システムのSELinuxを無効にすることもできます。ただし、この操作はお勧めできません。SELinuxが原因でシステムに問題が発生している可能性がある場合は、代わりにpermissive
モードに切り替えてシステムをデバッグします。
/etc/selinux/config
ファイルで、SELINUX
の値を次のようにdisabled
、permissive
、またはenforced
に変更します。
SELINUX=disabled
このファイルでの変更は、次回の再起動後に適用されます。
disabled
モードから切り替えた後のシステムの再ラベル付け
システムでSELinuxを無効にしてから、後で有効にする場合は、必ずシステムを再ラベル付けしてください。SELinuxが無効になっているときにファイルシステムに変更を加えた場合、その変更はコンテキストに反映されません(たとえば、新しいファイルにはコンテキストがありません)。したがって、システムを再ラベル付けする必要があります。そのためには、restorecon
コマンドを使用するか、autorelabel
ブートパラメータを使用するか、または次回のブート時に再ラベル付けをトリガするファイルを作成します。ファイルを作成するには、次のコマンドを実行します。
#
touch /etc/selinux/.autorelabel
再起動後に、/etc/selinux/.autorelabel
ファイルは別のフラグファイル/etc/selinux/.relabelled
に置き換えられ、それ以降の再起動時に再ラベル付けされなくなります。
3.1.3 SELinuxのアクティブなモードの確認 #
モードを確認するには、次のコマンドを実行します。
#
getenforce
このコマンドは、指定したMODE_IDに応じて、permissive
またはenforced
を返します。
3.2 SELinuxが機能していることの確認 #
設定の変更を行う場合は、permissiveモードに切り替えると便利な場合があります。このモードの間に、ユーザがファイルに誤ってラベル付けしたために、enforcingモードに戻したときに問題が発生する可能性があります。
システムをセキュリティ保護された状態に戻すには、次の手順を実行します。
セキュリティコンテキストをリセットします。
>
sudo
restorecon -R /
/etc/selinux/config
にSELINUX=enforcing
を設定して、enforcingモードに切り替えます。システムを再起動し、再度ログインします。
sestatus -v
コマンドを実行します。次のような出力が表示されるはずです。>
sudo
sestatus -v
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: requested(insecure) Max kernel policy version: 33 Process contexts: Current context: unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 Init context: system_u:system_r:init_t:s0 /usr/sbin/sshd system_u:system_r:sshd_t:s0-s0:c0.c1023 File contexts: Controlling terminal: unconfined_u:object_r:user_tty_device_t:s0 /etc/passwd system_u:object_r:passwd_file_t:s0 /etc/shadow system_u:object_r:shadow_t:s0 /bin/bash system_u:object_r:shell_exec_t:s0 \ -> system_u:object_r:shell_exec_t:s0 /bin/login system_u:object_r:login_exec_t:s0 /bin/sh system_u:object_r:bin_t:s0 \ -> system_u:object_r:shell_exec_t:s0 /sbin/agetty system_u:object_r:bin_t:s0 \ -> system_u:object_r:getty_exec_t:s0 /sbin/init system_u:object_r:bin_t:s0 -> \ system_u:object_r:init_exec_t:s0 /usr/sbin/sshd system_u:object_r:sshd_exec_t:s0システムが適切に機能していない場合は、
/var/log/audit/audit.log
のログファイルを確認してください。詳細については、SELinux troubleshootingを参照してください。
4 SELinuxのセキュリティコンテキスト #
セキュリティコンテキストは、ファイルまたはプロセスに割り当てられる一連の情報です。セキュリティコンテキストは、SELinuxユーザ、役割、タイプ、レベル、およびカテゴリで構成されます。この情報を使用してアクセス制御が判断されます。
- SELinuxユーザ
特定の一連の役割および特定の「レベル」の範囲に対して権限が付与される、ポリシーで定義されたID。各Linuxユーザは1人のSELinuxユーザにのみマップされます。ただし、1人のSELinuxユーザは複数の役割を持つことができます。
SELinuxは、Linuxが
/etc/passwd
で管理しているユーザアカウントのリストを使用せず、SELinux専用のデータベースとマッピングを使用します。規則により、ID名の末尾には_u
が付きます。たとえば、user_u
のようになります。新しいLinuxアカウントを作成し、そのアカウントにSELinuxユーザを割り当てないと、デフォルトのSELinuxユーザが使用されます。通常、デフォルト値は
unconfined_u
です。デフォルト値の変更手順については、7.5.2項 「semanage login
コマンド」を参照してください。- role
ユーザに付与できる許可のセットを定義します。役割では、この役割に割り当てられたユーザがアクセスできる「タイプ」を定義します。規則により、役割名の末尾には
_r
が付きます。たとえば、system_r
のようになります。- type
タイプは、特定のファイルとプロセスがどのように相互作用できるかに関する情報を伝えます。プロセスは、具体的なSELinuxタイプを持つファイルで構成され、このタイプ以外のファイルにはアクセスできません。規則により、タイプ名の末尾には
_t
が付きます。たとえば、var_t
のようになります。- level
マルチレベルセキュリティにおけるクリアランスレベルの範囲を指定するオプションの属性です。
- category
プロセス、ファイル、およびユーザにカテゴリを追加できるオプションの属性です。ユーザは同じカテゴリを持つファイルにアクセスできます。
SELinuxのコンテキストの例を次に示します。
allow user_t bin_t:file {read execute gettattr};
このルールの例では、コンテキストタイプuser_t
を持つユーザ(このユーザはソースオブジェクトと呼ばれる)に対し、許可read
、execute
、およびgetattr
を使用して、コンテキストタイプbin_t
を持つクラスfileのオブジェクト(ターゲット)にアクセスすることを許可するように指定しています。
5 SELinuxポリシーの概要 #
ポリシーはSELinuxの重要な要素です。SELinuxポリシーは、どのオブジェクトがシステム上のどのファイル、ディレクトリ、ポート、およびプロセスにアクセスできるかを指定するルールを定義します。これを行うため、これらすべてに対してセキュリティコンテキストが定義されます。
SELinuxポリシーには膨大な数のルールが含まれます。管理しやすくするために、ポリシーは多くの場合、モジュールに分割されます。これにより、管理者はシステムの部分ごとに保護のオン/オフを切り替えることができます。
システムのポリシーを編集する場合、モジュール形式のポリシーを使用するか、モノリシックなポリシーを使用するかを選択できます。後者では1つの巨大なポリシーを使用してシステム上のすべてを保護します。モノリシックなポリシーではなく、モジュール形式のポリシーを使用することを強くお勧めします。モジュール形式のポリシーの方がはるかに管理が容易です。
SLE Microには、SELinuxポリシーtargeted
が付属します。
5.1 SELinuxのモジュールの使用 #
管理者は、モジュールのオン/オフを切り替えることができます。これは一部のSELinuxポリシーのみを無効にしたい場合や、特定のサービスをSELinuxによる保護なしでは実行しない場合に役立ちます。
使用中のすべてのSELinuxポリシーモジュールを表示するには、次のコマンドを実行します。
semodule -l
オフに切り替えるモジュールの名前を取得してから、次のコマンドを実行します。
>
sudo
semodule -d MODULENAME
ポリシーモジュールをオンに切り替えるには、次のコマンドを実行します。
>
sudo
semodule -e MODULENAME
5.2 コンテナのポリシーの作成 #
SLE Microに付属するポリシーでは、コンテナがコンテナデータの外部にあるファイルにアクセスすることは、デフォルトでは許可されません。一方、ネットワークアクセスはすべて許可されます。通常、コンテナはバインドマウントで作成され、/home
や/var
などの他のディレクトリにアクセスできる必要があります。これらのディレクトリへのアクセスを許可したり、逆にシステムでSELinuxを使用していても、一部のポートをコンテナに制限したりしたい場合があります。この場合、アクセスを有効または無効にする新しいポリシールールを作成する必要があります。SLE Microでは、この目的のためにUdicaツールが提供されています。
次の手順では、コンテナのカスタムポリシーを作成する方法を説明します。
SELinuxがenforcingモードになっていることを確認します。詳細については、3.1項 「SELinuxモードの変更」を参照してください。
次のパラメータを使用してコンテナを起動します。
#
podman run -v /home:/home:rw -v /var/:/var/:rw -p 21:21 -it sle15 bashこのコンテナは、マウントポイントへのアクセスを許可しない一方で、他のポートは制限しないデフォルトポリシーで実行されます。
コンテナを終了できます。
コンテナIDを取得します。
#
podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e59f9d0f86f2 registry.opensuse.org/devel/bci/tumbleweed/containerfile/opensuse/bci/ruby:latest /bin/bash 8 minutes ago Up 8 seconds ago 0.0.0.0:21->21/tcp zen_ramanujanUdicaがコンテナのカスタムポリシーを作成するために使用するJSONファイルを作成します。
#
podman inspect e59f9d0f86f2 >OUTPUT_JSON_FILEたとえば、OUTPUT_JSON_FILEを
container.json
に置き換えます。Udicaを実行し、コンテナパラメータに従ってポリシーを生成します。
#
udica -jOUTPUT_JSON_FILECUSTOM_CONTAINER_POLICY次に例を示します。
#
udica -j container.json custom_policy提供される指示に従い、次のコマンドを実行してポリシーモジュールをロードします。
#
semodule -i custom_policy.cil /usr/share/udica/templates/{base_container.cil,net_container.cil,home_container.cil}次のように
--security-opt
オプションを使用して、コンテナを新しいポリシーモジュールで実行します。#
podman run --security-opt label=type:custom_policy.process -v /home:/home:rw -v /var/:/var/:rw -p 21:21 -it sle15 bash
6 SELinuxのブール値 #
SELinuxのブール値を使用することで、ポリシーを柔軟に管理できます。たとえば、ブール値を使用すると、あるサーバで特定のポリシーを無効にし、別のサーバでは同じポリシーをアクティブにしたままにすることができます。つまり、ブール値はポリシールールのスイッチとして理解できます。特定のポリシーを変更するのではなく、オフに切り替えることができます。ポリシーコードでは、ブール値は「チューナブル」と呼ばれます。ブール値はポリシーに含まれているため、ポリシーをロードするとすぐに利用できます。
ブール値は、永続的に変更することも、一時的に変更してセッションが終了するまで継続させることもできます。
SELinuxでは、ブール値の一覧と詳細の表示や、ブール値の状態の変更が可能なツールが提供されています。詳細については、次のセクションを参照してください。
6.1 ブール値の操作 #
6.1.1 ブール値の一覧 #
getsebool
コマンドまたはsemanage
コマンドを使用して、現在定義されているブール値を一覧にできます。現在定義されているすべてのブール値と、その状態を一覧にするには、次のコマンドを実行します。
#
getsebool -a
abrt_anon_write --> off
abrt_handle_event --> off
abrt_upload_watch_anon_write --> on
...
特定のブール値の詳細を取得するには、semanage
コマンドを次のように使用できます。
#
semanage boolean -l
SELinux boolean State Default Description
abrt_anon_write (off , off) Allow abrt to anon write
abrt_handle_event (off , off) Allow abrt to handle event
abrt_upload_watch_anon_write (on , on) Allow abrt to upload watch anon write
個々のブール値のステータスを取得するには、次のコマンドを使用できます。
#
getseboolBOOLEAN_NAME
または、単にsemanage boolean
の出力でgrep
コマンドを使用することもできます。
#
semanage boolean -l | grepBOOLEAN_NAME
6.1.2 ブール値の切り替え #
コマンドsetsebool
とsemanage
を使用してブール値を切り替えることができます。ブール値のステータスは、永続的に変更することも、セッション終了まで一時的に変更することもできます。ブール値を一時的に変更するには、次のコマンドを実行します。
#
setseboolBOOLEAN_NAMEBOOLEAN_VALUE
ここで、BOOLEAN_VALUEは、on
またはoff
のいずれかです。
ブール値を永続的に変更するには、次の2つのコマンドのいずれかを実行します。
#
setsebool -PBOOLEAN_NAMEBOOLEAN_VALUE
または、semanage
コマンドを使用します。
#
semanage boolean -m --BOOLEAN_VALUEBOOLEAN_NAME
ここで、BOOLEAN_VALUEは、on
またはoff
のいずれかです。
1つのブール値で複数のポリシールールを有効または無効にできます。どのポリシールールがどのブール値によって有効または無効にされているかを確認するには、ポリシーファイルを解析できるsedispol
ツールを使用します。
#
sedispol /etc/selinux/targeted/policy/policy.32
ポリシールールは通常、巨大であるため、f
を選択してファイル名を指定し、出力ファイルを設定することをお勧めします。ファイル名を指定した後で、6
を押します。これでそのファイルを検査できます。
7 SELinuxを管理するためのツール #
SLE Microでは、システム上のSELinuxを管理するためのツールが提供されています。以下で説明するツールがシステムにインストールされていない場合は、次のコマンドを実行してインストールします。
#
transactional-update pkg install policycoreutils-python-utils
正常にインストールされたら、システムを再起動します。
7.1 Z
オプションの使用 #
SELinuxがインストールおよび設定されている場合は、ls
、id
、ps
などの通常のコマンドで-Z
を使用できます。このオプションを使用すると、ファイルやプロセスのセキュリティコンテキストを表示できます。たとえば、ls
コマンドで使用すると、次のようになります。
>
ls -Z /etc/shadow
system_u:object_r:shadow_t:s0 /etc/shadow
7.2 chcon
コマンド #
コマンド名chcon
は、change context(コンテキストの変更)を表します。このコマンドは、ファイルの完全なセキュリティコンテキストをCLIで指定した値に変更したり、コンテキストの一部を変更したりできます。また、参照として機能するファイルを指定することもできます。
ファイルの完全なセキュリティコンテキストを変更する場合、コマンド構文は次のようになります。
#
chconSECURITY_CONTEXTFILENAME
各要素の説明
SECURITY_CONTEXTの形式は、SELinux_USER:ROLE:TYPE:LEVEL:CATEGORYです。たとえば、system_u:object_r:httpd_config_t:s0のようにコンテキストを指定できます。
FILENAMEは、変更するコンテキストが含まれるファイルのパスです。
参照として機能する指定ファイルに従ってセキュリティコンテキストを設定するには、chcon
を次のように実行します。
#
chcon --reference=REFERENCE_FILEFILENAME
各要素の説明
REFERENCE_FILEは、参照として使用するファイルのパスです。
FILENAMEは、変更するコンテキストが含まれるファイルのパスです。
また、セキュリティコンテキストの一部のみを変更することもできます。chcon
コマンドの一般的な構文は次のとおりです。
#
chconCONTEXT_OPTIONCONTEXT_PARTFILENAME
オプションと引数には次の意味があります。
コンテキストの部分によって、CONTEXT_OPTIONは次のいずれかになります。
-u
resp--user
指定したファイルでSELinuxユーザコンテキストを変更するように指定します。
#
chcon -u system_u logind.conf-r
resp--role
指定したファイルのコンテキストで役割の部分のみを変更します。
#
chcon -r object_r logind.conf-t
resp--type
指定したファイルのコンテキストでタイプの部分のみを変更します。
#
chcon -t etc_t logind.conf-l
resp--range
セキュリティコンテキストの範囲の部分のみを変更します。
#
chcon -l s0 logind.conf
CONTEXT_PARTは、設定するセキュリティコンテキストの特定の値です。
FILENAMEは、変更するコンテキストが含まれるファイルのパスです。
chcon
の使用
デフォルトでは、シンボリックリンクのセキュリティコンテキストを変更した場合、リンクターゲットのコンテキストが変更され、シンボリックリンクのコンテキストは変更「されません」。chcon
でリンクターゲットではなくシンボリックリンクのコンテキストを強制的に変更するには、次に示すように--no-dereference
オプションを使用します。
#
chcon --no-dereference -u system_u -t etc_t network.conf
再帰オプションを使用すると、ディレクトリ内のすべてのファイルのコンテキストを変更できます。
#
chcon --recursive system_u:object_r:httpd_config_t:s0 conf.d
7.3 getenforce
コマンドおよびsetenforce
コマンド #
getenforce
コマンドは、SELinuxの現在のモード(Enforcing
、Permissive
、またはDisabled
)を返します。
#
getenforce
Permissive
setenforce
コマンドは、SELinuxのモードを一時的にenforcingまたはpermissiveに変更します。このコマンドを使用してSELinuxを無効にすることはできません。変更は次回の再起動までしか持続しないことに注意してください。状態を永続的に変更するには、3.1項 「SELinuxモードの変更」の説明に従ってください。
#
setenforceMODE_ID
ここで、MODE_IDは、permissive
モードの場合は0、enforced
モードの場合は1です。
7.4 fixfiles
スクリプト #
このスクリプトでは、セキュリティコンテキストで次のタスクを実行できます。
コンテキストが正しいかどうかを確認する
間違ったファイルコンテキストラベルを変更する
新しいポリシーを追加した場合にシステムに再ラベル付けする
スクリプトの構文は次のとおりです。
#
fixfiles [OPTIONS] ARGUMENT
各要素の説明
OPTIONSには以下を指定できます。
-
-l
LOGFILE 指定したファイルに出力を保存します。
-
-o
OUTPUT_FILE 指定した出力ファイルに、ファイルコンテキストがデフォルトとは異なるすべてのファイルの名前を保存します。
-
-F
コンテキストのリセットを強制します。
-
ARGUMENTは、次のいずれかになります。
-
check
間違ったラベルの以前のファイルコンテキストと現在のファイルコンテキストを表示します。変更は行いません。
-
relabel
現在ロードされているポリシーに従って、間違ったファイルコンテキストを再ラベル付けします。
-
restore
間違ったファイルコンテキストをデフォルト値に戻します。
-
verify
間違ったファイルコンテキストラベルを含むすべてのファイルを一覧にします。変更は行いません。
-
7.5 semanage
コマンド #
semanage
コマンドを使用すると、ポリシーの一部を設定できます。ポリシーをソースから再コンパイルする必要はありません。このコマンドでは、次のタスクを実行できます。
boolean
引数を使用してブール値を管理するブール値の詳細については、6.1項 「ブール値の操作」を参照してください。fcontext
引数を使用してファイルのコンテキストを調整するlogin
引数を使用してユーザマッピングを管理するuser
引数を使用してSELinuxユーザを管理するmodule
引数を使用してSELinuxポリシーモジュールを管理する
コマンドの一般的な構文は次のとおりです。
#
semanageARGUMENTOPTIONS [OBJECT_NAME]
各要素の説明
ARGUMENTは、
login
、user
、fcontext
、boolean
、module
のいずれかです。OPTIONSは、指定したARGUMENTによって異なります。共通オプションについては、共通オプションに記載されています。
OBJECT_NAMEは、指定したARGUMENTに応じて、ログイン名、モジュール名、ファイル名、またはSELinuxユーザのいずれかになります。
-a
、--add
指定したオブジェクトを追加します。
-h
、--help
コマンドのヘルプを出力します。
- --extract
システムを変更するために使用されたコマンドを表示します(ブール値、ファイルコンテキストなど)。
-l
、--list
すべてのオブジェクトを一覧にします。
-m
、--modify
指定したオブジェクトを変更します。
-n
、--noheading
見出しを省略することでリスト操作の出力を変更します。
-s
、--seuser
SELinuxユーザを指定します。
その他のオプションは、特定のsemanage
コマンドに固有であり、対応するセクションで説明されています。
7.5.1 semanage fcontext
コマンド #
semanage fcontext
コマンドを使用して、次のタスクを実行できます。
ファイルコンテキストの定義を問い合わせる
ファイルにコンテキストを追加する
独自のルールを追加する
semanage
fcontext
コマンドを使用してファイルコンテキストに対して変更を実行した場合、ポリシーの変更や再コンパイルは必要ありません。
共通オプションで説明されている共通オプションに加えて、semanage
fcontext
コマンドには次のオプションも指定できます。
-e
、--equal
このオプションを使用すると、指定したパスコンテキストのコンテキストを使用して、別のディレクトリ(指定されたターゲットパス)にあるファイルをラベル付けできます。たとえば、
/home
と同じコンテキストを別のホームディレクトリ/export/home
に割り当てたい場合があります。このオプションを使用する場合は、ソースパスとターゲットパスを指定する必要があります。#
semanage fcontext -a -e /home /export/home-f
、--ftype
ファイルタイプを指定します。次のいずれかの値を使用します。
a
- すべてのファイル(デフォルト値でもあります)b
- ブロックデバイスc
- キャラクタデバイスd
- ディレクトリf
- 通常のファイルl
- シンボリックリンクp
- 名前付きパイプs
- ソケット
7.5.2 semanage login
コマンド #
semanage login
では、次のタスクを実行できます。
Linuxユーザを特定のSELinuxユーザにマップする。たとえば、Linuxユーザtuxを
sysadm_u
にマッピングするには、次のコマンドを実行します。#
semanage login -a -s sysadm_u tux
Linuxユーザのグループを特定のSELinuxユーザにマップする。たとえば、writersグループのユーザを
user_u
にマッピングするには、次のコマンドを実行します。#
semanage login -a -s user_u %writers
このグループが、%の文字をプレフィクスとして
semanage login -l
の出力に一覧にされます。ユーザグループはプライマリである必要があることに注意してください。SELinuxユーザを補助グループにマップすると、マッピングに互換性がなくなる可能性があるためです。
#
semanage login -m -s staff_u %writers
Linuxユーザを特定のSELinux MLS/MCSセキュリティ範囲にマップする。
作成済みのマッピングを変更する。このためには、前のコマンドの
-a
オプションを-m
に置き換えるだけです。新しいLinuxユーザに対してデフォルトのSELinuxユーザを設定する。通常のデフォルトのSELinuxユーザは
unconfined_u
です。この値をstaff_u
に変更するには、次のコマンドを実行します。#
semanage login -m -s staff_u __default__
7.5.3 semanage boolean
コマンド #
semanage boolean
コマンドは、SELinuxポリシーのブール値を制御する場合に使用します。
コマンドの概要は次のとおりです。
semanage boolean [-h] [-n] [ --extract | --deleteall | --list [-C] | --modify ( --on | --off | -1 | -0 ) boolean ]
共通オプションに加えて、semanage boolean
コマンド専用の次のオプションを使用できます。
- --list -C
ブール値のローカル変更のリストを表示します。
- -m --on | -1
指定したブール値をオンに切り替えます。
- -m --off | -0
指定したブール値をオフに切り替えます。
- -D、--deleteall
ブール値のすべてのローカル変更を削除します。
このコマンドの最も一般的な使用法は、特定のブール値のオン/オフを切り替えることです。たとえば、ブール値authlogin_yubikey
をオンに切り替えるには、次のコマンドを実行します。
#
semanage boolean -m on authlogin_yubikey
7.5.4 semanage user
コマンド #
semanage user
コマンドは、SELinuxユーザと、役割およびMLS/MCSレベルとの間のマッピングを制御します。
共通オプションで説明されている共通オプションに加えて、semanage
use
コマンドには次のオプションも指定できます。
- -R [ROLES]、--roles [ROLES]
SELinuxの役割のリスト。複数の役割を二重引用符で囲んでスペースで区切るか、
-R
を複数回使用できます。
このコマンドを使用して、次のタスクを実行することができます。
次のコマンドを実行して、役割へのSELinuxユーザのマッピングを一覧にする。
#
semanage user -l
user_u
SELinuxユーザに割り当てられた役割を変更する。#
semanage user -m -R "system_r unconfined_r user_r"
admin_u
に役割staff_r
とカテゴリs0
を割り当てる。#
semanage user -a -R "staff_r -r s0 admin_u
新しいSELinuxユーザを作成する。たとえば、
staff_r
の役割を持つadmin_u
を作成します。-P
を使用して、このユーザのラベル付けのプレフィクスを定義する必要もあります。#
semanage user -a -R "staff_r" -P admin admin_u
7.5.5 semanage module
コマンド #
semanage module
コマンドでは、SELinuxポリシーモジュールをインストール、削除、無効化、または有効化できます。
共通オプションで説明されている共通オプションに加えて、semanage
fcontext
コマンドには次のオプションも指定できます。
-d
、--disable
指定したSELinuxポリシーモジュールを無効化します。
#
semanage module --disable MODULE_NAME
-e
、--enable
指定したSELinuxポリシーモジュールを有効化します。
#
semanage module --enable MODULE_NAME
7.6 sestatus
コマンド #
sestatus
は、SELinuxが実行されているシステムのステータスを取得します。
コマンドの一般的な構文は次のとおりです。
sestatus [OPTION]
オプションと引数を指定せずにこのコマンドを実行すると、次の情報が出力されます。
#
sestatus
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: requested (insecure) Max kernel policy version: 33
このコマンドには次のオプションを指定できます。
- -b
システムのブール値のステータスを表示します。
- -v
/etc/sestatus.conf
ファイルに一覧にされているファイルとプロセスのセキュリティコンテキストを表示します。
8 法的事項 #
Copyright © 2006–2024 SUSE LLC and contributors. All rights reserved.
この文書は、GNUフリー文書ライセンスのバージョン1.2または(オプションとして)バージョン1.3の条項に従って、複製、頒布、および/または改変が許可されています。ただし、この著作権表示およびライセンスは変更せずに記載すること。ライセンスバージョン1.2のコピーは、「GNUフリー文書ライセンス」セクションに含まれています。
SUSEの商標については、https://www.suse.com/company/legal/を参照してください。その他の第三者のすべての商標は、各社の所有に帰属します。商標記号(®、™など)は、SUSEおよび関連会社の商標を示します。アスタリスク(*)は、第三者の商標を示します。
本書のすべての情報は、細心の注意を払って編集されています。しかし、このことは正確性を完全に保証するものではありません。SUSE LLC、その関係者、著者、翻訳者のいずれも誤りまたはその結果に対して一切責任を負いかねます。