2017-10-05 3 views
2

ファイルモードのディレクトリをbashのmkdirとpythonのos.mkdirで作成しました。 異なる権限を持つディレクトリを作成しました。なぜ、bashのmkdirと違う、Pythonのos.mkdirによる許可を設定するのですか?

コマンドラインでの私のテストコードは以下の通りです

$ mkdir -m 0775 aaa 
$ cd aaa 
$ mkdir -m 0777 bbb 
$ python -c 'import os; os.mkdir("ccc",0o777)' 

ディレクトリのパーミッション、AAA、BBB及びCCCは

directory aaa: drwxrwxr-x 
directory bbb: drwxrwxrwx 
directory ccc: drwxrwxr-x 

以下の通りbashでMKDIRは許可を気にしないようです親ディレクトリのですが、Pythonのos.mkdirはそうです。そうですか? なぜ彼らは異なったメカニズムを持っていますか?

ありがとうございました。

-m, --mode=MODE 
      set file mode (as in chmod), not a=rwx - umask 

Pythonは単に与えられたモードと通常のumaskの動作とmkdir(2)システムコールを呼び出している:あなたにひそかマニュアルに記載のモードを、指定した場合

+0

を私はバットオフ答えを知っているが、私は、Pythonを推測していることは、それ自身のumaskを使用していない...に見て何かと(DIS ) – amphibient

答えて

1

mkdir(1)は0にtemporarily setting the umaskです。

mkdir(1)がやっていることに相当Pythonコード:

m = os.umask(0) 
os.mkdir("ccc") 
os.umask(m) 
+0

お返事ありがとうございます。私はあなたのソリューションによってPythonコードでさえbash方法を使用します。ありがとうございました。 – mora

関連する問題