

Amazon
Linuxでcrontabの設定をしてcronを実行すると作成されるファイルのパーミッションが644になります。作成されるファイルが664にしたいのですが、Linuxのどの設定を変更すればいいでしょうか。phpファイル内でパーミッション、umaskを指定すればできますがLinuxの設定で変更したいです。

cron実行ユーザのumaskを002に変更しても、cron実行後に作成されるファイルがパーミッション644になってしまいます。

cronを通してphpファイルが実行されて作成されるファイルが、なぜ最初に設定したumask002にならないのかがわかりません。

crontab

[code]

    27 01 * * * /usr/bin/php /aaa/index.php
    
[/code]

index.php

[code]

    <?php
        $file = "/data/bbb.txt";
        $string = "Hello, PHP";
        file_put_contents($file, $string);
    
[/code]


CC BY-SA 4.0
2019-01-27T17:27:44.303
52360
2020-01-07T08:20:08.340
2020-01-07T08:20:08.340
3060
10088
question
linux cron
cronでphpファイルを実行すると作成されるファイルのパーミッションが644になる


cron 実行時はログインシェルは動かないので cron実行ユーザの profile 等に設定した内容は読み込まれません。実行時の umask
や必要な環境変数は、 crontab に明示的に書けば良いと思いますので試してみてください。

[code]

    27 01 * * * umask 0002; /usr/bin/php /aaa/index.php
    
[/code]

もしくは、pam で cron実行時のデフォルトのumaskを設定しても効果があるかもです。  
ファイル `/etc/pam.d/crond`

[code]

    session optional pam_umask.so umask=0002
    
[/code]


CC BY-SA 4.0
2019-02-01T02:34:37.583
52463
2019-02-01T02:34:37.583
5008
52360
answer