来看passwd命令
(各字段分别为:文件属性字段,文件硬链接数或目录子目录数,文件拥有者,文件拥有者所在的组,文件文件大小(以字节为单位),文件创建月份,文件创建日期,文件创建时间,文件名。)
passwd的owner是root,但是普通用户也可以用来修改自己的密码。正常来说,普通用户调用passwd,传递给passwd的权限是普通用户的权限,但是却修改了密码文件,说明修改密码文件的时候其权限是root权限。
例子
#include
#include
#include
#include
#include
int main()
{
uid_t uid ,euid;
uid = getuid() ;
euid = geteuid();
printf("my uid is %u\n", getuid());
printf("my euid is %u\n", geteuid());
setuid(euid); //euid -> uid
puts("after update:");
printf("uid is %u\n",getuid());
printf("euid euid is %u\n",geteuid());
return0;
}
编译执行,再执行
# gcc test.c
# chown root:root a.out
# chmod u+s a.out
结果如下
uid已变为0,获得root权限成功。