Menu Close

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.10. SELinux ラベルの維持

このセクションでは、ファイルとディレクトリーのコピー、移動、およびアーカイブ時に SELinux コンテキストに何が起こるかを説明します。また、コピーおよびアーカイブが発生したときにコンテキストを保存する方法についても説明します。

4.10.1. ファイルおよびディレクトリーのコピー

ファイルまたはディレクトリーのコピー時に、新規ファイルまたはディレクトリーが存在しない場合に作成されます。この新規ファイルまたはディレクトリーのコンテキストは、元のコンテキストを保持するオプションを使用しない限り、元のファイルまたはディレクトリーのコンテキストではなく、デフォルトのラベル付けルールに基づいています。たとえば、ユーザーのホームディレクトリーで作成されたファイルには、user _home_t タイプのラベルが付けられます。
~]$ touch file1
~]$ ls -Z file1
-rw-rw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0 file1
このようなファイルが /etc などの別のディレクトリーにコピーされる場合、/ etc のデフォルトのラベル付けルールに従って新規ファイルが作成されます。追加オプションなしでファイルのコピーは、元のコンテキストを保存しない場合があります。
~]$ ls -Z file1
-rw-rw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0 file1
~]# cp file1 /etc/
~]$ ls -Z /etc/file1
-rw-r--r--  root root unconfined_u:object_r:etc_t:s0   /etc/file1
file1/etc にコピーされ、/etc/file1 が存在しない場合は、/etc/file1 が新規ファイルとして作成されます。上記の例で示されているように、/etc/file1 には default-labeling ルールに従って、etc/file1 に etc_t タイプのラベルが付けられます。
既存のファイルにファイルがコピーされると 、--preserve=context などの元のファイルのコンテキストを保持するための cp オプションが指定されていない限り、既存のファイルのコンテキストが保持されます。SELinux ポリシーは、コピー中にコンテキストが保持されないことがあります。

手順4.11 事前の SELinux コンテキストを使用しないコピー

この手順は、cp コマンドで ファイルをコピーする際に、オプションが指定されていない場合、タイプはターゲット、親ディレクトリーから継承されることを示しています。
  1. ユーザーのホームディレクトリーにファイルを作成します。このファイルには user_home_t タイプのラベルが付けられます。
    ~]$ touch file1
    ~]$ ls -Z file1
    -rw-rw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0 file1
    
  2. /var/www/html/ ディレクトリーには、以下のコマンドのように httpd_sys_content_t タイプのラベルが付けられます。
    ~]$ ls -dZ /var/www/html/
    drwxr-xr-x  root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
    
  3. file1/var/www/html/ にコピーされると、httpd_sys_content_t タイプが継承されます。
    ~]# cp file1 /var/www/html/
    ~]$ ls -Z /var/www/html/file1
    -rw-r--r--  root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file1
    

手順4.12 コピー時の SELinux コンテキストの保存

この手順では 、--preserve=context オプションを使用して、コピー時にコンテキストを保存する方法を説明します。
  1. ユーザーのホームディレクトリーにファイルを作成します。このファイルには user_home_t タイプのラベルが付けられます。
    ~]$ touch file1
    ~]$ ls -Z file1
    -rw-rw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0 file1
    
  2. /var/www/html/ ディレクトリーには、以下のコマンドのように httpd_sys_content_t タイプのラベルが付けられます。
    ~]$ ls -dZ /var/www/html/
    drwxr-xr-x  root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
    
  3. --preserve=context オプションを使用すると、コピー操作中に SELinux コンテキストが保持されます。下記のとおり、file1user_home_t タイプは、ファイルが /var/www/html/ にコピーされた際に保持されています。
    ~]# cp --preserve=context file1 /var/www/html/
    ~]$ ls -Z /var/www/html/file1
    -rw-r--r--  root root unconfined_u:object_r:user_home_t:s0 /var/www/html/file1
    

手順4.13 コンテキストのコピーおよび変更

この手順では 、--context オプションを使用して宛先コピーのコンテキストを変更する方法を説明します。以下の例は、ユーザーのホームディレクトリーで実行されます。
  1. ユーザーのホームディレクトリーにファイルを作成します。このファイルには user_home_t タイプのラベルが付けられます。
    ~]$ touch file1
    ~]$ ls -Z file1
    -rw-rw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0 file1
    
  2. --context オプションを使用して SELinux コンテキストを定義します。
    ~]$ cp --context=system_u:object_r:samba_share_t:s0 file1 file2
  3. --context を使用しないと、file2 には unconfined_u:object_r:user_home_t コンテキストでラベルが付けられます。
    ~]$ ls -Z file1 file2
    -rw-rw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0 file1
    -rw-rw-r--  user1 group1 system_u:object_r:samba_share_t:s0 file2
    

手順4.14 既存のファイルを用いたファイルのコピー

この手順では、ファイルを既存のファイルにコピーする際に、コンテキストを保存するオプションを使用しない限り、既存のファイルのコンテキストが保持されることを示しています。
  1. root で、/etc ディレクトリーに新しいファイル file1 を作成します。以下に示すように、ファイルに etc_t タイプのラベルが付けられます。
    ~]# touch /etc/file1
    ~]$ ls -Z /etc/file1
    -rw-r--r--  root root unconfined_u:object_r:etc_t:s0   /etc/file1
    
  2. /tmp ディレクトリーに 別のファイル file2 を作成します。以下に示すように、ファイルに user_tmp_t タイプのラベルが付けられます。
    ~]$ touch /tmp/file2
    ~$ ls -Z /tmp/file2
    -rw-r--r--  root root unconfined_u:object_r:user_tmp_t:s0 /tmp/file2
    
  3. file1file2 で上書きします。
    ~]# cp /tmp/file2 /etc/file1
  4. コピー後に、次のコマンドは / etc/file 1 に置き換わる /tmp/file2 からの user_tmp_t タイプではなく 、etc _t タイプのラベルが付いた file 1 を表示します
    ~]$ ls -Z /etc/file1
    -rw-r--r--  root root unconfined_u:object_r:etc_t:s0   /etc/file1
    
重要
ファイルおよびディレクトリーを移動するのではなく、ファイルとディレクトリーをコピーします。これにより、正しい SELinux コンテキストのラベルが付けられます。SELinux コンテキストが正しくないと、プロセスがこのようなファイルおよびディレクトリーにアクセスできなくなる可能性があります。