brw@jim.odr.oz (Brian Wallis) (11/02/88)
In article <579@jim.odr.oz> brw@jim.odr.oz (Brian Wallis (me)) writes: > >On Ultrix 2.0 on our MicroVax II, the system calls getuid() and >geteuid() both seem to return the same uid no matter what you have >su'd to. ie. If I su to 'local' and run a simple program that prints >both uid's as returned by getuid and geteuid I get the uid of local >from both whereas I thought I should get the uid of me ('brw') from >getuid(). Here is tmp.c and the results... [rest deleted] Ok, Ok, maybe I didn't look far enough (although our manual entry for 'su' doesn't actually mention that both the uid and euid are set) (and thanks to all who replied). A bit of background. The reason I wanted this was due to running emacs while su'd to another user (local, our local utility source container) and wanting to use MY .emacs file. I thought that (user-uid) or (user-login-name) as opposed to (user-real-uid) and (user-real-login-name) would tell me who I was logged in as. In fact the help for the function user-real-login-name is: > user-real-login-name: > Return the name of the user's real uid, as a string. > Differs from user-login-name when running under su. which misled me. I am currently using a re-definition of user-real-login-name: > (defun user-real-login-name () > "A kludge for the real thing, since getuid() is wrong on Ultrix 2.0" > (interactive) > (substring (getenv "MAIL") > (string-match "[^/]+$" (getenv "MAIL")) nil)) which is kludgy but works for the people who su to local around here! What is a better way of doing this? -- Brian Wallis (brw@jim.odr.oz) O'Dowd Research P/L. (03) 562-0100 Fax: (03) 562-0616, Telex: Jacobs Radio (Bayswater) 152093