From ca5918e8ff3da9b30243fa3b5cc273766ccf3008 Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Mon, 30 Jun 2008 11:22:41 +0000 Subject: [PATCH] Fixed #6994 -- For fastcgi, set a more sensible default umask. Also allow the umask value to be customised. Thanks, Antonis Christofides. git-svn-id: http://code.djangoproject.com/svn/django/trunk@7800 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- AUTHORS | 1 + django/core/servers/fastcgi.py | 4 ++++ django/utils/daemonize.py | 9 +++++---- 3 files changed, 10 insertions(+), 4 deletions(-) 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()