SELinux ファイルのラベル付け
すべてのファイル、ディレクトリ、デバイス、およびプロセスには、関連付けられたセキュリティ コンテキスト (またはラベル) があります。ファイルの場合、このコンテキストはファイル システムの拡張属性に格納されます。 SELinux の問題は、多くの場合、ファイル システムのラベルが誤っていることが原因で発生します。 file_t を含むエラー メッセージが表示される場合 、これは通常、ファイル システムのラベル付けに問題があることを示す良い指標です。
ファイル システムのラベルを変更するには、いくつかの方法があります:
- /.autorelabel ファイルを作成して再起動します。
- SELinux GUI のステータス ビューには、次回の再起動時にラベルを変更するオプションがあります。
- 3 つのコマンドライン ユーティリティ、restorecon、setfiles、fixfiles、ファイルの再ラベル付け
SELinux コンテキスト
SELinux コンテキストには、SELinux ユーザー、ロール、タイプ、レベルなどの追加情報が含まれています。プロセス、Linux ユーザー、およびファイルに対するアクセス制御の決定は、このコンテキスト情報に基づいています。アクセス制御は以下の情報に基づいています:
- SELinux ユーザー :Linux ユーザーは SELinux ユーザーにマッピングされます。
- 役割 :ドメインと SELinux ユーザーの間の仲介者として機能する RBAC の属性
- タイプ :プロセスのドメインを定義する TE の属性
- レベル : 追加情報; MLS と MCS の属性
SELinux コンテキスト情報の表示
ファイルに関する SELinux コンテキスト情報を表示する
コマンド ラインからファイル システムのコンテキスト情報を表示するには、「ls –Z」を使用します。 ” コマンド:
# ls -Z -rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg -rw-r--r--. root root system_u:object_r:admin_home_t:s0 initial-setup-ks.cfg注意 :この情報は /etc/selinux/[SELINUXTYPE]/contexts/files ディレクトリにも保存されます。
プロセスに関する SELinux コンテキスト情報を表示する
プロセスに関する SELinux コンテキスト情報を表示するには、「ps –Z」を使用します ” コマンド:
# ps -Z LABEL PID TTY TIME CMD unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 6617 pts/0 00:00:00 sudo unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 6623 pts/0 00:00:00 su unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 6624 pts/0 00:00:00 bash unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 8188 pts/0 00:00:00 ps
ユーザーに関する SELinux コンテキスト情報の表示
Linux ユーザーに関連付けられている SELinux コンテキストを表示するには、「id –Z」を使用します ” コマンド:
# id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
SELinux コンテキストは、次の構文を使用して表示されます:
user:role:type:level
コンテキスト ファイル タイプの変更
KVM 仮想マシンのディスク イメージは /var/lib/libvirt/images に作成されます デフォルトではディレクトリ。 SELinux では、イメージ ファイルに virt_image_t が含まれている必要があります それらに適用されるラベル。 「ls –dZ」コマンドを使用して、このラベルが /var/lib/libvirt/images ディレクトリに適用されていることを確認できます:
# ls -dZ /var/lib/libvirt/images drwx--x--x. root root system_u:object_r:virt_image_t:s0 /var/lib/libvirt/images
仮想マシン イメージに別のディレクトリを使用できますが、新しいディレクトリを SELinux ポリシーに追加し、最初にラベルを付け直す必要があります。次の手順を使用して、/kvmimages ディレクトリを対象の SELinux ポリシーに追加し、ディレクトリのラベルを変更します:
# semanage fcontext -a -t virt_image_t "/kvmimages(/.*)?"
上記のコマンドは、次のファイルに行を追加することで、/kvmimages ディレクトリを SELinux ポリシーに追加します:
# cat /etc/selinux/targeted/contexts/files/file_contexts.local /kvmimages(/.*)? system _u:object_r:virt_image_t:s0
ディレクトリとディレクトリ内のすべてのファイルに新しいセキュリティ コンテキストを設定する必要があります。次のコマンドのいずれかを使用して、/kvmimages ディレクトリの SELinux コンテキストを変更できます:
- 修正ファイル :ファイル システムのセキュリティ コンテキストを修正します
- restorecon :1 つ以上のファイルのセキュリティ コンテキストをリセットします
- セットファイル :1 つ以上のファイルのセキュリティ コンテキストを初期化します
これらの各コマンドは、/etc/selinux/targeted/contexts/files 内のファイルを読み取ります ディレクトリ。次の例は、restorecon コマンドを実行する前の SELinux コンテキストを示しています。
# ls -dZ /kvmimages drwx--x--x. root root system_u:object_r:unlabeled_t:s0 /var/lib/libvirt/images
SELinux タイプが unlabeled_t に設定されていることに注意してください .次の例では、restorecon コマンドを実行して、/etc/selinux/targeted/contexts/files/file_contexts.local で定義されているタイプを変更します。 ファイル:
# restorecon -R -v /kvmimages
# ls -dZ /var/kvmimages drwx--x--x. root root system_u:object_r:virt_image_t:s0 /kvmimages
libvirt によって起動されたときに KVM に影響を与える SELinux ブール値もあります。これらのブール値のうち 2 つを次に示します。
- virt_use_nfs :virt が NFS ファイルを管理できるようにします。
- virt_use_samba :virt が CIFS ファイルを管理できるようにします。
これらのブール値は、仮想マシンのディスク イメージを格納するために NFS または SAMBA 共有をそれぞれ使用する場合に有効にする必要があります。 KVM に影響を与える追加の SELinux ブール値があります。これらの一部を以下に示します:
# getsebool -a | grep virt staff_use_svirt --> off unprivuser_use_svirt --> off virt_read_qemu_ga_data --> off virt_rw_qemu_ga_data --> off virt_sandbox_use_all_caps --> on virt_sandbox_use_audit --> on virt_sandbox_use_fusefs --> off virt_sandbox_use_mknod --> off virt_sandbox_use_netlink --> off virt_sandbox_use_sys_admin --> off virt_transition_userdomain --> off virt_use_comm --> off virt_use_execmem --> off virt_use_fusefs --> off virt_use_nfs --> on virt_use_rawip --> off virt_use_samba --> off virt_use_sanlock --> off virt_use_usb --> on virt_use_xserver --> offSELinux ユーザーとは何か、および Linux ユーザーを SELinux ユーザーにマップする方法