2014-01-13 36 views
0

我下面在這裏看到蟒蛇教程(LINK)使用此代碼:的nginx不會創建文件,組寫權限

# !/usr/bin/python 

import os 
import stat 

filename = '/tmp/tmpfile' 
mode = 0600|stat.S_IRUSR 

# filesystem node specified with different modes 
os.mknod(filename, mode) 

行之有效。但我想用組寫入權限寫入文件。但是,當我將模式改爲模式「按組寫」:

mode = 0600|stat.S_IWGRP 

(從LINK2)文件運行沒有引發錯誤,但該文件沒有組寫入權限。所有「模式」權限都可以工作,組寫和其他寫操作除外。

如何讓我的python/uwsgi/nginx應用程序創建具有組寫入權限的文件?

+0

我沒有看過鏈接,但模式'0600'確實意味着組不能讀取或寫入,如果你想組讀/寫然後嘗試模式'0660' –

+0

@MohammadAbuShady,這就是按位或是爲了添加組寫入權限。無論如何,我將模式更改爲「0777」,我仍然無法編寫組或其他人寫入權限。使用「0777」,我得到:-rwxr-xr-x 1 www-data www-data 0 1月13日15:22 tmpfile –

回答

0

試試這個:

mode = stat.S_IFREG | stat.S_IWGRP | stat.S_IRUSR 

從幫助文檔字符串:

mknod(filename [, mode=0600, device]) 

Create a filesystem node (file, device special file or named pipe) 
named filename. mode specifies both the permissions to use and the 
type of node to be created, being combined (bitwise OR) with one of 
S_IFREG, S_IFCHR, S_IFBLK, and S_IFIFO. For S_IFCHR and S_IFBLK, 
device defines the newly created device special file (probably using 
os.makedev()), otherwise it is ignored. 

附:嘗試在bash中運行umask。如果它返回0000以外的其他值,則會自動從您指定的值中減去該值(man 2 umask)。嘗試運行umask 0000,然後再次運行您的python腳本!