cpは、ファイルを指定されたディレクトリにコピーするコマンド! 一方mvは、ファイルを指定されたディレクトリに移動するコマンド・・・これの違いにあまり意識しなかったのですが、この違いに最近思い知らされましたので記録しました
目次
cpはSELINUXのコンテキストが適用される
# cd /home/user/
# ls -Z
unconfined_u:object_r:user_home_t:s0 luminus.html
unconfined_u:object_r:user_home_t:s0 Luminous.js
unconfined_u:object_r:user_home_t:s0 Luminous.min.js
cpコマンドではコピー先のSELINUXコンテキストが適用
# cp Luminous.js /var/www/html/commjs/
# cd /var/www/html/commjs/
# ll
合計 736
-rw-r–r–. 1 root root 359285 10月 25 2019 Luminous.js
-rw-r–r–. 1 apache apache 1465 3月 9 15:20 certify-style.css
-rw-r–r–. 1 apache apache 3170 3月 31 2018 colorbox.css
# ls -Z
unconfined_u:object_r:httpd_sys_rw_content_t:s0 Luminous.js
unconfined_u:object_r:httpd_sys_rw_content_t:s0 certify-style.css
unconfined_u:object_r:httpd_sys_rw_content_t:s0 colorbox.css
mvコマンドでは、コピー元のコンテキストが適用される
# mv Luminous.ja /var/www/html/commjs/
# cd /var/www/html/commjs/
# ll
合計 736
-rw-r–r–. 1 root root 359285 10月 25 2019 Luminous.js
-rw-r–r–. 1 apache apache 1465 3月 9 15:20 certify-style.css
-rw-r–r–. 1 apache apache 3170 3月 31 2018 colorbox.css
# ls -Z
unconfined_u:object_r:user_home_t:s0 Luminous.js
unconfined_u:object_r:httpd_sys_rw_content_t:s0 certify-style.css
unconfined_u:object_r:httpd_sys_rw_content_t:s0 colorbox.css
上記例のように、cpコマンドでは、コピー先のSELINUXコンテキストが適用されますが、mvコマンドではコピー元のコンテキストのままですので、これをコピー先のコンテキストに変更が必要です(実際には、元に戻して、コピーし直すのが早い)
SELINUXのコンテキストが適用されないと
上記例は、公開する場所にCSSファイルやJSファイルを置き、これらのファイルにリンクを張って、公開しようとするケースの話です。これらのファイル類を公開場所に/home/userフォルダから、公開場所/var/www/htmlに、mvコマンドで移動するコマンドを使う方法で置くのでは初期の目的が達成されない例として、自分のミスを記録して自戒するために公開しました
これは、公開先に置いたファイルに対し、SELINUXのコンテキストの適用が出来ていないため、ファイルにアクセスすることが出来ないためです。SELINUXのコンテキストは、公開先は全て httpd_sys_rw_content_tのコンテキストが適用されている必要が有るためです