setlocale(LC_ALL, "");//本函数用来配置地域的信息设置当前程序使用的本地化信息.使用系统默认的设置 //用来设置进程执行优先权为0 passwd_req = 1;//表示输入的用户名需要进行密码验证,为0则不需密码验证 //strdup()在內部调用了malloc()为变量分配内存不需要使用返回的字符串时,需要用free()释放相应的内存空间否则会造成内存泄漏
//用ttyname(0) 或 ttyname(1) 或 ttyname(2)是可以得到的,因为0、1、2分别是与具体终端相连的标准输入、标准输出和标准出错输出的文件描述符所以可以得到。 //将目前进程所属的组识别码设为目前进程的进程识别码 //设置并打开终端设备 //打开终端设备,标准输入标准输出,出错都链接到终端设备上 通过该函数,可以得到的值有: PAM_RHOST:
该用户程序使用的 远程主机信息. //因为每个用户可以属于多个组该函数将user所属的所有组还有group都添加到当前运行进程的有效组,即将这些要添加的組作为添加组 #else//若是没有定义PAM机制,则进行以下操作 //取得用户登录相关信息 //若passwd_req设置于为0(表示不需输入密码直接登录),或没有密码则鈈需登录比较密码直接登录
//key:要加密的明文。salt:密钥 //密码不正确,往下处理 //错误超过10次会退出 //往下去表示用户名和密码匹配成功 //比較初始工作目录长度是否大于设定的长度 //utmp记录当前登录进系统的各个用户;wtmp文件跟踪各个登录和注销事件
setsid();//进程成为新的会话组长和新的进程组长,并与原来的登录会话和进程组脱离由于会话过程对控制终端的独占性,进程同时与控制终端脱离 //设置实际用户ID和有效用户ID //进叺到初始工作目录 //给shell执行命令的字符串分配空间
}