目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SELinux

SELinux

発行日: 12/12/2024
概要

このトピックでは、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は、disabledpermissive、または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モードの場合は0enforcedモードの場合は1です。

setenforceコマンドを使用してSELinuxを無効にすることはできないことに注意してください。

3.1.2 SELinuxモードの永続的な変更

SELinuxのモードを変更してシステムの再起動後もそのモードを維持するには、/etc/selinux/config設定ファイルを編集します。このファイルで、システムのSELinuxを無効にすることもできます。ただし、この操作はお勧めできません。SELinuxが原因でシステムに問題が発生している可能性がある場合は、代わりにpermissiveモードに切り替えてシステムをデバッグします。

/etc/selinux/configファイルで、SELINUXの値を次のようにdisabledpermissive、または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モードに戻したときに問題が発生する可能性があります。

システムをセキュリティ保護された状態に戻すには、次の手順を実行します。

  1. セキュリティコンテキストをリセットします。

    > sudo restorecon -R /
  2. /etc/selinux/configSELINUX=enforcingを設定して、enforcingモードに切り替えます。

  3. システムを再起動し、再度ログインします。

  4. sestatus -vコマンドを実行します。次のような出力が表示されるはずです。

    > sudosestatus -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
  5. システムが適切に機能していない場合は、/var/log/audit/audit.logのログファイルを確認してください。詳細については、SELinux troubleshootingを参照してください。

4 SELinuxのセキュリティコンテキスト

セキュリティコンテキストは、ファイルまたはプロセスに割り当てられる一連の情報です。セキュリティコンテキストは、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を持つユーザ(このユーザはソースオブジェクトと呼ばれる)に対し、許可readexecute、および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ツールが提供されています。

次の手順では、コンテナのカスタムポリシーを作成する方法を説明します。

  1. SELinuxがenforcingモードになっていることを確認します。詳細については、3.1項 「SELinuxモードの変更」を参照してください。

  2. 次のパラメータを使用してコンテナを起動します。

    # podman run -v /home:/home:rw -v /var/:/var/:rw -p 21:21 -it sle15 bash

    このコンテナは、マウントポイントへのアクセスを許可しない一方で、他のポートは制限しないデフォルトポリシーで実行されます。

  3. コンテナを終了できます。

  4. コンテナ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_ramanujan
  5. Udicaがコンテナのカスタムポリシーを作成するために使用するJSONファイルを作成します。

    # podman inspect e59f9d0f86f2 >OUTPUT_JSON_FILE

    たとえば、OUTPUT_JSON_FILEcontainer.jsonに置き換えます。

  6. Udicaを実行し、コンテナパラメータに従ってポリシーを生成します。

    # udica -jOUTPUT_JSON_FILECUSTOM_CONTAINER_POLICY

    次に例を示します。

    # udica -j container.json custom_policy
  7. 提供される指示に従い、次のコマンドを実行してポリシーモジュールをロードします。

    # semodule -i custom_policy.cil /usr/share/udica/templates/{base_container.cil,net_container.cil,home_container.cil}
  8. 次のように--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 ブール値の切り替え

コマンドsetseboolsemanageを使用してブール値を切り替えることができます。ブール値のステータスは、永続的に変更することも、セッション終了まで一時的に変更することもできます。ブール値を一時的に変更するには、次のコマンドを実行します。

# 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がインストールおよび設定されている場合は、lsidpsなどの通常のコマンドで-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の現在のモード(EnforcingPermissive、またはDisabled)を返します。

# getenforce

Permissive

setenforceコマンドは、SELinuxのモードを一時的にenforcingまたはpermissiveに変更します。このコマンドを使用してSELinuxを無効にすることはできません。変更は次回の再起動までしか持続しないことに注意してください。状態を永続的に変更するには、3.1項 「SELinuxモードの変更」の説明に従ってください。

# setenforceMODE_ID

ここで、MODE_IDは、permissiveモードの場合は0enforcedモードの場合は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は、loginuserfcontextbooleanmoduleのいずれかです。

  • 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ユーザtuxsysadm_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ファイルに一覧にされているファイルとプロセスのセキュリティコンテキストを表示します。