登陆与登出Linux系统

简单介绍了shell,讲述了从登录Linux、使用shell、登出Linux到关机与重启,最后谈到了更改密码和root用户。

shell 介绍

shell 是一个程序,充当用户界面和脚本解释器,允许用户输入命令以及间接的访问内核的服务。

shell还支持一种编程语言,称为shell脚本

shell历史悠久,发展过程中产生了各种各样的shell程序,主要的有Bourne Shell家族和C-Shell家族。

每种类型的shell都有自己特定的编程语言和规则。

到底哪种shell比较好(最好?),即便是在专家之间也争论不休。

各种shell之间的区别尽管重要,但是对于初学者来说无关紧要:初学者最好使用系统上默认的shell。(我建议初学者学习 Bash)

shell 打开与关闭

交互式shell的使用方式大致是这样的:

  • shell程序显示一个shell提示并且等待用户输入命令;
  • 每输入一条命令,shell就处理一条命令;
  • 一旦处理完命令,就会再次显示一个shell提示,并等待输入一条命令;
  • 最后,您可能会按下^D来发送一个eof(end of file,文件结束)告诉shell程序不再输入数据,shell关闭。

一旦登陆Linux主机,系统就会为用户自动打开一个shell程序。

要知道自己所使用的Linux中有哪些shell,可以查看/etc/shells文件。

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/tmux
/usr/bin/screen

要想知道自己目前使用的哪种shell,可以查看全局SHELL变量。

 echo SHELL
/bin/bash

直接在命令行数输入shell的名称就可以打开特定的shell。

$ tmux

exit命令可以退出当前的shell。

$ exit

可以使用chsh命令来改变登陆shell。

$ chsh -s /bin/dash

在输入命令前,shell总是会显示要给提示,就像下面这样:

wm@VM-134-97-ubuntu:~$

在这个提示中:

  • wm 是当前的用户名
  • @ 是分隔符
  • VM-134-97-ubuntu 是主机名
  • : 是分隔符
  • ~代表家目录
  • $ 代表普通用户,root用户的提示符为 #

登录与登出 Linux

Linux是一个多用户的环境,只要有正确的用户名和密码,就可以登陆Linux主机。

密码不会显示,也不会用*或者其他符号代替显示,其他人无法从显示器上得到你的密码的任何信息。

Linux 严格区分 大小写。

Ubuntu 16.04 登陆界面细节:

Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-63-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

Last login: Fri Apr 28 00:10:20 2017 from 114.247.56.155
$ 

其中:

  • 第1行是Ubuntu操作系统的欢迎信息,并且说明了内核版本
  • 第3~5行是支持和帮助文档
  • 第7行是上次登录的信息
  • 第8行是shell提示,表示已经登录,等待输入命令

在命令行中输入logout或者exit,系统会进行一系列的工作来登出你的账号,比如清理账号的信息等。

$ exit

如果你是从终端登陆的Linux系统,那么登出后当前的窗口会自动关闭;如果你是从控制台登陆的,那么系统会再次显示登陆的提示。

Linux 中的“快捷键”

在使用 < Ctrl >时,需要将它按住,然后按另一个键,比如< C >,这个组合键写作 < Ctrl > – < C >。

虽然 < Ctrl > – < C > 中,< C >是大写字母,但并不需要按 < Shift >。

< Ctrl > 可以简写为 ^,< Ctrl > – < C > 等效于 ^C。

下面是一些组合键。

信号 按键 作用
erase < Backspace > 删除最后一个键入的字符
werase ^W 删除最后一个键入的单词
kill ^U 删除整行
intr ^C 停止程序
stop ^S 停止显示
start ^Q 继续显示
eof ^D 文件结束

相关:

  • Difference between CR LF, LF and CR line break types? – Stack Overflow
  • Linux被设计成人们使用终端访问计算机的系统。一个问题是每种类型的终端都拥有自己的特征,并且使用自己的指令集。要求每个程序都知道每种类型终端的每个指令并不合理,解决方法就是将所有不同终端的描述收集到一个数据库中。Terminfo将终端数据存储在一系列文件中,每种终端类型一个文件,至今仍在使用。

关机与重启

只有root用户才有关机的权限。

如果你使用的是图形界面,那么普通用户也可以在图形界面中关机。

可能 需要在关机前输入下面的命令:

  1. who:查看目前有谁在线。
  2. netstat -a:查看网络联机状态。
  3. ps -aux:查看当前进程运行状态。
  4. sync:将内存中的内容写入到磁盘。

Linux系统中使用shutdown命令进行关机。

shutdown [OPTIONS...] [TIME] [WALL...]
  • -t sec:sec是秒数,sec秒时候进行关机。
  • -k:仅仅发送警告信息(不关机)。
  • -r:停止系统服务后重新启动。
  • -h:停止系统服务后关机。
  • -c:取消正在进行的shutdown命令。

时间参数 必须 要有。

看下面的例子:

  • 立即关机:
$ sudo shutdown -h now
  • 12:34关机:
$ sudo shutdown -h 12:34
  • 10分钟后关机:
$ sudo shutdown -h +10
  • 30分钟后重新启动,并向用户发送信息“The system will reboot.”:
$ sudo shutdown -r +30 'The system will reboot'
  • 仅提示信息,但不真实关机:
$ sudo shutdown -k now 'The system will reboot'

重新启动也可以使用reboot命令:

$ sudo reboot

更改密码 passwd

普通用户只有权更改自己的密码。

root用户有权更改所有人的密码。

使用passwd修改密码。

$ passwd

在修改过程中需要输入旧密码,如果你忘记了旧密码,请联系root用户为你修改密码。

总是有人在试图破解你的密码,你需要做到:

  1. 永远不要把自己的密码告诉他人;
  2. 选择一个不容易被猜测的密码。

下面是一个选取密码的指南(仅供参考):

  • 不要将用户名或者用户名的倒序作为密码(比如用户名为jack的用户不应该将密码设置为jack或者kcaj)。
  • 不要用自己的名字或者姓氏,也不要用自己爱人、亲人、好朋友的名字或者姓氏。
  • 不要用字典中单词。
  • 不要用一串跟自己有关的数字,比如电话号码、生日、结婚纪念日等。
  • 不要用“周杰伦”、“老干妈”、“日了狗”、“变形金刚3”等一系列流行、品牌、网络词汇。
  • 不要用一个键盘序列,比如asdfgh或者12345678 。
  • 不要把密码写在纸上。
  • 至少一个月更改一次密码。

相关:

root用户 sudo

系统管理员(管理主机的人)必须有一定得特殊权限,比如添加用户、修改他人口令、升级软件等等。

按照这个要求,Linux 支持一个特殊的用户名,叫做 root ,使用root用户名登陆的人可以做任何想做的事情,所以我们也称root用户为超级用户

root用户名在系统创建时就已由Linux建立。

由于超级用户权限非常大,即便是系统管理员,一般在Linux系统中也只是使用自己的普通用户名登陆,只有在确定需要使用root用户的权限时才会使用root用户名登陆,使用完成后立即登出。

甚至在一些系统中不会给root用户分配密码(以至于无法使用root用户名登陆),系统管理员不得不使用sudo下达命令或者为root用户名分配密码。

Shell 提示会对root用户做出特殊的标识,除了更改用户名外,用户标识会从$变为#

普通用户的shell提示:

wm@VM-ubuntu:~$

root用户的shell提示:

root@VM-ubuntu:~#

普通用户可以使用sudo命令执行root用户的命令:

$ sudo apt upgrade

发表评论

电子邮件地址不会被公开。 必填项已用*标注