inux下Login和Logout详解
 
             Login 是你用Linux系统工作时面对的第一个进程,这对于使用终端以及通过网络使用Linux都是正确的。但是login进程本身并不是你在终端上见到的,你见到的其实是getty (get TeleTYpe terminal ,早期电脑上的意思是获取纸带终端,现在可以直接理解成打开终端),它是由init(通过/etc/inittab)在启动login进程时添加而启动的。
            所以完整的启动链是:init -> getty -> login -> passwd -> shell -> applications 。这是从技术上来讲的在真正实现时还是有点不同的,比如有时候login和passwd是在一个程序里面,但是上面这个链是UNIX中很典型的。
 
        那么为什么我们要这么做?为什么不能写一个程序来处理所有的工作。让一个getty程序同时处理login和passwd不好么?
       让一个程序只做一件简单的事然后链接许多简单的工作创造了这个复杂的运行环境,这是保证UNIX稳定的关键,而且当你创造你的系统时这也是一个很关键的设计准则。(参见KISS准则,UNIX中的经典)
 
         Debian6上默认提供六个终端(Ctrl+Alt+F1~F6,因为F7,F8用来打开图形界面而不是用作终端),但是实际上内核默认是64个终端,那么其他的终端哪去了?假如你在Linux虚拟机上,你可以访问tty10甚至tty12(使用Ctrl+Alt+F*),但是你没有更多的功能键,以后我们在讨论如何访问其他的终端。
 
Logout 进程
         logout进程很简单,他需要终止login进程打开的任务或者shell。注意,它要关闭的不只是一个shell,而是所有的东西。
假如我使用long作为用户登录我会得到一个shell,假如我使用 ls,我会得到ls的结果然后我logout。所以logout的shell会发送一个信号到父进程用来通知它shell被终止了。但是shell的父进程是 login 而且此时 login 已经停止运行了(logout会终端login和shell),那么谁来获取shell的返回值呢? 是 init 来接受 logout 的返回值,在关闭getty、login、logout等所有后,init 重新打开一个getty来等待输入。
下面我们看个好玩的东东:
                          -rwxr-xr-x 1 root root 975488 Dec 29  2012 /bin/bash
                          -rwxr-xr-x 1 root root  49008 May 25  2012 /bin/login
                          -rwxr-xr-x 2 root root  32040 Dec 11  2012 /sbin/getty
                          -rwsr-xr-x 1 root root  51096 May 25  2012 /usr/bin/passwd
我们都可以看到,除了passwd其他都有着rwxr-xr-x权限,所有他们可以被任何用户执行,而passwd是-rwsr-xr-x权限,这个s是setuid的标志,该位是让普通用户可以以root用户的角色运行只有root帐号才能运行的程序或命令,所以passwd是运行在root权限下(即使是一个普通用户使用)。有了这个,我们可以降低安全风险。
 
 
Login配置
你使用login登录,你不但打开了一个shell而且还配置了你的运行时环境(runtime env),这个配置如果在/etc下是系统级别的配置,如果在你的个人home目录下则是个人配置。
大概划分是这样的: 
                             /etc/profile - 面向所有的用户和所有的shell
                             /etc/bash.bashrc - 面向所有用户的bash配置
                             ~/.bashrc - 你个人的bash配置
所以在实际使用时我们需要根据需求的不同将配置放在不同的配置文件中。比如说,一个配置对所有使用这个系统的用户都有用,我们就需要放在/etc/profile下。
 
 
su
        提到用户登录,这里说下root权限,使用su命令(su -)你不但切换了用户权限而且你创建了一个新的login会话,所以你得到的不只是一个root,而且是一个全新的运行时环境,这对于安全问题来说是很敏感的,所以使用root权限是一定要注意。当然,你也可以使用sudo来让自己的用户临时获得root权限,这对于桌面用户来说还是个不错的方法,但是对于比较大的系统,给用户sudo权限一定要注意,最好不给!
 
 
Exit vs logout
         使用login登陆系统,那么退出系统我们可以选择exit或者logout,那么这两者之间有区别么?大部分系统来说这两者之间是没有区别的,但是他们两者还是有一点点的区别的:logout退出时会执行~/.bash_logout(如果有的话),而exit只会作退出工作而不执行~/.bash_logout。除此之外别无其他区别。

