登录过程
Login是在Linux系统上工作时面临的第一个过程,这对于终端使用和通过网络使用Linux是正确的。 但是,登录过程本身并不是在终端上看到的,实际上是gettygetteletypeterminal,初期的电脑意味着获取纸带终端,现在可以理解为直接打开终端),它是init )/etty
所以完整的起始链是init-Getty-log in-passwd-shell-applications。 从技术上讲,这在实际实现时略有不同。 例如,login和passwd可能位于一个程序中,但上面的链在UNIX中很典型。
那我们为什么要这么做呢? 为什么不能写处理所有工作的程序? 让一个getty程序同时处理login和passwd不好吗?
让一个程序只做一件简单的事情,链接很多简单的工作创造了这个复杂的运行环境,是保证UNIX稳定的关键,而眯缝的溪流在制作你的系统时,这也是非常重要的设计标准。 请参阅KISS指南,UNIX经典)
Debian6默认提供6个终端。 Ctrl Alt F1~F6是因为F7、F8用于打开图形界面而不是终端),但实际上内核的缺省值是64个终端,那么其他终端都去了哪里呢? 如果您在Linux虚拟机上,则可以访问tty10或tty10 使用ctrlaltf * ),但没有更多的功能键。 今后将讨论访问其他终端的方法。
Logout进程
logout流程很简单,他需要退出login流程打开的任务或外壳。 请注意,要关闭的不仅仅是壳,还有所有的东西。
以用户身份登录long时得到shell,使用ls时得到ls的结果并进行logout。 所以,logout的shell会发送信号通知父进程shell已退出。 但是,shell的父进程是login,此时login已经停止。 logout以login和外壳为终端。 那么,谁来获取外壳的返回值呢? init来接收logout的返回值,关闭getty、login、logout等所有内容后,init再次打开getty并等待输入。
看看有趣的东东:
– rwxr-xr-x1 root root 975488 dec 292012/zzdzm/bash
-rwxr-xr-x1根路由49008may252012/zzdzm/login
– rwxr-xr-x2 root root 32040 dec 112012/szzdzm/Getty
– rwsr-xr-x1 root root 51096 may 252012/usr/zzdzm/passwd
正如您所看到的,除了passwd之外,还有rwxr-xr-x权限,所有用户都可以执行。 passwd是-rwsr-xr-x权限,该s是setuid标志,是passwd,用于允许普通用户以root用户角色运行只能以root帐户运行的程序或命令
登录配置
使用login登录时,不仅会打开shell,还会设置运行时环境runtime env )。 此设置在/etc下是系统级设置,在个人主目录下是个人设置。
大概是这样的:
/etc/profile -适用于所有用户和所有shell
/etc/bash.bashrc -适用于所有用户的bash配置
~/.bashrc -你个人的bash配置
因此,在实际使用时,必须根据需要将配置放置在不同的配置文件中。 例如,对使用此系统的所有用户都有用的配置必须位于/etc/profile下。
苏
说到用户登录,这里是指root权限。 使用su命令su -)不仅可以切换用户权限,还可以创建新的login会话,从而获得新的运行时环境,而不仅仅是root。 请注意,这对于安全问题很敏感,因此使用root权限。 当然,也可以使用sudo来临时赋予自己的用户root权限。 虽然这对于桌面用户来说是个好方法,但请注意,在相对较大的系统上,它会向用户授予sudo权限。 最好不要给
Exit vs logout
使用登录登录登录系统。 在中,您可以选择退出系统。 那么,两者有区别吗? 在大多数系统中,两者之间没有区别,但两者略有区别。 logout在结束时执行~~/.bash_logout 如果有),但exit只执行结束工作,不执行~/. bash _ logout。 除此之外没有别的区别。
===============================
这篇文章的一部分是我和陶醉的画笔讨论后写的,如果有异议的话请指出来讨论
请阅读: