I asked who I was logged in as yesterday ... and I got two different answers:
[melksham ~]# who am i
trainee pts/1 2009-07-21 13:16 (192.168.200.80)
[melksham ~]# whoami
root
[melksham ~]#
When you log in to a Unix or a Linux box, you give an account name (and password, I hope!) and you're given a user account name / identity. Or so you think - but really you have two identities, your
real and your
effective id. If you use a command such as
su to get a new identity, your
effective id changes, but not your real id ... and that's what had happened with the report above.
There
is a good reason for this ... the difference between real and effective ids is used within programs too - operating system programs such as the
passwd program. On one hand, users cannot possibly be allowed to write from their normal accounts to the file that contains encoded passwords - think of the security risk, yet on the other hand they
must write to that file if they're going to be changing their password. The conundrum is neatly overcome by having the
passwd program set up with a
setuid bit, which means that while you're running it, you have an effective root id while your real id remains as the user you logged in as.
We tell you more about
su and why you should always run
su - on our
Linux Admin Introduction.
(written 2009-07-22, updated 2009-07-23)
Associated topics are indexed under
A161 - Web Application Deployment - Users and Groups [2639] su or su - ... what is the difference? - (2010-02-17)
[2491] Root is root for a reason! - (2009-11-03)
[2203] Always use su with minus. And where do programs come from? - (2009-05-27)
[2117] Choosing a railway station fairly in PHP - (2009-04-04)
[2103] Ask the Tutor - Open Source forum - (2009-03-25)
[1904] Ruby, Perl, Linux, MySQL - some training notes - (2008-11-23)
[1902] sstrwxrwxrwx - Unix and Linux file permissions - (2008-11-23)
[1773] The Longest Possible Day - (2008-08-26)
[1650] Looking for files with certain characteristics (Linux / Unix) - (2008-05-22)
[1619] User and Group settings for Apache httpd web server - (2008-04-22)
[1592] Setting up a new user - Linux or Unix - (2008-03-26)
[683] Supporting users on Linux and Unix - (2006-04-13)
[431] File permissions of Linux and Unix systems - (2005-08-31)
[409] Functions and commands with dangerous names - (2005-08-11)
Some other Articles
Hot Tap at West Wilts ShowExtracting real data from an exported file in PHP or PerlTurning potential customers awaySee us at the West Wilts ShowMistaken identity?What does x on a linux directory mean?How much space does my directory take - LinuxMelksham Carnival Parade - the peopleStanding on the corner, Melksham CarnivalVariable scope - what is it, and how does it Ruby?