2010-12-08 6 views
4

私はCPAN :: Mini :: Injectアクションを実行するスクリプトを持っており、App :: Cacheを持っています。それはうまく動作しますが、時々私は別のユーザーアカウントから実行する必要があります。これは、ファイルのアクセス許可が悪い場合、0740の権限でファイルが自動的に作成されるためです。perlスクリプトによって作成されたすべてのファイルに対してグローバル権限を設定する方法はありますか?

今私はsystem("chmod -R a+w .")の松葉杖を使用していますが、私はそれが好きではありません。

スクリプトの範囲として、すべての作成されたファイルのグローバルファイルモードを0777にする方法はありますか?

答えて

6

umaskを組み込み、デフォルトのファイルモードを変更することができます。たとえば、umask 0は、デフォルトモードを0777に変更します。

しかし、ファイルが権利0740で作成されていると、CPAN :: Mini :: Injectが明示的にアクセス権を設定していて、umaskが効果を発揮しない可能性があります。

この場合、モジュールのソースコードを参照して、アクセス許可が設定されている場所を探して、とにかくオーバーロードできるかどうかを確認する必要があります。もう1つの選択肢は、著者に機能要求を提出することです。

ところで、CPAN :: Miniモジュールはdirmodeオプションを受け入れてディレクトリのアクセス許可を設定します。

+2

なぜパーミッションが明示的に設定されているのかわかりません...いくつかのユーザ/システムのデフォルトumaskは0037または少なくとも0057です。しかし、CPAN :: Mini :: Injectによって明示的に設定されているのではなく、UNIXの権限を完全には理解していない人が選択したローカルのumask設定の方が私にとってはもっと奇妙に思えます。 CPAN :: Mini :: Injectのソースを上回っていて、 'dirmode'オプションがセットされていない限り、パーミッションを設定するものは見当たりませんでした。) –

+0

0037と0057は妥当ですが、私の経験では非常に稀です。 ! – salva

+0

ありがとう、私はumaskがリバースモードで使用できることを知らなかった。 :) – Mithaldu

6

umaskをご覧ください。

関連する問題