タイガーラック クリエイティブブログ
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サイトから作成されたディレクトリが、指定したパーミッションで作成された。

このカテゴリの最新記事

関連記事

SHOP LIST

タイガーラック株式会社

〒577-0056
大阪府東大阪市長堂1-3-14 TOKUYASU Bld.