2013-07-19 75 views
5

我有一個腳本,它在運行時在/home/test/內創建一個目錄,然後在其中寫入一些文件。當我運行這個腳本時,它工作正常。然而,當我與使所有新目錄擁有777權限

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

叫它Perl腳本它沒有權限,因此無法創建文件夾,或創建後,不能在它裏面寫。它看起來像當Python的open("/home/test/abcde/file1.txt", "w"),該文件有權限-rw-r--r--

我能做些什麼來解決這個問題?有沒有辦法設置/ home/test以遞歸方式使所有子目錄具有全局寫入權限?或者更好的解決方案?

+1

你是如何製作這些目錄的?您應該可以在創建權限時設置權限。 – squiguy

+0

os.system('chmod -R 777/home/test') – user1759572

+0

os.mkdir(「/ home/test/abcde」) –

回答

12

地說:

os.umask(0000) 
在Python腳本

其創建的目錄之前。如果您不能更改Python腳本,請在Perl腳本調用Python腳本之前將其放入:

umask(0000) 

創建新文件或目錄時,權限是通過調用creat()mkdir()的調用中指定的權限,然後屏蔽umask中指定的位來確定的。

通常,應用程序在調用函數時(根據它們是否創建應該可執行的東西)指定06660777權限。 umask的常見值是022,這會關閉組和世界寫入權限。如果您不希望關閉它們,請使用上述umask值來保持呼叫中指定的權限。

相關問題