CGI, anydbm.open() and linux file permissions

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Derek Basch

    #1

    CGI, anydbm.open() and linux file permissions

    Hello,

    I have a CGI script which uses anydb.open() to create a DBM. However I get this
    traceback:

    /usr/lib/python2.3/bsddb/__init__.py in
    hashopen(file='/var/www/bp/predictor/tools.dbm', flag='c', mode=438,
    pgsize=None, ffactor=None, nelem=None, cachesize=None, lorder=None, hflags=0)
    190 if ffactor is not None: d.set_h_ffactor (ffactor)
    191 if nelem is not None: d.set_h_nelem(n elem)
    192 d.open(file, db.DB_HASH, flags, mode)
    193 return _DBWithCursor(d )
    194
    d = <DB object>, d.open = <built-in method open of DB object>, file =
    '/var/www/bp/predictor/tools.dbm', global db = <module '_bsddb' from
    '/usr/lib/python2.3/lib-dynload/_bsddb.so'>, db.DB_HASH = 2, flags = 65, mode =
    438

    DBAccessError: (13, 'Permission denied')
    args = (13, 'Permission denied')

    The permissions on the CGI script (/usr/lib/cgi-bin/evaluator.py) are:

    -rwxr-xr-x 1 bpeters bpeters 2446 Jan 11 14:42 evaluator.py

    and the permissions on the target DBM creation directory
    (/var/www/bp/predictor/) are:

    drwxr-xr-x 2 bpeters bpeters 4096 Jan 11 14:45 predictor

    Can anyone tell me what I need to do to allow the CGI script to create the DBM
    in the target directory? That is short of changing everything to root.

    Thanks everyone,
    Derek Basch





    _______________ _______________ ____
    Do you Yahoo!?
    Meet the all-new My Yahoo! - Try it today!
    Latest news coverage, email, free stock quotes, live scores and video are just the beginning. Discover more every day at Yahoo!



  • Dan Sommers

    #2
    Re: CGI, anydbm.open() and linux file permissions

    On Tue, 11 Jan 2005 15:16:53 -0800 (PST),
    Derek Basch <dbasch@yahoo.c om> wrote:
    [color=blue]
    > Hello,
    > I have a CGI script which uses anydb.open() to create a DBM. However I get this
    > traceback:[/color]
    [color=blue]
    > /usr/lib/python2.3/bsddb/__init__.py in
    > hashopen(file='/var/www/bp/predictor/tools.dbm', flag='c', mode=438,
    > pgsize=None, ffactor=None, nelem=None, cachesize=None, lorder=None, hflags=0)
    > 190 if ffactor is not None: d.set_h_ffactor (ffactor)
    > 191 if nelem is not None: d.set_h_nelem(n elem)
    > 192 d.open(file, db.DB_HASH, flags, mode)
    > 193 return _DBWithCursor(d )
    > 194
    > d = <DB object>, d.open = <built-in method open of DB object>, file =
    > '/var/www/bp/predictor/tools.dbm', global db = <module '_bsddb' from
    > '/usr/lib/python2.3/lib-dynload/_bsddb.so'>, db.DB_HASH = 2, flags = 65, mode =
    > 438[/color]
    [color=blue]
    > DBAccessError: (13, 'Permission denied')
    > args = (13, 'Permission denied')[/color]
    [color=blue]
    > The permissions on the CGI script (/usr/lib/cgi-bin/evaluator.py) are:[/color]
    [color=blue]
    > -rwxr-xr-x 1 bpeters bpeters 2446 Jan 11 14:42 evaluator.py[/color]
    [color=blue]
    > and the permissions on the target DBM creation directory
    > (/var/www/bp/predictor/) are:[/color]
    [color=blue]
    > drwxr-xr-x 2 bpeters bpeters 4096 Jan 11 14:45 predictor[/color]
    [color=blue]
    > Can anyone tell me what I need to do to allow the CGI script to create the DBM
    > in the target directory? That is short of changing everything to root.[/color]

    Chances are that for security reasons your script probably runs as user
    "nobody" or another special user ID set up specifically for running CGI
    scripts (rather than your user id). Check your web server's
    documentation, or render the output of sys.getuid, sys.geteuid,
    sys.getgid, and sys.getedig. One solution is to open up the permissions
    of /var/www/bp/predictor; a better solution is to change its owner to
    whatever user ID runs your script.

    HTH,
    Dan

    --
    Dan Sommers
    <http://www.tombstoneze ro.net/dan/>
    Never play leapfrog with a unicorn.

    Comment

    Working...