终端登录和网络登录

1. BSD终端登录过程:

(1)init进程读取/etc/ttys这个文件,/etc/ttys每个终端设备都有一行,指定了设备名和传到getty程序的参数;

(2)对每一个允许登录的终端设备,init都调用一次fork(),每个子进程exec getty程序;

(3)getty程序open终端设备,并将文件描述符0,1,2设置到该设备,读用户名,初始化登录环境,再exec login程序;

(4)login程序验证用户登录后,更改当前工作目录为起始目录,设置登录用户组ID,用户ID,设置初始环境,再exec,将其自身替换为登录用户的登录shell,登录sell的文件描述符0,1和2设置为终端设备。

   对Ubuntu系统来说,getty程序使用存放在/etc/init目录下的*.conf文件配置终端设备。

2. BSD网络登录过程:

(1)init调用一个shell,执行脚本/etc/rc,该脚本启动守护进程inetd;

(2)inetd等待TCP/IP连接请求,当一个请求到达时,执行一次fork,生成的子进程exec适当的程序(如TELNET服务进程telnetd);

(3)telnetd进程打开伪终端设备,并fork()为两个进程:父进程处理网络连接的通信,子进程将文件描述符0,1,2与伪终端相连,再exec login程序;

(4)login程序完成与终端登录情况下相同的工作,登录shell连接到伪终端。

   Linux一些版本使用xinetd代替inetd,其他方面与BSD网络登录过程相同。

   网络登录与终端登录的主要区别:网络登录使用伪终端仿真串行终端的行为,将终端操作映射为网络操作,反之亦然。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值