| 在linux中与进程有关的两个知识点,即用户的uid与euid的相关内容,这是linux中很重要的内容 Linux进程,用户的uid与euid。 
	在linux操作系统中,对可执行文件设置 setuid 权限时,将对运行该文件的进程授予基于文件属主的访问权限。 使用此特殊权限,用户可以访问通常只有属主才可访问的文件和目录。 可以使用chmod u+s 或chmod g+s来设置二进制的可执行文件的euid。setuid只能对二进制的可执行设置。 
	一 进程的uid和euid  C语言中,可以通过函数getuid()和geteuid()来获得进程的两个ID值。 
	当一个用户登陆系统时,系统会将UID和EUID都赋值为/etc/passwd文件中的UID,一般情况下2个ID是相同的,但是某些情况下会出现2个ID不同的情况。 
	以下一段C代码将解释区别:"printid.c" 
	复制代码代码示例: 
		#include <stdlib.h> 
		int main(void) 
		    return EXIT_SUCCESS; 
	编译之: 
	复制代码代码示例: 
	root@jbxue:~> gcc -o printid printid.c 
	执行: 
	复制代码代码示例: 
	root@it:~> ./printid  Real UID = 1000 Effective UID = 1000 Real GID = 100 Effective GID = 100 
	看看/etc/passwd里uid和gid: 
	复制代码代码示例: 
	root@it:~> cat /etc/passwd | grep aguo | awk -F":" '{print "uid:"$3 "\tgid:"$4}' uid:1000 gid:100 以上是相同的例子。 
	下面演示uid和euid不同的例子。 
	其次,变成其他用户,再来试验一下,比如变成root; 
	复制代码代码示例: 
	linux-x9rc:/home/aguo # ./printid  Real UID = 0 Effective UID = 1000 Real GID = 0 Effective GID = 100 
	uid和euid是有区别的! 
	顺便补充: 
	复制代码代码示例: 
	root@it:~$ root@it:~$ cd /etc root@it:/etc$ ls -l shadow -rw-r----- 1 root shadow 978 2009-02-22 21:25 shadow root@it:/etc$ 
	矛盾之处:出于安全考虑,不允许普通用户查看并修改shadow文件;但是如果这样普通用户就无法为自己修改密码。 
	例如: 
	复制代码代码示例: 
	root@it:/etc$ cd /usr/bin root@it:/usr/bin$ ls -l passwd -rwsr-xr-x 1 root root 32988 2008-06-10 02:10 passwd root@it:/usr/bin$ root@it:/usr/bin$ 因此,普通用户通过passwd程序修改shadow文件内容,完成密码修改,是没有问题的。(责任编辑:IT) | 
