Linux管理员手册(6)--登录和注销

说明当一个用户登录和注销时发生了什么。较详细地说明后台进程的各种交互、log文件、配置文件等

  通过终端登录

  首先,init 确认有一个getty 程序提供给终端连接(或控制台)。 getty 侦听终端等候用户告知它要登录 (这通常意味着用户必然键入些什么)。当它注意到一个用户,getty 输出一个欢迎信息(存在/etc/issue 中),并提示用户名,最后运行login 程序。 login 作为一个参数得到用户名,并提示用户输入口令。如果正确,login 启动给此用户设置的shell;否则退出并终止进程 (可能在再给用户一个机会输入用户名和口令之后)。 init 注意到进程终止,就给这个终端启动一个新的getty 。

  注意唯一的新进程是由init 产生的(用fork 系统调用); getty 和login 只是替代进程运行的程序 (使用exec 系统调用)。

  为注意用户,串行线需要一个单独的程序,因为终端活动时可以(传统上也是)变得复杂。 getty 也适应连接的速度和其他设置,这对拨号连接特别重要,因为连接和连接的参数可能不同。

  getty 和init 有多个版本在使用,各有优缺点。学习你的系统的版本也了解其他版本是个好主意(你可以用 Linux Software Map来找。)如果你没有拨入,可能不必考虑 getty ,但 init 仍然很重要。

  通过网络登录

  一个网络中的2台计算机通常通过一个物理电缆连接。当他们通过网络通信是,参与通信的每个计算机里的程序通过虚拟连接virtual connection通信,即一些虚构的电缆。虚拟连接的每端的程序,独占自己的(虚拟)电缆。然而,因为这电缆不是真的,只是虚构的,所有计算机的操作系统可以在同一物理电缆上有多条虚拟连接。这样,只用一条电缆,多个程序可以不必考虑其他通信而相互通信。使用同一电缆使多台计算机是可能的;2台计算机间存在的虚拟连接,其他计算机会忽略他们不参加的连接。

  那是一个复杂和抽象的真实描述。但可能足够理解网络登录与普通登录的不同的重要原因。不同计算机上的2个程序要通信时,虚拟连接建立。由于理论上可能从网络上的任何一台计算机登录到任何一台计算机,因此可能有极大数量的潜在的虚拟通讯。因此,为每个潜在的login启动一个getty 是不现实的。

  有一个进程inetd(与getty 协同)处理所有的网络登录。当它发现一个进来的网络登录(即发现某台其他计算机来的新的虚拟连接), 它启动一个新进程来处理那个登录。原来的进程继续侦听新的登录。

  更复杂的是,网络登录有多个通讯协议。2个最重要的协议是 telnet 和rlogin 。除了登录,还有许多其他虚拟连接可能建立(为FTP、Gopher、HTTP和其他网络服务)。为要侦听的每种类型的连接提供一个进程不是很有效,因此,只用一个侦听器来识别连接的种类,能启动正确的程序来提供服务。这个侦听器叫inetd ;更多的信息请见《Linux网络管理指南》。
  login干了些什么

  login 程序负责认证用户(确认用户名和口令相配),并建立串行线,启动shell,建立用户的初始环境。

  部分初始化设置是输出文件/etc/motd (每天的短信息)的内容,并检查电子邮件。可以在用户家目录中产生一个叫.hushlogin 的文件来是上面所述的失效。

  如果存在文件/etc/nologin ,就不允许登录。这个文件一般由shutdown 及其相关的东西产生。 login 检查这个文件,如果这个文件存在,就拒绝接受登录。如果这个文件确实存在,login 就会在退出之前,将它的内容输出到终端。

  login 将所有失败的登录企图登记在系统log文件中 (通过syslog )。它也登记所有的root的登录。这些都对跟踪入侵者有用。

  当前登录着的用户列在/var/run/utmp 中。这个文件直到系统下次启动或关机前有效。系统刚启动时它被清空。它列出了每个用户和用户使用的终端(或网络连接),及一些有用的信息。 who 、w 及其他类似的命令查看utmp 文件得到都有谁登录着。

  所有成功的登录记录在/var/log/wtmp 中。这个文件将无限制地增大,所以必须有规律的清除,例如有个每周的cron 任务来清除它。 last 命令浏览wtmp 文件。

  utmp 和wtmp 都是二进制格式 (见utmp 的man页);不幸的是,没有特殊的程序无法查看它们。

  X和xdm

  META: X implements logins via xdm; also: xterm -ls

  存取控制

  用户数据库传统上包含在/etc/passwd 文件中。有些系统使用影子口令shadow passwords,并把口令移到 /etc/shadow 中。许多计算机的场所可以用NIS或其他存储用户数据库的方法共享帐户;它们可能也自动从中心位置复制数据库到所有其他计算机。

  用户数据库不仅包含口令,还包括有用户的其他信息,比如其真实姓名、家目录、登录 shell等。这其他信息需要公用,使所有人都能读。因此口令是加密保存的。这有缺点,任何人取得加密的口令,可以用不同的加密方法猜试口令,而不用试着真正登录到计算机。影子口令试图用把口令移动到其他文件的办法避免这种情况,只有 root能读(口令还是加密保存的)。 However, installing shadow passwords later onto a system that did not support them can be difficult.

  不管有没有口令,确认系统中的所有口令是好的是很重要的,即不易猜。 crack 程序可用于破解口令;任何可以精确地找到的口令都不是好的口令。同时crack 可以为入侵者运行,也可由系统管理员运行以避免坏的口令。好的口令也可以被passwd 程序强制实现;这样对CPU周期来说很有效,因为破解口令需要许多计算。

  用户组数据库保存在/etc/group 文件中;有影子口令的系统,是/etc/shadow.group 。

  root通常不能通过更多的终端或网络登录,只能通过列在/etc/securetty 文件中的终端登录。这使得必须能够物理存取这其中的一个终端。当然也可能通过任何终端用任何拥护登录,然后使用su 命令变成root。

  Shell启动

  当一个交互的登录shell启动时,它自动执行一个或更多预定义的文件。不同的shell执行不同的文件;更多的信息见每个shell的文档。

  多数shell首先运行一些全局文件,例如,Bourne shell(/bin/sh ) 和它引出执行的/etc/profile ;另外,它们执行用户家目录中的.profile 。 /etc/profile 允许系统管理员建立一个公用的用户环境,特别是建立PATH,以包括本地命令目录。另外,.profile 允许用户通过覆盖按照自己的口味客户化环境,如果必要,使用确省环境。

