su.c

来自「UNIX v6源代码 这几乎是最经典的unix版本 unix操作系统设计和莱」· C语言 代码 · 共 47 行

C
47
字号
/* su -- become super-user */char	password[100];char	pwbuf[100];int	ttybuf[3];main(){	register char *p, *q;	extern fin;	if(getpw(0, pwbuf))		goto badpw;	(&fin)[1] = 0;	p = pwbuf;	while(*p != ':')		if(*p++ == '\0')			goto badpw;	if(*++p == ':')		goto ok;	gtty(0, ttybuf);	ttybuf[2] =& ~010;	stty(0, ttybuf);	printf("password: ");	q = password;	while((*q = getchar()) != '\n')		if(*q++ == '\0')			return;	*q = '\0';	ttybuf[2] =| 010;	stty(0, ttybuf);	printf("\n");	q = crypt(password);	while(*q++ == *p++);	if(*--q == '\0' && *--p == ':')		goto ok;	goto error;badpw:	printf("bad password file\n");ok:	setuid(0);	execl("/bin/sh", "-", 0);	printf("cannot execute shell\n");error:	printf("sorry\n");}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?