5

実行すると、内部にディレクトリを作成し、その中に/home/test/いくつかのファイルを書き込むスクリプトがあります。このスクリプトを実行すると、問題なく動作します。ただし、perlスクリプトから呼び出すと

$ret = `/home/..../testscript.py`

アクセス許可がないため、フォルダーを作成できないか、作成後にフォルダー内に書き込むことができません。Python の場合open("/home/test/abcde/file1.txt", "w")、そのファイルにはパーミッションがあるようです-rw-r--r--

これを回避するにはどうすればよいですか? /home/test を再帰的に設定して、すべてのサブディレクトリにグローバルな書き込みアクセスを許可する方法はありますか? それともより良い解決策でしょうか?

4

1 に答える 1

12

置く:

os.umask(0000)

ディレクトリを作成する前に Python スクリプトで Python スクリプトを変更できない場合は、次のように入力します。

umask(0000)

Python スクリプトを呼び出す前に、Perl スクリプトで

creat()新しいファイルまたはディレクトリが作成されるとき、アクセス許可は、またはの呼び出しで指定されたアクセス許可を取得し、 で指定されmkdir()たビットをマスクすることによって決定されますumask

通常、アプリケーションは関数を呼び出すときに権限を指定し0666ます0777(実行可能にする必要があるものを作成しているかどうかによって異なります)。の一般的な値はです。これumask022、グループおよび全世界の書き込み権限をオフにします。オフにしたくない場合は、上記のumask値を使用して、呼び出しで指定されたアクセス許可を保持します。

于 2013-07-19T22:46:58.353 に答える