Merge pull request #1172 from benoitc/fix/1171

don't check if a file is writable using os.stat
This commit is contained in:
Benoit Chesneau 2015-12-29 15:13:49 +01:00
commit f6b172dfec
2 changed files with 6 additions and 17 deletions

View File

@ -338,9 +338,13 @@ class Logger(object):
util.check_is_writeable(output)
h = logging.FileHandler(output)
# make sure the user can reopen the file
if not util.is_writable(h.baseFilename, self.cfg.user,
self.cfg.group):
try:
os.chown(h.baseFilename, self.cfg.user, self.cfg.group)
except OSError:
# it's probably OK there, we assume the user has given
# /dev/null as a parameter.
pass
h.setFormatter(fmt)
h._gunicorn = True
log.addHandler(h)

View File

@ -162,21 +162,6 @@ def chown(path, uid, gid):
gid = abs(gid) & 0x7FFFFFFF # see note above.
os.chown(path, uid, gid)
def is_writable(path, uid, gid):
gid = abs(gid) & 0x7FFFFFFF
st = os.stat(path)
if st.st_uid == uid:
return st.st_mode & st.S_IWUSR != 0
user = pwd.getpwuid(uid)[0]
groups = [g.gr_gid for g in grp.getgrall() if user in g.gr_mem]
groups.append(gid)
if st.st_gid in groups:
return st.st_mode & stat.S_IWGRP != 0
return st.st_mode & stat.S_IWOTH != 0
if sys.platform.startswith("win"):
def _waitfor(func, pathname, waitall=False):