Login 和 Logout的更多相关文章

  1. django(权限、认证)系统——用户Login,Logout

    上面两篇文章,讲述的Django的Authentication系统的核心模型对象User API和相关的使用,本文继续深入,讨论如何在Web中使用Authentication系统. 前面说了,Djan ...

  2. Django 自带登录验证:authenticate和login,login_require,logout模块

    验证之前需要在settings 中指定验证数据models AUTH_USER_MODEL = 'crm.UserProfile'#app名字.表名字 1.authenticate是一个方法,验证账号 ...

  3. How to Log Users Login and Logout Details Through Oracle Forms

    Log user's login and logout details in to table through Oracle Forms using POST-LOGON and PRE-LOGOUT ...

  4. django 自带认证系统(login,logout,authenticate,login_required)

    from django.contrib.auth import login,authenticate,logoutfrom django.contrib.auth.decorators import ...

  5. [转]Angular: Hide Navbar Menu from Login page

    本文转自:https://loiane.com/2017/08/angular-hide-navbar-login-page/ In this article we will learn two ap ...

  6. FaceBook登陆API -- Login with API calls

    Login with API calls Related Topics Understanding sessions FBSession Error handling FBError FBLoginC ...

  7. 说说BPM数据表和日志表中几个状态字段的详细解释

    有个客户说需要根据这些字段的值作为判断条件做一些定制化需求,所以需要知道这些字段的名词解释,以及里面存储的值具体代表什么意思 我只好为你们整理奉上这些了! Open Work Sheet  0 Sav ...

  8. [NodeJS] Hello World 起步教程

    概述: 做数据,免不了需要展示数据,数据可视化是必须经历的步骤. 本文将提供一个NodeJS的起步教程,是笔者这两天探索的小结. 正文:  1. 为什么使用NodeJS 究竟是以B/S还是C/S的架构 ...

  9. Laravel 5.3 登录注册底层实现详解

          每个控制器都使用 trait 来引入它们需要的方法 */ 用于处理用户登录认证 用于处理新用户注册 包含重置密码逻辑 用于处理重置密码邮件链接   认证需要的视图 包含了应用的基础布局文件 ...

随机推荐

  1. BZOJ3963: [WF2011]MachineWorks

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3963 CDQ分治加凸包.具体看这篇题解:http://www.acmerblog.com/ ...

  2. OGRE HelloWorld

    #include <OGRE/ExampleApplication.h> #include <OGRE/Ogre.h> class EnvMapApplication : pu ...

  3. Openjudge-计算概论(A)-年龄与疾病

    描述: 某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理. 输入共2行,第一行为过往病人的数目n(0 < n <= 100),第二行为每个病人患病时的年龄.输 ...

  4. tomcat源码分析(二)启动过程

    在Catalina的load方法中,首先初始化Server组件. // Start the new server if (server instanceof Lifecycle) { try { se ...

  5. ***1133. Fibonacci Sequence(斐波那契数列,二分,数论)

    1133. Fibonacci Sequence Time limit: 1.0 secondMemory limit: 64 MB is an infinite sequence of intege ...

  6. UIScrollView 加载多个view view还可以交换顺序(2)

    在上的代码中 UIview都在一个页面 要是每一个view对应一个页面 操作每一个view代码都在viewcontroller里面就会很乱,那么我们就将view重新做一下 创建想要的页面继承与view ...

  7. k近邻模型

    k近邻模型主要包含三个基本要素:距离度量.k值的选择.分类决策规则 模型: k近邻法中,当训练集.距离度量.k值及分类决策规则确定后,对于一个新的输入实例,它所属的类唯一确定,这相当于根据上述要素将特 ...

  8. 微信a标签不跳转

    [问题] 微信页面开发时,各个主页之间的跳转,完全是通过a链接进行的,但是来回跳转几次,再次从其他主页面跳回首页的时候,微信头部出现了跳转加载进度条,但是就是不跳转,也没有任何反应 [范围] 只出现在 ...

  9. 新学的js精集

    逻辑运算符比较 逻辑与和逻辑或这两个逻辑运算符它不单单会输出布尔型数据 1.只要"||"前面为false,无论"||"后面是true还是false,结果都返回& ...

  10. Orace内置函数大全[转:http://www.cnblogs.com/lfx0692/articles/2395950.html]

    NewProgramer   Oracle SQL 内置函数大全(转) SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数;SQL> select ascii('A') A,a ...