关于suid和guid
文件除了具有读写执行权限,还有特殊的suid位。
当程序文件的suid位被设置后,当用户执行程序文件时,将获得该程序文件属主的权限。
例如程序文件的属主是root,那么执行该程序的用户就将暂时获得root账户的权限。
sgid与suid类似,只是执行程序时获得的是文件属组的权限。
例子:普通用户 lp修改自己的密码
密码存放在/etc/shadow文件里面
[root
@localhost ~]# ll /etc/shadow
-r-------- 1 root root 1144 Jul 20 22:33 /etc/shadow
文件的属主为root,lp用户是没有读写执行权限的
我们执行passwd这个命令执行的程序是/usr/bin/passwd,
查看这个文件属性如下:
-r-s--x--x 1 root root 21944 Feb 12 2006 /usr/bin/passwd;
所有用户对命令文件都有执行权限,并且suid位已被设置。
当lp用户执行passwd命令时,就获得了/usr/bin/passwd的属主权限(即root权限)。
这样便能对/etc/shadow文件进行修改。
注:这里涉及到实际用户ID和有效用户ID的分离,不再详解
设置方法
chmod 4755 myfile
chmod u+s myfile