当用户修改自己的密码时,需要修改shadow文件,这个文件普通用户时无法访问的;为什么普通用户可以修改自己的密码?
这是因为passwd文件有u+s权限; 当执行passwd指令时会切换成root身份;
shell 权限的实现过程; sudo的实现程序:mysu.c#include#include #include #include int main(int argc, char **argv) { pid_t pid; if(argc < 3) { fprintf(stderr, "Usage: %s n", argv[0]); exit(1); } pid = fork(); if(pid < 0) { perror("fork()"); exit(1); } if(pid == 0) { setuid(atoi(argv[1])); execvp(argv[2], argv+2); perror("execvp()"); exit(1); } wait(NULL); exit(0); }
执行时需要:
chown root mysu
chmod u+s mysu
./mysu 0 cat /etc/shadow //以0号用户的身份执行



