私のPythonスクリプトがumaskを変更できないのはなぜですか?

私のPythonスクリプトがumaskを変更できないのはなぜですか?

これは私のスクリプトです。

#!/usr/bin/python

import os

print "hello world from python"
os.system("echo 'hello world from bash'")
os.system("umask 055")
os.system("ls -alh > test")

このコードを実行すると、test ファイルに対する権限が 722 ではなく 600 に設定されます。なぜですか?

私の殻のUmaskは0077です。

ベストアンサー1

umaskこれを実行すると、systemシェルで実行されます。umaskそのシェルのマスクは変更されますが、シェルはすぐに終了し、変更は失われます。

Pythonプロセスのumaskを変更するには、使用os.umask()、こうなります:

現在の数値umaskを設定し、古いumaskを返します。

これにより、すぐに終了する他のプログラムではなく、実行中のプログラムが変更されます。

おすすめ記事