概要:あるフォルダから別のフォルダにファイルを移動すると、保存先フォルダの実行可能プロパティが失われ、そのフォルダとそのコンテンツにアクセスできなくなります。
[元のStack Overflowに投稿されましたが、プログラミングの質問ではなくUnixとLinuxに再公開されました。]
サブフォルダがあり、親フォルダでドキュメントを処理した後、私のアプリケーション(Laravel、しかし問題は関係がないようです)は、このドキュメントをサブフォルダに移動する必要があります。ドキュメントを親フォルダからサブフォルダに移動すると、サブフォルダは「x」実行可能属性を失い、「drwxrwx---」から「drw-rw----」に変更されます。これによりコンテンツにアクセスできなくなり、将来の方向に移動できなくなります。子ファイルのファイルを一覧表示しようとすると、各ファイルに対して「ls:Access Denied」が報告され、その属性は「-?????????」と表示されます。
以下に、前後のソースディレクトリとターゲットサブディレクトリを示します。
# Source Before
drwxrwx---. 3 openapp nginx unconfined_u:object_r:httpd_sys_rw_content_t:s0 4096 Apr 11 13:42 dmarc_reports
# Source After
drwxrwx---. 3 openapp nginx unconfined_u:object_r:httpd_sys_rw_content_t:s0 4096 Apr 11 13:42 dmarc_reports
# Destination Before
drwxrwx---. 2 openapp nginx unconfined_u:object_r:httpd_sys_rw_content_t:s0 6 Apr 11 07:56 processed
# Destination After
drw-rw----. 2 openapp nginx unconfined_u:object_r:httpd_sys_rw_content_t:s0 6 Apr 11 13:42 processed
「chmod ug + xfolder_name」を使用してアクセス権をリセットすると、ファイルに再度アクセスできますが、別のファイル移動操作を実行すると問題が再発生します。実行が移動する方向、コードで実行するのか、シェルで mv を使用しているかにかかわらず、問題が発生します。これは、SELinuxを無効にして(setenforce 0を使用)、fapolicydを停止した場合にも発生します。
すべてのファイルとフォルダは、私のユーザーとアプリケーションとユーザーが属するnginxグループによって所有されています。ターゲットはソースのサブフォルダなので、同じファイルシステムにあります。
これは私を完全に混乱させました。 CentOS Stream 9を実行しています。前述のようにSELinuxの問題を解決しましたが、参考までにすべてのファイルには「system_u:object_r:httpd_sys_rw_content_t:s0」コンテキストがあり、フォルダには「unconfined_u:object_r:httpd_sys_rw_content_t:」コンテキストがあります。
どんなアイデアがありますか?
関連する場合、最初から(つまり、権限が変更された後)失敗したコード/コマンドは次のようになります。
// Laravel Instruction
Storage::move($fileLocation, $dest)
// Native PHP Instruction
rename(Storage::path($fileLocation), Storage::path($dest))
## Bash Instruction
mv <<original path>>/<<filename>> <<destination path>>/
いずれの場合も、ディレクティブは一度動作してからchmodを使用してディレクトリ権限を手動でリセットするまで、次のファイルで失敗します。
答え1
だから私は問題を解決し、馬鹿のように感じた。また、処理のためにファイルをフォルダに転送するcronジョブを毎分実行します。これはターゲットファイルの所有権と権限を設定し、私はファイルだけでなくすべてに権限を適用しました。一瞬一瞬起きているので、私の行動によって引き起こされるようです。権限の状態を詳しく見てくれた@NasirRileyに感謝します。これにより、私は何もしなくても権限が変更されたことを確認できました。