[Python-bugs-list] [ python-Bugs-584566 ] os.getlogin() fails

noreply@sourceforge.net noreply@sourceforge.net
Wed, 24 Jul 2002 08:24:59 -0700


Bugs item #584566, was opened at 2002-07-21 17:29
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=584566&group_id=5470

Category: Python Library
Group: Python 2.2.1
>Status: Closed
>Resolution: Works For Me
Priority: 5
Submitted By: Robert Blyler (rlblyler)
Assigned to: Nobody/Anonymous (nobody)
Summary: os.getlogin() fails

Initial Comment:
The os.getlogin() fails with a no-such file. I
originally reported this bug to the gentoo bug tracking
system

see: http://bugs.gentoo.org/show_bug.cgi?id=4647

The issue seems to be that some xterminals ( gterm in
this case ) do not register themselves with utmp, which
this function uses.  I have two workarounds, one of
reverting back to using:

os.getenv('USER') 

and another for:

print pwd.getpwuid(os.geteuid())[0]

This seems to violate the portability of os.getlogin()
though, and was wondering if  a different internal
implementation should be used. I would expect that at
any rate it shouldn't cause a program to crash.

The following is the original error:

Traceback (most recent call last):
  File "./trilliji.py", line 25, in ?
    main()
  File "./trilliji.py", line 16, in main
    Connections = TriCon()
  File "./clsTriCon.py", line 16, in __init__
    self.login_user=os.getlogin()
OSError: [Errno 2] No such file or directory





----------------------------------------------------------------------

>Comment By: Jeremy Hylton (jhylton)
Date: 2002-07-24 15:24

Message:
Logged In: YES 
user_id=31392

This is not a Python bug.  Python is just calling the
platform getlogin().  On my Linux box, a C program that
calls getlogin() reports exactly the same error.  It returns
NULL and sets errno to ENOENT, which strerror() converts to
"No such file or directory."

The man page for getlogin on Linux says:

       For most purposes, it is more useful to use  the 
environ­
       ment  variable  LOGNAME to find out who the user is.
 This
       is more flexible precisely because the user can  set
 LOG­
       NAME arbitrarily.

The same man page describes cuserid() and says:

       Nobody knows precisely what cuserid() does - avoid 
it  in
       portable  programs  -  avoid  it  altogether  -  use
getp­
       wuid(geteuid()) instead, if that is what  you  meant.
  DO
       NOT USE cuserid().



----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=584566&group_id=5470