diff --git a/AUTHORS b/AUTHORS index ad3c88354c..d31e36069f 100644 --- a/AUTHORS +++ b/AUTHORS @@ -94,6 +94,7 @@ answer newbie questions, and generally made Django that much better: Sengtha Chay ivan.chelubeev@gmail.com Bryan Chow + Antonis Christofides Michal Chruszcz Can Burak Çilingir Ian Clelland diff --git a/django/core/servers/fastcgi.py b/django/core/servers/fastcgi.py index d7145e15ec..dc4c35b08d 100644 --- a/django/core/servers/fastcgi.py +++ b/django/core/servers/fastcgi.py @@ -40,6 +40,7 @@ Optional Fcgi settings: (setting=value) workdir=DIRECTORY change to this directory when daemonizing. outlog=FILE write stdout to this file. errlog=FILE write stderr to this file. + umask=UMASK umask to use when daemonizing (default 022). Examples: Run a "standard" fastcgi process on a file-descriptor @@ -73,6 +74,7 @@ FASTCGI_OPTIONS = { 'maxrequests': 0, 'outlog': None, 'errlog': None, + 'umask': None, } def fastcgi_help(message=None): @@ -159,6 +161,8 @@ def runfastcgi(argset=[], **kwargs): daemon_kwargs['out_log'] = options['outlog'] if options['errlog']: daemon_kwargs['err_log'] = options['errlog'] + if options['umask']: + daemon_kwargs['umask'] = int(options['umask']) if daemonize: from django.utils.daemonize import become_daemon diff --git a/django/utils/daemonize.py b/django/utils/daemonize.py index f0c2f684bd..68e5392d89 100644 --- a/django/utils/daemonize.py +++ b/django/utils/daemonize.py @@ -2,7 +2,8 @@ import os import sys if os.name == 'posix': - def become_daemon(our_home_dir='.', out_log='/dev/null', err_log='/dev/null'): + def become_daemon(our_home_dir='.', out_log='/dev/null', + err_log='/dev/null', umask=022): "Robustly turn into a UNIX daemon, running in our_home_dir." # First fork try: @@ -13,7 +14,7 @@ if os.name == 'posix': sys.exit(1) os.setsid() os.chdir(our_home_dir) - os.umask(0) + os.umask(umask) # Second fork try: @@ -32,13 +33,13 @@ if os.name == 'posix': # Set custom file descriptors so that they get proper buffering. sys.stdout, sys.stderr = so, se else: - def become_daemon(our_home_dir='.', out_log=None, err_log=None): + def become_daemon(our_home_dir='.', out_log=None, err_log=None, umask=022): """ If we're not running under a POSIX system, just simulate the daemon mode by doing redirections and directory changing. """ os.chdir(our_home_dir) - os.umask(0) + os.umask(umask) sys.stdin.close() sys.stdout.close() sys.stderr.close()