文章目录

  • ​​1.有效用户和真实用户eg​​
  • ​​2.普通用户能够修改自己的密码的原因​​

1.有效用户和真实用户eg

  • 显示当前进程的真实用户和组ID,有效用户和租ID
#include <stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>

int main(void)
{
printf("real uid:%d, real gid:%d\n", getuid(),getgid());
printf("effective uid: %d, effective gid:%d\n",geteuid(),getegid());
exit(0);
}
  • 执行上述文件
    结果是:在不改变登录用户条件下,执行可执行文件的权限可以动态的调整
    结论:对文件访问的时候,LINUX通过对进程的有效用户来判断,是否具有对某个文件的操作权限

2.普通用户能够修改自己的密码的原因

  • /etc/password文件用来存储所有用户信息,/etc/shadow用来存储用户密码
  • 所有用户都可以修改自己的密码(修改了/etc/shadow文件), 但普通用户对/etc/shadow没
    有读写权限
  • (3.4)进程与线程——进程生命周期1_普通用户

  • 为什么所有用户可以修改自己的密码呢?
    用户通过执行passwd命令( /usr/bin/passwd文件)来修改密码;该文件设置了setuid位,在执行此命令时,该进程的有效用户不等于真实用户,而等于文件所有者(root)
  • (3.4)进程与线程——进程生命周期1_#include_02

  • Linux根据进程的有效用户进行权限检查,有效用户等于root则允许任何操作(包括对/ect/shadow文件的读写操作);
    如果清除掉“/usr/bin/passwd”文件的setuid权限位,普通用户就不能修改自己的密码了