登入LINUX

来源:互联网 发布:大排畸b超数据分析男女 编辑:程序博客网 时间:2024/04/28 21:47

登入LINUX

 [longyu@debian:322 07:36:45] $ sudo login  debian 用户名:longyu  密码: [longyu@debian:322 07:37:10] $    <-命令提示符(prompt)(PS1)

下面是我的PS1:

\[\e]0;\u@\h \d \t: \a\]${debian_chroot:+($debian_chroot)}[\u@\h: \d \t] \$

仅供了解,后面再介绍。

在登入Linux之时,我们要输入用户名与密码(输入密码不回显)。当我们输入完成,按下ENTER键之后,系统会在/etc/passwd(密码文件)中查找用户名。下面,我以自己的/etc/passwd为例:

longyu:x:1000:1000:This is my user:/home/longyu:/bin/bash

细心的读者可以发现,上面的一行中有七项——用:分隔。(There are seven colon-separated fields)

field description(字段描述) my field component(我的字段内容) the login name(登录名) longyu encrypted password(加密密码) x numeric user ID(用户ID) 1000 numeric group ID(默认组ID) 1000 a comment field(注释字段) This is my user home directory(家目录) /home/longyu shell program(默认shell) /bin/bash

在这里你必须了解各个项对应的不同意义。同时需要指出的是,加密后的用户密码存储在影子文件中/etc/shadow。这两个文件的属性如下:

-rw-r--r-- 1 root root   2238 318 09:32 /etc/passwd-rw-r----- 1 root shadow 1348 318 09:32 /etc/shadow

这样的话你应该知道为什么要加密密码了吧。如果你将密码——即使是加密之后的长串字符直接放在/etc/passwd中的话,那么账户的安全性就会大幅度降低。毕竟/etc/passwd是对所有人可读的呀!
好了,回归正题。

当我的debian/etc/passwd中查到longyu的存在之后,就启动PAM验证机制,来验证密码。当密码验证成功之后,我的屏幕上打印出了如下信息:

上一次登录:六 3月 19 14:50:05 CST 2016 tty6 上
Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u4 (2016-02-29) x86_64

The programs included with the Debian GNU/Linux system are free
software; the exact distribution terms for each program are described
in the individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

那这个信息是怎么产生的呢?

首先你必须明确的是,系统会将你每次的登陆信息记录在登陆日志文件中,然后在你进行新的登入时,就会有相关的程序(lastlog)执行,来显示你的上一次登陆的记录。这个记录包括时间(六 3月 19 14:50:05 CST 2016), 以及登陆位置(tty6)。

Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u4 (2016-02-29) x86_64

显示依赖于你在/etc/issue/etc/issue.net中的设定。下面是我的设定:

[longyu@debian:322 08:05:27] $ cat /etc/issue /etc/issue.netDebian GNU/Linux 8 \n \l

你现在只需要知道它是怎样来的就行,关于细节,我会在之后的讲解中阐述。

好了,上述的那一行下,你惊奇的发现还有两段文字,其实这两段文字也是由你设定的,不过你一般都懒得去改,所以直接采用默认。以下是我的/etc/motd文件:

[longyu@debian: 二 322 08:09:57] $ cat /etc/motdThe programs included with the Debian GNU/Linux system are free software;the exact distribution terms for each program are described in theindividual files in /usr/share/doc/*/copyright.Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extentpermitted by applicable law.

你有没有发现,上面的文件正文跟之前打印出来的两个段落一模一样呢?本该如此啊!
最后出现的是:

[longyu@debian:322 07:37:10] $    <-命令提示符(prompt)(PS1)

你先了解了解,这个之后再讲。

好了说了这么多,那这些信息打印出来之后我们能干什么?我们能打命令了!

执行我们所输入命令的程序叫做shell(这里就不翻译了)。正如我之前所讲的/etc/passwd的七个项的代表意义一样,你会发现第七项就是这个shell了。而我的shell/bin/bash这个呀!在我的debian中总共有这几种合法shell

  # /etc/shells: valid login shells  /bin/sh  /bin/dash  /bin/bash  /bin/rbash

这个你一样还是了解了解就行,你只需要知道它们是不同的程序,但具有极其相似的功能。

那么shell到底是干嘛的?A shell is a command-line interpreted that reads user input and executes commands.简单的说,这里的shell就是一个命令行解释器,通过读取用户输入的命令,来完成用户所赋予的任务。如果将每个命令都看做大学宿舍的每个房间,那你第一次进你宿舍之前,你是不是得先弄吧钥匙?这个钥匙怎么弄呢?偷?抢?要?这个钥匙是学校提供给你的,因此你要得到这个钥匙你就必须去特定的地方,找特定的人。

好了,现在你要入住8#212,类似于你要执行cd(change directory)这个命令,而这个命令的参数就是8#/212。在这里你必须明确的是你要先找到哪个!你要先找8#还是先找212宿舍?一般来说你会先找8#,而这个行为对应于指令,就是找到这个cd命令放在哪个目录下。当找到目录之后,你又开始找212,好了一个一个找吧。找到了!那你就可以成功入住,找不到!怎么会呢!其时还是有可能找不到的!找到之后cd命令就顺利执行,你就成功入住。找不到,那你就该去找找人问问了,对应于Linux,系统就给你报错误信息。

那到底命令是怎样找的?命令是按照下面这个PATH的设定来找的!

[longyu@debian: 二 322 08:21:36] $ echo $PATH/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/texlive/2015/bin/x86_64-linux

简单的来说PATH就是指导你去先找8#,再找212.
在这里我突然发现用cd这个命令为例其实很不合适,原因吗,后面会讲。不过原理就是这样,不会有差。

好了,登陆就先说到这吧!

              龙瑜

0 0
原创粉丝点击