4.10.4. tarによるファイルのアーカイブ
tar
ユーティリティーは、デフォルトで拡張属性を保持しません。SELinux コンテキストは拡張属性に保存されるため、ファイルのアーカイブ時にコンテキストが失われる可能性があります。tar --selinux コマンドを使用して、コンテキストを保持するアーカイブを作成し、アーカイブからファイルを復元します。tar
アーカイブに拡張属性のないファイルが含まれる場合、または拡張属性がシステムのデフォルトと一致するようにするには、restorecon
ユーティリティーを使用します。
~]$
tar -xvf archive.tar | restorecon -f -
ディレクトリーによっては、
restorecon
を実行するためには、root ユーザーでなければならない場合があることに注意してください。
以下の例は、SELinux コンテキストを保持する
tar
アーカイブの作成を示しています。
手順4.17 tar アーカイブの作成
/var/www/html/
ディレクトリーに移動し、その SELinux コンテキストを表示します。~]$
cd /var/www/html/html]$
ls -dZ /var/www/html/ drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 .- root で、
/var/www/html/
に 3 つのファイル (file1
、file2
、およびfile3
) を作成します。これらのファイルは、/var/www/html/
からhttpd_sys_content_t
タイプを継承します。html]#
touch file{1,2,3}html]$
ls -Z /var/www/html/ -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file1 -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file2 -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 file3 - root で、以下のコマンドを実行して、
test.tar
という名前のtar
アーカイブを作成します。SELinux コンテキストを維持するには、--selinux
を使用します。html]#
tar --selinux -cf test.tar file{1,2,3} - root で
test/
という名前の新規ディレクトリーを作成し、すべてのユーザーによる完全なアクセスを許可します。~]#
mkdir /test~]#
chmod 777 /test/ test.tar
ファイルをtest/
にコピーします。~]$
cp /var/www/html/test.tar /test/test/
ディレクトリーに移動します。このディレクトリーに移動し、以下のコマンドを実行してtar
アーカイブを展開します。--selinux
オプションを再度指定すると、SELinux コンテキストがdefault_t
に変更されます。~]$
cd /test/test]$
tar --selinux -xvf test.tar- SELinux コンテキストを表示します。
httpd_sys_content_t
タイプはdefault_t
に変更されず、保持されました。これは、--selinux
が使用されていなかったとしたら、変更されていたでしょう。test]$
ls -lZ /test/ -rw-r--r-- user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file1 -rw-r--r-- user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file2 -rw-r--r-- user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file3 -rw-r--r-- user1 group1 unconfined_u:object_r:default_t:s0 test.tar test/
ディレクトリーが必要なくなった場合は、root で以下のコマンドを実行して、そのディレクトリー内のすべてのファイルも削除します。~]#
rm -ri /test/
拡張属性をすべて保持する
--xattrs
オプションなどのtar
の詳細は、tar(1) man ページを参照してください。