(libc.info.gz) Why Change Persona

Info Catalog (libc.info.gz) Process Persona (libc.info.gz) Users and Groups (libc.info.gz) How Change Persona
 
 30.3 Why Change the Persona of a Process?
 =========================================
 
 The most obvious situation where it is necessary for a process to change
 its user and/or group IDs is the 'login' program.  When 'login' starts
 running, its user ID is 'root'.  Its job is to start a shell whose user
 and group IDs are those of the user who is logging in.  (To accomplish
 this fully, 'login' must set the real user and group IDs as well as its
 persona.  But this is a special case.)
 
    The more common case of changing persona is when an ordinary user
 program needs access to a resource that wouldn't ordinarily be
 accessible to the user actually running it.
 
    For example, you may have a file that is controlled by your program
 but that shouldn't be read or modified directly by other users, either
 because it implements some kind of locking protocol, or because you want
 to preserve the integrity or privacy of the information it contains.
 This kind of restricted access can be implemented by having the program
 change its effective user or group ID to match that of the resource.
 
    Thus, imagine a game program that saves scores in a file.  The game
 program itself needs to be able to update this file no matter who is
 running it, but if users can write the file without going through the
 game, they can give themselves any scores they like.  Some people
 consider this undesirable, or even reprehensible.  It can be prevented
 by creating a new user ID and login name (say, 'games') to own the
 scores file, and make the file writable only by this user.  Then, when
 the game program wants to update this file, it can change its effective
 user ID to be that for 'games'.  In effect, the program must adopt the
 persona of 'games' so it can write the scores file.
 
Info Catalog (libc.info.gz) Process Persona (libc.info.gz) Users and Groups (libc.info.gz) How Change Persona
automatically generated by info2html