2024
September
13
【Laravel】Laravelで作成されたディレクトリのpermissionについて
やりたいこと
Laravelで作成したファイル送信フォームからサーバーにputされたファイルに、グループ権限でアクセスできるようにしたい。
環境
Laravel Framework 9.52.16
PHP 8.2.7
経緯
Laravelサイトでファイル送信フォームを実装して、サーバーにputされたファイルを内包するディレクトリの権限が700だったので、750に変更したい。
VPS上での権限まわりを確認する。
unmaskコマンド
- ファイル・ディレクトリ作成時のパーミションを表示・変更するコマンド
- 結果が0022モードだった。ということは、ディレクトリのパーミションは「0755」になるはずなので、700なのはおかしい。
SGIDを指定
- こちらも設定してみた。chmodコマンドで、例えば750をその配下のディレクトリに今後も反映したい場合は2000を足した数でコマンドを打つ。
- 例
// SUID付与(+4000足す)
chmod -R 4750 dir
// 「chmod」コマンドでパーミッション数値に2000を足しあわせた数値を指定することでSGIDを指定できる。
chmod -R 2750 dir
上記どちらも、例えばSSHログインしてmkdirコマンドなどで作成したディレクトリは想定通りの権限が付与されるけど、Laravelサイトから作成されたディレクトリは700で作成される。
Laravelのconfigの編集
config/filesystems.php
というファイルを編集することで解決した。
// public配下とそうでない場所それぞれ設定できる
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
'throw' => false,
// ここから追記
'permissions' => [
'dir' => [
'public' => 0775,
'private' => 0750,
],
]
// ここまで追記
],
テスト
php artisan tinker
\Storage::put('test/file', 'hoge');
// 結果
= true
exit
// 結果
INFO Goodbye.
ls -l storage/app | grep test
// 結果
drwxr-x--- 3 user staff 96 4 18 11:30 test
Laravelサイトから作成されたディレクトリが、指定したパーミッションで作成された。
このカテゴリの最新記事
2023.04.21
【SQL】ウィンドウ関数について
2024.07.29
【Laravel】共通オブジェクトをbladeファイルで利用する方法
2024.02.14
【Laravel】MiddlewareでBasic認証をかける
2024.06.21
【Linux】特定のディレクトリ配下のみアクセスできるFTPユーザーを作成する