(0)

相关推荐

  • Linux管理员手册(6)--登录和注销

    说明当一个用户登录和注销时发生了什么.较详细地说明后台进程的各种交互.log文件.配置文件等 通过终端登录 首先,init 确认有一个getty 程序提供给终端连接(或控制台). getty 侦听终端等候用户告知它要登录 (这通常意味着用户必然键入些什么).当它注意到一个用户,getty 输出一个欢迎信息(存在/etc/issue 中),并提示用户名,最后运行login 程序. login 作为一个参数得到用户名,并提示用户输入口令.如果正确,login 启动给此用户设置的shell:否则退出并

  • Linux管理员手册(3)--存贮介质

    Linux管理员手册(3)--磁盘和其他存贮介质的使用 安装和升级系统时,需要对硬盘做很多工作.必须在硬盘上做文件系统,使文件能存在其上,并为系统不同的部分保留空间. 本章说明所有这些初始化工作.通常,一旦你建立了系统,就不必再做这些工作(除了使用软盘).如果你要增加一个新硬盘或更好地调整你的硬盘的使用,那么可能回到这一章. 管理磁盘的基本任务有: 格式化磁盘.这为磁盘进入使用做一些工作,比如检查坏扇区.(现在多数硬盘无须格式化.) 给硬盘分区,如果想用于互相不干扰的几件事.分区的一个原因是要在

  • Linux 管理员手册(2)

    本章说明标准Linux目录树的重要部分,基于FSSTND文件系统标准.概述根据不同的目的和给定的要求将目录树分为若干分离的文件系统的一般方法.也说明一些其他方法. 背景 本章松散地基于Linux文件系统标准FSSTND版本1.2(见参考书目[Qui95]),它意图建立一个如何组织Linux系统目录树的标准.这样一个标准具有易于写或port(移植?)Linux软件.管理Linux系统的优点,因为所有东西都将在他们的一般地方.此标准没有强制所有人遵从的权威,但它有最多的Linux distribut

  • Linux管理员手册(2)--目录树概述

    本章说明标准Linux目录树的重要部分,基于FSSTND文件系统标准.概述根据不同的目的和给定的要求将目录树分为若干分离的文件系统的一般方法.也说明一些其他方法. 背景 本章松散地基于Linux文件系统标准FSSTND版本1.2(见参考书目[Qui95]),它意图建立一个如何组织Linux系统目录树的标准.这样一个标准具有易于写或port(移植?)Linux软件.管理Linux系统的优点,因为所有东西都将在他们的一般地方.此标准没有强制所有人遵从的权威,但它有最多的Linux distribut

  • Linux 管理员手册(6)

    说明当一个用户登录和注销时发生了什么.较详细地说明后台进程的各种交互.log文件.配置文件等 通过终端登录 首先,init 确认有一个getty 程序提供给终端连接(或控制台). getty 侦听终端等候用户告知它要登录 (这通常意味着用户必然键入些什么).当它注意到一个用户,getty 输出一个欢迎信息(存在/etc/issue 中),并提示用户名,最后运行login 程序. login 作为一个参数得到用户名,并提示用户输入口令.如果正确,login 启动给此用户设置的shell:否则退出并

  • Linux管理员手册(5)--引导和关机

    本节说明当Linux系统引导和关机时发生了什么,应该任何正确完成. 如果没有遵循正确的过程, 文件可能损坏或丢失. 引导和关机概述 开启计算机并导致其操作系统被加载的过程 叫引导. The name comes from an image of the computer pulling itself up from its bootstraps, but the act itself slightly more realistic. 启动过程中,计算机首先加载了一小段叫 bootstrap lo

  • Linux管理员手册(1)--系统概述

    本章概述Linux系统.首先描述操作系统提供的主要服务.然后说明实现这些服务的程序 with a considerable lack of detail.本章的目的是理解系统整体,以后再详细说明每个部分. 一个操作系统的不同部分 一个UNIX操作系统包括一个核心程序kernel和一些系统程序system programs.还有一些做某件事情的应用程序application programs.核心是操作系统的心脏 .它跟踪磁盘上的文件,启动程序并运行它们,给不同的进程分配内存和其他资源,从网络接收

  • Linux 管理员手册(5)

    本节说明当Linux系统引导和关机时发生了什么,应该任何正确完成. 如果没有遵循正确的过程, 文件可能损坏或丢失. 引导和关机概述 开启计算机并导致其操作系统被加载的过程 叫引导. The name comes from an image of the computer pulling itself up from its bootstraps, but the act itself slightly more realistic. 启动过程中,计算机首先加载了一小段叫 bootstrap lo

  • Linux 管理员手册(3)

    安装和升级系统时,需要对硬盘做很多工作.必须在硬盘上做文件系统,使文件能存在其上,并为系统不同的部分保留空间. 本章说明所有这些初始化工作.通常,一旦你建立了系统,就不必再做这些工作(除了使用软盘).如果你要增加一个新硬盘或更好地调整你的硬盘的使用,那么可能回到这一章. 管理磁盘的基本任务有: 格式化磁盘.这为磁盘进入使用做一些工作,比如检查坏扇区.(现在多数硬盘无须格式化.) 给硬盘分区,如果想用于互相不干扰的几件事.分区的一个原因是要在一个硬盘上存不同的操作系统.另一个原因是将用户文件和系统

  • Linux管理员手册(7)--管理用户帐户

    本章解释如何产生新用户帐户,如何修改帐户的属性,如何删除帐户.不同的Linux系统有不同的工具实现. 什么是帐户? 当一台计算机为多人所用时,通常需要区分用户,例如,使个人文件保持个人化.即使计算机同时只为一人所用,这也很重要,如多数微机. 因此,每个用户给定一个单独的用户名,这个名字被用于登录. 用户除了名字还有更多.一个帐户是所有的文件.资源和属于这个用户的信息.这个属于暗示是银行,在一个商业系统中,每个帐户通常与一些钱有关,且这些钱依赖于用户使用系统的多少以不同的速度被花掉.例如,磁盘空间

随机推荐