📄 su.c
字号:
#include <stdio.h>#include <pwd.h>struct passwd *pwd,*getpwnam();char *crypt();char *getpass();char **environ;main(argc,argv)int argc;char **argv;{ register char **p; char *nptr; char *password; int badsw = 0; char *shell = "/bin/sh"; if(argc > 1) nptr = argv[1]; else nptr = "root"; if((pwd=getpwnam(nptr)) == NULL) { printf("Unknown id: %s\n",nptr); exit(1); } if(pwd->pw_passwd[0] == '\0' || getuid() == 0) goto ok; password = getpass("Password:"); if(badsw || (strcmp(pwd->pw_passwd, crypt(password, pwd->pw_passwd)) != 0)) { printf("Sorry\n"); exit(2); }ok: endpwent(); setgid(pwd->pw_gid); setuid(pwd->pw_uid); if (pwd->pw_shell && *pwd->pw_shell) shell = pwd->pw_shell; for (p=environ; *p; p++) { if (strncmp("PS1=", *p, 4) == 0) { *p = "PS1=# "; break; } } execl(shell, "su", 0); printf("No shell\n"); exit(3);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -