Linux网络操作系统

参考书目:Linux网络操作系统实用教程

第一章 Linux基本操作命令

1.1 Shell命令基础

  Linux操作系统的Shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。

  Shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,Shell就是围绕内核的外层。当从Shell或其他程序向Linux传递命令时,内核会做出相应的反应。

  Shell是使用Linux操作系统的主要环境,Linux操作系统提供的图形用户界面X windows就像windows一样,也有窗口、菜单和图标。打开终端,即可启动Shell。

  在终端中输入的命令就是依靠Shell来解释执行完成的。

请添加图片描述

  当用户成功登录后,系统将执行Shell程序,提供命令提示符,对于普通用户,用$作为提示符,对于超级用户,用#作为提示符。如果要中止命令的执行,可以按Ctrl+C。

1.2 显示系统信息的命令

(1)who——查看用户登录信息

wudawei@wudawei-virtual-machine:~$ who -a       //显示所有用户的信息
           系统引导 2023-03-30 20:28
           运行级别 5 2023-03-30 20:29
wudawei  + tty7         2023-03-30 20:29 00:25        1485 (:0)
登录     tty1         2023-03-30 20:29              1378 id=tty1

(2)whoami——显示当前操作用户

wudawei@wudawei-virtual-machine:~$ whoami
wudawei

(3)date——显示时间

wudawei@wudawei-virtual-machine:~$ date
2023年 03月 30日 星期四 20:56:56 CST

(4)clear——清除屏幕 也可以使用快捷键Ctrl+L

(5)history——显示历史命令

  如果需要查看最近使用过的命令,可以在终端中执行history命令。

  执行历史命令,最简单的方法就是上下方向键,并且按Enter执行。

  当history命令没有参数时,将显示整个历史命令列表的内容,如果使用n参数,会显示最近n条历史命令。

wudawei@wudawei-virtual-machine:~$ history
    1  su root
    2  sudo passwd root
    3  su root
    4  su rooot
    5  su root
    6  sudo apt-get autoremove open-vm-tools
    7  sudo apt-get install open-vm-tools-desktop
    8  sudo vi /etc/yum.repos.d/CentOS-Base.repo


wudawei@wudawei-virtual-machine:~$ history 5
   25  clear
   26  ip address
   27  clear
   28  history
   29  history 5

  如果需要重复某一条命令,参数可以用!n的格式,来执行第n条命令,这个n就是执行history后,命令前面的数字。

wudawei@wudawei-virtual-machine:~$ !23
date
2023年 03月 30日 星期四 21:03:32 CST

(6)alias——别名

  用户可以为一个复杂的命令设置一个简单的别名,可以用alias命令创建别名。注意,定义别名时等号两边不能有空格,等号右边的命令一般会包括空格和特殊字符,此时需要使用单引号。

alias 别名=命令名称
alias 别名='命令名称'

  如果不加参数,仅输入alias,会显示当前所有的别名设置。

  例如:

请添加图片描述

(7)help——查询命令

  我们不需要去把Linux的所有命令格式记住,借助帮助工具可以很好地解决问题。

command --help

请添加图片描述

1.3 Linux文件及目录管理

1.3.1 Linux操作系统的目录结构

  Linux的文件系统结构不同于Windows,Linux操作系统只有一颗文件树,整个文件系统是以一个树根"/"作为起点的,所有的文件和外部设备都以文件的方式挂在这颗树上。通常Linux的根目录包含:/boot 、/dev 、/etc 、/home 、/media 、/mnt 、/opt 、/proc 、/root 、/run 、/srv 、/tmp 、/usr 、/var 、/bin、/lib 、/lib64 、/sbin等目录。

请添加图片描述

1.3.2 文件及目录显示类命令

(1)pwd——显示当前工作目录

  pwd是print working directory的缩写,用来显示当前工作目录,以绝对路径的方式显示。

  每次打开终端时,系统都会处在某个当前工作目录中,一般开启终端后默认当前工作目录是用户的主目录。(普通用户的主目录是/home,系统管理员的主目录是/root)

wudawei@wudawei-virtual-machine:~$ pwd
/home
root@wudawei-virtual-machine:/home/wudawei# pwd
/root

(2)cd——改变当前工作目录

  cd是change directory的缩写,用来改变当前工作目录。

cd 绝对路径或相对路径

  绝对路径:从根目录(/)开始的路径。

  相对路径:路径不是从根目录开始的,相对路径的起点是当前目录,如果现在位于/usr目录中,那么相对路径local/etc所指示的位置是绝对路径/usr/local/etc。

  如果只输入cd,不指定路径,则返回到当前用户的主目录(相当于cd ~)。

特殊符号表示的目录
~代表当前登录用户的主目录
.代表当前目录
代表上级目录

(3)ls——显示目录文件

  ls是list的缩写,不加参数时,ls用来显示当前目录清单,是Linux中最常用的命令,通过ls不仅可以查看Linux文件夹包含的文件,还可以查看文件及目录的权限、目录信息等,其目录格式如下:

选项功能说明
-a显示所有文件,包括隐藏文件,如".“”…"
-d仅可以查看目录的属性参数及信息
-h以阅读的方式显示文件的大小
-l长格式输出,包含文件属性,显示详细信息。

(4)stat——显示文件或文件系统状态信息

  stat是status的缩写,通过该命令可以查看文件的大小,类型,环境,访问权限,访问和修改时间等。

  如果要显示/etc/passwd的文件系统信息,可以使用stat /etc/passwd。

1.3.3 文件及目录操作类命令

(1)touch——创建文件或修改文件的存取时间

  touch命令可以用来创建文件或者修改文件的存取时间,如果指定的文件不存在,则会生成一个空文件,其格式如下

touch 选项 目录或文件名
选项功能说明
-a只把文件存取时间修改为当前时间
-d把文件的存取/修改时间改为yyyymmdd
-m只把文件的修改时间改为当前时间
root@wudawei-virtual-machine:~# cd /home                            //进入home
root@wudawei-virtual-machine:/home# touch a1.txt                    //创建文件a1
root@wudawei-virtual-machine:/home# touch a2.txt                    //创建文件a2
root@wudawei-virtual-machine:/home# ls -l                           //显示当前信息
总用量 4
-rw-r--r--  1 root    root       0 3月  30 22:02 a1.txt
-rw-r--r--  1 root    root       0 3月  30 22:02 a2.txt
drwxr-xr-x 19 wudawei wudawei 4096 3月  30 20:29 wudawei
root@wudawei-virtual-machine:/home# touch -d 20200621 /home/*       //修改home中的所有文件的修改时间
root@wudawei-virtual-machine:/home# ls -l
总用量 4
-rw-r--r--  1 root    root       0 6月  21  2020 a1.txt
-rw-r--r--  1 root    root       0 6月  21  2020 a2.txt
drwxr-xr-x 19 wudawei wudawei 4096 6月  21  2020 wudawei

(2)mkdir——创建新目录

  mkdir用来创建指定的目录名,并且指定的目录名不能是当前目录中已有的目录名,目录名可以是绝对路径也可以是相对路径。

  格式如下:

mkdir 选项 目录名
选项功能说明
-p创建目录时,递归创建,如果父目录不存在,则此时可以和子目录一起创建。同时建立多个目录
-m给创建的目录设定权限
-v输入目录创建的详细信息
root@wudawei-virtual-machine:/home# mkdir a11          //mkdir创建a11目录
root@wudawei-virtual-machine:/home# ls -l
drwxr-xr-x  2 root    root    4096 3月  31 10:38 a11

//使用递归创建,同时创建了usr01和里面的a01
root@wudawei-virtual-machine:/home# mkdir -p /home/usr01/a01 
root@wudawei-virtual-machine:/home# ls -l
drwxr-xr-x  3 root    root    4096 3月  31 10:39 usr01
root@wudawei-virtual-machine:/home# cd usr01
root@wudawei-virtual-machine:/home/usr01# ls -l
总用量 4
drwxr-xr-x 2 root root 4096 3月  31 10:39 a01

(3)rm——删除文件或目录

  rm是remove的缩写,可以删除目录或者文件其命令格式如下:

rm 选项 目录名或文件名
选项功能说明
-r删除某个目录及其中的所有文件和子目录
-d删除空文件或目录
-v显示指令执行过程
root@wudawei-virtual-machine:/home# mkdir a01     //建立a01目录
root@wudawei-virtual-machine:/home# rm -v -r a01  //删除目录,并显示执行过程
removed directory 'a01'
root@wudawei-virtual-machine:/home# ls -l
总用量 0

(4)cp——复制文件或目录

  要将一个文件或目录复制到另一个文件或目录下,可以使用cp命令。

cp 选项 原目录或文件名 目标目录或文件名
选项功能说明
-r递归复制目录,既包含目录下的所有子目录内容
-i如果目标文件或目录已存在,则提示是否覆盖
-v显示执行过程
root@wudawei-virtual-machine:/home# mkdir a01 a02 a03     //建立目录
root@wudawei-virtual-machine:/home# touch w01 w02 w03     //建立文件
root@wudawei-virtual-machine:/home# ls -l
总用量 12
drwxr-xr-x 2 root root 4096 3月  31 10:56 a01
drwxr-xr-x 2 root root 4096 3月  31 10:56 a02
drwxr-xr-x 2 root root 4096 3月  31 10:56 a03
-rw-r--r-- 1 root root    0 3月  31 10:56 w01
-rw-r--r-- 1 root root    0 3月  31 10:56 w02
-rw-r--r-- 1 root root    0 3月  31 10:56 w03
root@wudawei-virtual-machine:/home# cp -v -i w01 a01/test01      //将w01文件复制到a01里面的test01
'w01' -> 'a01/test01'
root@wudawei-virtual-machine:/home# ls -l
总用量 12
drwxr-xr-x 2 root root 4096 3月  31 10:57 a01
drwxr-xr-x 2 root root 4096 3月  31 10:56 a02
drwxr-xr-x 2 root root 4096 3月  31 10:56 a03
-rw-r--r-- 1 root root    0 3月  31 10:56 w01
-rw-r--r-- 1 root root    0 3月  31 10:56 w02
-rw-r--r-- 1 root root    0 3月  31 10:56 w03

root@wudawei-virtual-machine:/home# cd a01
root@wudawei-virtual-machine:/home/a01# ls -l
总用量 0
-rw-r--r-- 1 root root 0 3月  31 10:57 test01

(5)mv——移动文件或目录

  使用mv命令可以吧文件或目录重命名或移入另一个目录,如果在同一个目录下移动,可以理解为重命名。

root@wudawei-virtual-machine:/home# mkdir a01         //建立目录a01
root@wudawei-virtual-machine:/home# mv  -v a01 a02         //移动a01到a02 并且显示过程
'a01' -> 'a02'
root@wudawei-virtual-machine:/home# ls -l
总用量 4
drwxr-xr-x 2 root root 4096 3月  31 11:02 a02

(6)tar——打包

  使用tar命令可以把整个目录的内容归并为一个单一的文件,许多用于Linux操作系统的程序就是打包为tar文件的格式。

  tar命令可以用于建立、还原、查看、管理文件。

tar 选项 文件目录列表
选项功能说明
-c创建一个新压缩文件,如果备份的话,需要使用这个命令
-f使用归档文件或设备,这个选项通常是必选的
-z使用gzip来压缩/解压缩文件
-x从归档文件中释放文件
-v显示处理的文件信息
root@wudawei-virtual-machine:/home# mkdir a01 a02     //建立两个目录   
root@wudawei-virtual-machine:/home# touch w01 w02     //建立两个文件
root@wudawei-virtual-machine:/home# ls -l
总用量 8
drwxr-xr-x 2 root root 4096 3月  31 11:17 a01
drwxr-xr-x 2 root root 4096 3月  31 11:17 a02
-rw-r--r-- 1 root root    0 3月  31 11:17 w01
-rw-r--r-- 1 root root    0 3月  31 11:17 w02
root@wudawei-virtual-machine:/home# mkdir test01       //建立放入压缩文件的目录
root@wudawei-virtual-machine:/home# tar -cvf /home/test01/test.tar /home/*
tar: 从成员名中删除开头的“/”
/home/a01/
/home/a02/
/home/test01/
tar: /home/test01/test.tar: 文件是归档文件;未输出
/home/w01
/home/w02
root@wudawei-virtual-machine:/home# ls -l
总用量 12
drwxr-xr-x 2 root root 4096 3月  31 11:17 a01
drwxr-xr-x 2 root root 4096 3月  31 11:17 a02
drwxr-xr-x 2 root root 4096 3月  31 11:19 test01
-rw-r--r-- 1 root root    0 3月  31 11:17 w01
-rw-r--r-- 1 root root    0 3月  31 11:17 w02
root@wudawei-virtual-machine:/home# cd test01
root@wudawei-virtual-machine:/home/test01# ls -l
总用量 12
-rw-r--r-- 1 root root 10240 3月  31 11:19 test.tar

root@wudawei-virtual-machine:/home/test01# tar -xvf test.tar    //解压缩
home/a01/
home/a02/
home/test01/
home/w01
home/w02

(7)du——查看文件或目录大小

du 选项 文件或目录
选项功能说明
-b显示时以Byte作为单位
-c额外显示所有目录或文件的综合
-h以KB、MB、GB为单位,提高可读性

1.3.4 文件内容的显示和预处理命令

(1)cat——显示文件内容

  cat命令用来显示文件内容

cat 选项 文件名
root@wudawei-virtual-machine:/home# touch a01.txt
root@wudawei-virtual-machine:/home# cat a01.txt

(2)more——逐页显示文件中的内容(只可向下翻页)

(3)less——逐页显示文件中的内容(可以向上、向下翻页)

  less命令比more更加强大,可以向上向下翻页,按Enter下移一行,按Space下移一页,按B上移一页,按Q退出。

(4)head——显示文件的前n行

head -nx 文件名    //x代表需要显示前几行

(5)tail——显示文件的后n行

  用法和head类似,显示文件最后几行。

(6)file——查看文件的类型

  如果需要知道文件的基本信息,如输入ASCII文件、数据文件、二进制文件,可以用file

file 选项 文件名

(7)wc——统计

  如果想要知道一个文件的单词数量、字节数,可以使用wc命令

wc 选项 文件名
选项功能说明
-c显示字节数
-m显示字符数
-l显示行数
-w显示单词个数

(8)uniq——去重

  uniq命令用来删除文件中的重复行

uniq 选项 文件名
选项功能说明
-c在每行前加相应行出现的次数
-d只输出重复的行
-u只显示唯一的行

(9)echo——将现实的内容输出到屏幕上

  echo命令很简单,如果命令的输出内容没有特殊的含义,则原内容输出到屏幕上,如果有特殊含义,则输出其含义。

echo 选项 输出内容
选项功能说明
-n内容输出后不换行
-e支持反斜线控制的字符转换

  在echo中,如果使用了-n选项,表示输出文字不换行。字符串可以加引号,也可以不加引号,echo命令输出加引号的字符串时,将原字符串输出。用echo命令输出不加引号的字符串时,字符串的各个单词作为字符串输出,各字符串之间用一个空格分隔。

  如果使用了-e选项,则可以支持控制字符,例如:

控制字符功能说明
\\输出\本身
\a输出警告音
\f换页符
\n换行符
\r回车键
\t制表符

1.3.5 文件查找类命令

(1)whereis——查找文件位置

  whereis用来查找可执行文件、源代码文件、帮助文件在文件系统中的位置。

whereis 选项 文件
选项功能说明
-b只搜索二进制文件
-m只搜索man手册
-s只搜索源代码

(2)locate——查找绝对路径中包含指定字符串的文件的位置

locate 选项 文件
选项功能说明
-b仅匹配路径名的基名
-c只输出找到的数量
-i忽略字母的大小写

1.4 Vi、Vim编辑器的使用

  可视化接口(Visual interface ,Vi)也称可视化界面,它为用户提供一个全屏幕的窗口编辑器,窗口中一次可以显示一屏的编辑内容,并且可以上下滚动,Vi是Linux系统中的标准编辑器,类似于windows里的记事本。

  Vim是vi的improved版,可以执行输出、移动、删除、查找、替换、复制、粘贴、撤销等众多文件操作。

  在命令行执行命令vim filename,如果filename已经存在,则该文件被打开,如果不存在,则vim在第一次存盘时自动在硬盘中新建filename文件。

  Vim 有三种基本工作模式:命令模式、编辑模式、末行模式。

1.4.1 命令模式

  命令模式(其他模式->Esc)是用户进入Vim的初试状态,在此模式下,用户可以输入Vim命令,使Vim完成不同的任务,如光标移动、复制、粘贴等,也可以从其他模式返回命令模式。

  Vim命令模式的光标移动命令:

操作功能说明
gg将光标移动到文章的首行
G将光标移动到文章的尾行
w或W将光标移动到下一个单词
←、→、↑、↓将光标左、右、上、下移一格
pageup、pagedown上下翻屏

  Vim命令模式的复制和粘贴命令:

操作功能说明
yy复制光标所在的整行
nyy复制n行(含当前行,后n行)
yw复制一个单词
y2w复制两个单词
yG复制到文件尾
y1G复制到文件首
p/P粘贴到光标的后面/前面

  Vim命令模式的删除操作命令:

操作功能说明
dd删除当前行
ndd删除n行(含当前行,后n行)
ndw删除后面n个词
dG删除到文件尾
d1G删除到文件首

  Vim命令模式的撤销操作:

操作功能说明
u(小写)取消上一个更改
U(大写)取消一行内的所有更改
Ctrl+r重做一个动作

1.4.2 编辑模式

  在编辑模式(命令模式下->a/A、i/I、o/O)下,可对编辑的文件添加新的内容并进行修改。

  Vim编辑模式命令:

操作功能说明
a在光标之后插入内容
A在光标当前行的末尾插入内容
i在光标之前插入内容
I在光标当前行的开始部分插入内容
o在光标所在行的下面新增一行
O在光标所在行的上面新增一行

1.4.3 末行模式

  末行模式(命令模式->:、/、?)主要用来进行一些文字编辑辅助功能,如查找、替换、文件保存等。在命令模式下输入:,即可进入末行模式,如果命令完成或出错,会退出Vim或返回命令模式。

操作功能说明
:wq保存当前文件并退出
:q结束Vim程序
:set nu显示行号,设定之后,会在每一行的前面显示该行的行号
:set nonu取消行号

  在命令模式下,输入/或?字符,即可进入末行模式,可以进行查找操作。

选项功能说明
/word向光标下寻找一个名称为word的字符串
?word向光标之上寻找一个名称为word的字符串
n表示前一个查找动作。例如:如果刚才执行了查找的操作,按下n后会继续查找下一个同样名称的字符串
N与n相反,反向进行一个查找

1.5 文件管理进阶

1.5.1 硬链接和软链接

  Linux中可以为一个文件取多个名称,称为链接文件,链接分为硬链接和软链接。链接文件命令是ln,它是Linux中的一个非常重要的命令,它的功能是在另一个位置建立一个同步的链接,即不必在每一个需要的目录下都存放一个相同的文件,而只要在某个固定的目录下存放文件,并在其他目录下用ln命令来链接他就可。

ln 选项 源文件或目录 目标文件或目录
选项功能说明
-d创建指向目录的硬链接(只适用于超级用户)
-f强制删除已存在的目标文件
-s软链接(符号链接)
-v显示详细的处理过程
yqqq@ubuntu:~$ touch test01.txt
yqqq@ubuntu:~$ ln test01.txt test02.txt

  使用ln命令建立链接时,如果不加选项则建立的是硬链接。给源文件test01建立一个硬链接test02,此时,test02可以看做是test01的别名文件,两个不分主次,都指向了硬盘中同一个文件,对test01的内容修改后,test02的内容也会修改。实质上他们两个是同一个文件的两个不同的名称。只能给文件建立硬链接,不能给目录建立硬链接。

  而软链接类似于windows中的快捷方式,删除链接的文件,源文件不会有影响,但是删掉了源文件,链接文件也不可以用了。文件和目录都可以建立软链接。

  实际上,大量带有->并以不同颜色显示的文件即为链接文件。

  硬链接的特点如下:

  • 硬链接以文件副本的形式存在,不占用实际空间
  • 不允许给目录创建硬链接
  • 硬链接只能在同一个文件系统中创建

  软链接的特点如下:

  • 软链接以路径的形式存在,类似于windows中的快捷方式
  • 软链接可以跨文件系统
  • 软链接可以对一个不存在的文件名进行链接
  • 软链接可以对目录进行链接

1.5.2 通配符

  文件名是命令中最常用的参数,用户很多时候只知道文件名的一部分,或者用户想同时对具有相同拓展名的多个文件进行操作,该怎么办呢?

  Shell提供了通配符,常用的通配符有星号*,问号?与方括号[]。

通配符功能说明
*匹配任何字符和任何数目的字符组合
匹配任何单个字符
[]匹配任何包含在括号中的单个字符。

  对于[],只要文件名中[]位置处的字符在[]中指定的范围内,就可以匹配。例如test[2-3]就可以匹配test2和test3。连字符仅在[]内有效,表示字符范围。

1.6 Linux常用快捷键

快捷键
Ctrl+C结束当前任务
Ctrl+L清屏,相当于clear
Ctrl+U剪切删除光标前的所有字符
Ctrl+Y粘贴被剪切的部分
Tab自动补齐命令行与文件名,双击Tab,可以列出所有可能匹配的选择
Alt+Tab类似于windows下的Alt+Tab,可以在不同程序窗口切换

第二章 用户组群与文件目录权限管理

2.1 用户账户

  为了实现安全控制,每次登录Linux都要选择一个用户并输入密码,每个用户拥有不同的权限。下面介绍用户账户分类、用户账户密码文件和用户账户管理等相关内容。

2.1.1 用户账户分类

  Linux操作系统中的用户账户分为3种:超级用户(root)、系统用户、普通用户。系统为每一个用户都分配了一个用户ID(UID),它是区分用户的唯一标志,Linux识别的就是用户的UID而不是用户名。

  (1)超级用户(root):也称为管理员账户,它具有一切权限。他的任务是对整个系统和普通用户进行管理,默认情况下,超级用户的UID是0。

  (2)系统用户:这是Linux正常工作所必需的内建的用户,主要是为了满足相应的系统进程对文件属主的要求而建立的。系统用户不能用来登录,如man、bin、list、sys等用户,系统用户的UID一般为1-999。

  (3)普通用户:这是为了让使用者能够使用Linux系统资源而建立的,普通用户只能访问其拥有的权限,UID一般为1000-65535。

  Linux采用纯文本文件的方式来保存账户的信息,用户可以通过修改文本文件来管理用户和组,用户基本信息保存在/etc/passwd文件中,用户密码等安全信息保存在/etc/shadow文件中。

  因此,账户的管理实际上就是对这几个文件的内容进行添加、修改、删除的操作,可以使用vim编辑器来更改他们,也可以使用专门的命令来更改他们。默认情况下,Linux系统只允许root用户来更改这几个文件。

2.1.2 用户账户密码文件

(1)用户账户管理文件——/etc/passwd

  /etc/passwd是一个账户管理文件,这个文件可以实现对用户的管理,每个用户在该文件中都对应一行,其中记录了该用户的相关信息。

  在Linux中,所创建的用户账户及相关信息(除密码外)均放在/etc/passwd这个配置文件中,可以使用cat命令来查看里面的内容。

请添加图片描述

  passwd文件中每一行代表一个用户的资料,每行由七个字段组成,字段之间用:分隔。其格式如下:

账户名称:密码:UID:GID:用户信息:主目录:命令解释器(登录shell)
字段功能说明
账户名称用户登录时所使用的用户名
密码这里的密码会显示为X,真正的密码被保存在shadow文件中
UID用户的标识,是一个数值,Linux系统内部用它来区分不同的用户
GID用户所在的主组的表示,Linux系统内部用它来区分不用的组
用户信息可以记录用户的个人信息,如用户姓名,电话等
主目录用户登录后的默认目录
命令解释器用户所使用的shell类型,默认为/bin/bash

(2)用户密码文件——/etc/shadow

  Linux系统把加密后的密码重定向到了另一个文件/etc/shadow中,只有root用户可以读取这个文件的内容,这样密码就安全多了。

请添加图片描述

  可以看到shadow文件与passwd文件内容类似。shadow文件中,每一行也是一个用户,用:分隔成了9个字段。其格式如下:

账户名称:密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志字段

  手动修改/etc/passwd文件更容易出现问题,所以建议用户在使用时,最好使用命令来修改用户名和密码。

2.1.3 用户账户管理

  用户账户管理包括建立用户账户、设置用户账户密码和用户账户维护等内容。

(1)useradd命令——建立用户账户

  在Linux中,使用useradd命令来建立用户账户,其格式如下:

useradd 选项 用户名
选项功能说明
-f设置账户过期多少天后用户账户禁用,如果为0,则用户账户过期后立刻被禁用,如果为-1,过期后不被禁用
-g用户所属组群名称或GID
-m自动建立用户的主目录
-p加密的口令
-u指定用户UID,它必须是唯一的
-s指定用户登录所使用的shell,默认时/bin/bash
-d设置用户的主目录,默认是/home/用户名

  例如:新建用户user01,UID时2000,用户主目录/home/user01,用户的shell为/bin/bash,用户的密码为admin@123,用户账户永不过期:

请添加图片描述

(2)passwd命令——设置用户账户密码

  passwd命令可以修改用户账户的密码,超级用户可以为自己和其他用户设置密码,普通用户只能为自己设置密码。其命令格式如下:

passwd 用户名            //修改自己的密码时,可以直接passwd

  需要注意的是,普通用户修改密码时,passwd会先询问原来的密码,而root用户为用户指定密码时,不需要原来的密码。

(3)usermod命令——修改用户账户

usermod 选项 账户名

  Linux操作系统的一切都是文件,用户的信息保存在/etc/passwd文件中,可以直接使用文本编辑器来修改其中的用户参数,也可以使用usermod命令来修改,如用户的UID、用户组、默认终端等。usermod命令的选项如下:

选项功能说明
-d用户的新主目录
-g变更所属用户组
G新的附加组列表,变更扩展用户组
-a将用户追加到-G提到的附加组中,并不从其他组中删除此用户
-l新的登录名称
-L锁定用户账户
-m将家目录内容移动到新位置(仅与-d一起使用)
-o允许使用重复的UID
-p设置新密码
-u用户账户的新UID
-U解锁用户账户

  特别的,如果需要临时禁用一个账户而不是删除它,可以通过passwd命令和usermod命令来实现,也可以直接修改文件。

①使用passwd命令

passwd -l user01            

  通过这种方式禁用用户user01,锁定的密码栏前面会加!!

②使用usermod命令

usermod -L user01

  使用这种方式,锁定的密码栏前会加!

③直接修改用户账户配置文件

  可以在/etc/passwd或/etc/shadow文件中关于用户user01的passwd域的第一个字符前面加一个星号,达到禁用账户的目的,需要恢复时,再删掉这个星号就好。

(4)userdel命令——删除用户账户

  要想删除一个用户账户,可以直接删除/etc/passwd和/etc/shadow文件中需要删除的用户账户对应的行,也可以使用userdel命令进行删除,命令格式如下:

userdel 选项 用户名
选项功能说明
-r删除主目录及目录下所有文件

2.2 组群管理

  Linux操作系统中包含私有组、系统组、标准组。

  (1)私有组:建立用户账户时,如果没有指定其所属的组,则系统会建立一个组名和用户名相同的组,这个组就是私有组,他只容纳一个用户。

  (2)系统组:这是Linux操作系统正常运行时所必须的组,安装Linux操作系统或添加新的软件包时会自动建立系统。

  (3)标准组:可以容纳多个用户,组内的用户都具有组所拥有的权限。

  一个用户可以属于多个组,用户所属的组又有基本组和附加组之分。用户所属组的第一个组称为基本组,基本组在/etc/passwd文件中指定,其他组为附加组,附加组在/etc/group文件中指定。

  与用户一样,用户分组也是由一个唯一的身份来标识的,该标识称为用户组ID,即GID。在Linux中,关于组群账户的信息放在/etc/group文件中,而关于组群管理的信息,如组群口、组群管理员等,则存放在/etc/shadow文件中。

2.2.1 理解组群文件

(1)/etc/group文件

  /etc/group文件用于存放用户的组账户信息,任何用户都可以读取该文件的内容,每个组群在group里占一行,用:分为四个字段,其格式如下:

组群名称:组群密码(用X占位):GID:组群成员

请添加图片描述

  可以发现,root组的GID是0。group文件中显示的用户的组只有用户的附加组,用户的主组在/etc/passwd文件中。

(2)/etc/gshadow文件中

  这个文件用来存放组群的加密口令、组管理员等信息,该文件只有root用户可以读取。每个组群账户在gshadow中占一行,并用:分为四个字段,格式如下:

组群名称:加密后的组群密码:组群管理员:组群成员
字段功能说明
组群名称组群的名称
加密后的组群密码通常不需要设定
组群的管理员默认为空
组群成员组群所包含的用户,用逗号分隔,如果没有成员,则默认为空

请添加图片描述

2.2.2 组群维护与管理

(1)groupadd命令——创建组群

  groupadd命令用来在Linux中创建用户组,只要为不同的用户组赋予不同的权限,再将不同的用户加入不同的组,用户就可以获得所在组群所有的权限。

groupadd 选项 组群名
选项功能说明
-g为新组使用GID
-p为新组使用加密过的密码
-r创建一个系统账户

(2)groupdel命令——删除组群

  groupdel用来删除组群,如果组群中仍包含用户,则需要先试用userdel删除这些用户,才可以groupdel删除组群。

group 选项 组群名

(3)groupmod命令——更改组群识别码或名称

  groupmod命令用来更改组群识别码和名称

groupmod 选项 组群名
选项功能说明
-g更改GID
-n改组名
-p更改密码

(4)gpasswd——管理组群

  gpasswd命令用来在Linux中管理组群,可以将用户加入组群,也可以删除组群中的用户、指定管理员、设置组群成员列表、删除密码等。

gpasswd 选项 组群名
选项功能说明
-a向组中添加用户
-d从组中删除用户
-r删除密码
-R向其成员限制访问组
-M设置新的成员列表
-A设置新的管理员列表

请添加图片描述

(5)chown命令——修改文件的拥有者和组群

  chown命令可以将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID。

  系统管理员经常使用chown命令,在将文件复制到另一个用户的名录之下后,通过chown命令改变文件的拥有者和组群,使用户拥有使用该文件的权限。

chown 选项 user:group 文件名     //新的属主和属组用冒号连接
选项功能说明
-v显示指令的执行过程
-h只对符号链接的文件做修改,不更改其他任何文件
-R递归处理,对指定目录下的所有文件和子目录一并处理

2.3 su和sudo命令的使用

(1)su命令

  su命令可以在不注销的情况下切换到系统中的另一个用户,如果没有指定的账户,默认是root。

  su命令的优点:su为管理带来了方便,只把root用户的密码交给普通用户,普通用户就可以通过su切换到root,完成相应工作。

  su命令的缺点:root用户把密码给普通用户,存在安全隐患。因此su命令在多人参与的系统管理中不是最好的选择,为了解决该问题,可以使用sudo命令来实现。

(2)sudo命令

  sudo命令可以让用户以其他的身份来执行指定的命令,默认的身份时root,在**/etc/sudoers**中设置了可以执行sudo命令的用户,如果没有授权的用户企图使用sudo命令,则会发送警告给管理员。

  用户使用sudo命令时,必须先输入密码(当前用户的密码,而不是root的密码),之后有5min的使用期限。sudo可以提供日志,记录每个用户使用sudo时做了那些操作。

  通过sudo可以把某些超级权限有针对的下放,亲切不需要普通用户知道root用户的密码,所以sudo相对于权限无限制的su来说是比较安全的。

2.4 文件和目录权限管理

2.4.1 理解文件和目录权限

  文件是操作系统用来存储信息的基本结构,Linux操作系统最大的不同时没有扩展名的概念,也就是说,文件的名称和该文件的类型没有直接的关系。例如,file01.txt可能是一个exe文件。

  另外,Linux操作系统文件名区分大小写,如果文件名以.符号开始,则表示该文件为隐藏文件,需要ls -a 命令才可以显示出来。

  根据赋予权限的不同,不同的用户能够访问不同的文件或目录,所有者是创建文件的用户,文件的所有者能够赋予其他用户的文件访问限制。每一个用户针对系统中的所有文件都有其自身的读、写、执行权限。

请添加图片描述

  以上是文件的详细信息,分为了七组,分别是:

  文件/目录权限:-rw-r–r–

  连接数:1

  文件/目录拥有者:root

  文件/目录所属组群:root

  文件/目录容量:22

  文件/目录最后被修改的时间:4月 20 20:13

  文件/目录名称:file01.txt

2.4.2 详解文件和目录的属性信息

(1)第一组表示文件/目录类型权限

  第一组一共10个字符,第一个字符用来区分文件的类型:

取值具体含义
-表示该文件是一个普通文件
b表示该文件是区块设备,是特殊类型的文件
c表示该文件为其他的外围设备,是特殊类型的文件
d表示是一个目录
I表示文件是一个符号链接文件,实际上指向另一个文件
s、p这些文件关系到系统的数据结构和管道,通常很少见到

  第2到10个字符表示文件的访问权限,这9个字符每3个为一组,左边3个字符表示所有者权限,中间3个字符表示与所有者同一组的用户的权限,右边3个字符是其他用户的权限

  这9个字符根据权限种类的不同分为3类:

  ①r(read,读取)

  ②w(write,写入)

  ③x(execute,执行)

  ④-:表示不具有该项权限

  例如:-rw-rw-rw-:该文件是一个普通文件,文件所有者、同组用户、其他用户都只有读写权限,而没有执行权限。

(2)第二组表示连接数

  每个文件都会将其权限与属性记录到文件系统的i-node中,这个属性记录的就是有多少个不同的文件名连接到同一个i-node。

  (3)第三组表示文件/目录拥有者

  (4)第四组表示文件/目录所属组群

  (5)第五组表示文件/目录容量,以字节为单位

  (6)第六组表示文件/目录最后被修改时间

  (7)第七组表示文件/目录名称

2.4.3 文字表示法修改文件和目录的权限

1、文字表示法

  使用权限的文字表示法时,系统以4中字母表示不同的用户。

  (1)u:user,表示所有者

  (2)g:group,表示属组

  (3)o:other,表示其他用户

  (4)a:all,表示以上3中用户

  使用以下3种字符的组合表示法设置操作权限:

  (1)r:read,表示可读取

  (2)w:write,表示可写入

  (3)x:execute,表示可执行

  操作符号包括以下几种:

  (1)+:表示添加某种权限

  (2)-:表示减去某种权限

  (3)=:表示赋予给定的权限,并且取消原来的权限

  使用chmod命令来修改权限:

chmod 选项 文件

请添加图片描述

2、文件系统高级权限

(1)SET位权限

  SET位权限也称特殊权限,一般文件权限是rwx,在某些特殊场合可能无法满足要求,为了方便普通用户执行一些特殊命令,可以设置SUID、SGID权限,允许普通用户以root用户的身份暂时执行某些程序,并在执行结束后回复身份。因此,Linux操作系统提供了一些额外的权限,只要设置了这些权限,就可以具有一些额外的功能。

  使用chmod u+s命令就是为某个程序的所有者授予SUID、SGID权限,使其可以像root用户一样进行操作。

chmod u+s 可执行文件

(2)粘滞位权限

  在通常情况下,用户只要对某个目录具有写入权限,就可以删除该目录下的任何文件,而不论这些文件的权限是什么,这是不安全的。粘滞位权限就是为了针对这种情况,当目录被设置了粘滞位权限,即使用户对该目录具有写入权限,也不能删除该目录下其他用户的数据,而只有该文件的属主和root用户才有权限将其删除。

chmod o+t 可执行文件

2.4.4 文件访问控制列表ACL

  Linux操作系统的传统权限设置方法比较简单,仅有属主权限、属组权限、其他人权限3种身份和读取、写入、执行3种权限,传统权限设置有一定局限性,如某个目录要开放给某个特定的用户使用,则传统权限设置无法满足要求。如果希望对某个指定的用户进行单独的权限控制,则需要用到文件的访问控制列表(ACL)。

  基于普通文件或目录设置ACL其实就是针对特定的用户或组设置文件或目录的权限。另外,如果针对某个目录设置了ACL,则目录中的其他文件会继承其ACL。

(1)setfacl——设置ACL权限

  setfacl命令用于管理文件的ACL权限,其格式如下:

setfacl 选项 文件名

  针对特殊用户设置命令的格式:

setfacl 选项 u:用户名:权限(rwx) 文件名
选项功能说明
-m更改文件的ACL
-b删除所有的扩展ACL条目
-x移除ACL条目
-k移除默认ACL
-R递归操作子目录
-L依照系统逻辑,跟随符号链接
-P依照自然逻辑,不跟随符号链接

  文件的ACL提供的是在所有者、所属组、其他人的读取、写入、执行权限之外的特殊权限控制,使用setfacl命令可以针对单一用户或组、单一文件或目录进行读取、写入、执行权限的控制。其中,针对目录文件需要使用-R递归参数,针对普通文件可以使用-m参数,如果想要删除某个文件的ACL,则可以使用-b参数。

请添加图片描述

  当看到文件权限最后一个变成了+,也就意味着文件设置了ACL。

(2)getfacl——显示ACL权限

  getfacl命令用来显示ACL权限:

getfacl 选项 文件名
选项功能说明
-a仅显示文件ACL
-d仅显示默认的ACL
-e显示所有的有效权限
-R显示递归子目录
-c不显示注释表头

请添加图片描述

第三章 网络配置管理

3.1 网络常用管理命令

  Linux主机想与网络中的其他主机进行通信,必须进行正确的网络配置,网络配置通常包括主机名、IP地址、子网掩码、默认网关、DNS服务器等的配置。

(1)ifconfig命令——管理网络接口

  ifconfig命令是一个可以用来查看、配置、启用或禁用网络接口的命令。ifconfig命令可以临时性地配置网卡的IP地址、子网掩码、网关等,使用ifconfig命令配置的网络相关信息,在主机重启后就不再存在。如果想要永久有效,则需要去修改网络配置文件。

ifconfig 网络设备 选项
选项功能说明
up启动指定的网络设备
down关闭指定的网络设备
-arp检查指定网卡是否支持ARP
-a显示全部接口信息
-s显示摘要信息
add给指定网卡配置IPv6地址
del删除给指定网络配置的IPv6地址
netmask<子网掩码>设置网卡的子网掩码
tunnel<地址>建立IPv4和IPv6之间的隧道通信地址

  设置IPv4地址、子网掩码、广播地址,启动与关闭ARP功能:

请添加图片描述

(2)hostnamectl命令——设置并查看主机名

  使用hostnamectl命令可以设置并查看主机名:

hostnamectl 选项 主机名
选项功能说明
status显示当前主机名状态
set-hostname设置当前主机名状态
set-icon-name设置系统主机名

请添加图片描述

(3)route命令——管理路由

  route命令用来显示并设置Linux内核中的网络路由表,route命令设置的主要是静态路由,要实现两个不同子网的通信,需要一台连接两个网络的路由器或者同时位于两个网络的网关。

  需要注意的是,直接在命令模式下使用route命令添加的路由信息不会永久保存,主机重启之后该路由就失效了。

route 选项
选项功能说明
add添加一条路由
del删除一条路由
target指定目标网络或主机,可以是点分十进制的IP地址或主机/网络名
netmask为添加的路由指定网络掩码
gw为发往目标网络/主机的任何分组指定网关
-net路由目标为网络
-host路由目标为主机

请添加图片描述

(4)ping命令——检测网络连通性

  ping命令是Linux操作系统中使用非常频繁的命令,用来测试主机之间网络的连通性。ping命令使用的是ICMP,它发送ICMP回送请求消息给目标主机,ICMP规定,目标主机必须返回ICMP回送应答消息给源主机,如果源主机在一定时间内收到应答,则认为主机可达,否则不可达。

ping 选项 目标网络
选项功能说明
-c 次数设置要求回应的次数
-i 时间间隔秒数指定收发信息的时间间隔
-n只输出数值
-R记录路由过程
-s 数据包大小设置数据包的大小
-t 设置存活数值设置存活数值的大小

  在Linux中使用不带选项的ping命令后,系统会一直不断的发送检测包,直到按下ctrl+c终止:

请添加图片描述

(5)netstat命令——查看网络信息

  netstat命令是一个综合的网络状态查看命令,可以从显示的Linux操作系统的网络状态信息中得知整个Linux操作系统的网络情况,包括网络连接、路由表、接口状态、网络链路和组播成员等。

netstat 选项
选项功能说明
-a显示所有连接中的端口socket
-c持续列出网络状态
-i显示网络界面信息表单
-n直接使用IP地址,而不通过DNS
-r显示路由表
-t查看TCP连接情况
-u查看UDP连接情况

请添加图片描述

(6)nslookup——DNS解析

  nslookup命令是常用域名查询命令,用于查询DNS信息,其有两种工作模式,即交互模式和非交互模式。在交互模式下,用户可以向DNS服务器查询各类主机、域名信息,或者输出域名中的主机列表。在非交互模式下,用户可以针对一个主机或域名获取特定的名称或所需信息。

nslookup             //交互模式
nslookup 域名        //非交互模式

请添加图片描述

(7)traceroute命令——跟踪路由

  traceroute命令用于追踪网络数据包的路由途径,通过traceroute命令可以知道源计算机到达互联网另一端的主机的路径。

traceroute 选项 目标主机或IP地址
选项功能说明
-f 存活数值设置第一个检测数据包存活数值大小
-m 存活数值设置检测数据包的最大存活数值的大小
-n直接使用IP地址而非主机名称
-q发送数据包检测次数
-i 网络界面使用指定的网络界面发送数据包
-g 网关设置来源路由网关,最多8个
-d使用Socket层级的排错功能

请添加图片描述

  可以看到,第一行有4个时间,这就是探测数据包向网关发出了4个数据包。如果是*,可能是因为防火墙拦截了ICMP的返回信息。

3.2 系统监控

  系统监控是系统管理员的主要工作之一,Linux系统提供了各种日志及性能监控工具帮助用户完成系统监控工作。

3.2.1 磁盘监控

  iostat命令用于查看CPU利用率和磁盘性能等相关信息。在系统性能出现问题时,磁盘性能是一个值得分析的重要指标。

iostat 选项
选项功能说明
-d只显示磁盘利用率
-p可以报告每个磁盘的每个分区的使用情况
-k以字节为单位显示磁盘利用率
-x显示扩张统计

请添加图片描述

请添加图片描述

  iostat命令各字段输出选项及其功能:

输出选项功能说明
tps每秒I/O数,即磁盘连续写和连续读之和
KB_read/s每秒从磁盘读取的数据大小,单位KB/s
KB_wrtn/s每秒写入磁盘的数据大小,单位KB/s
KB_read从磁盘读出来的数据总和,单位KB
KB_wrtn写入磁盘的数据总和,单位KB

3.2.2 内存监控

  vmstat命令可以实时动态的监控操作系统的虚拟内存、进程、磁盘、CPU活动。

vmstat 选项
选项功能说明
-a显示活跃和非活跃内存

请添加图片描述

  使用vmstat命令,每3s显示一次系统内存统计信息,总共显示5次:

请添加图片描述

  vmstat命令各字段输出选项及其功能说明:

字段输出选项(进程)功能说明
r运行队列中的进程数量
b等待I/O的进程数量
字段输出选项(内存)功能说明
swpd使用虚拟内存大小
free可用内存大小
buff用作缓存的内存大小
cache用作高速缓存的内存大小
字段输出选项(交换分区)功能说明
si每秒从交换分区写入内存的大小
so每秒写入交换分区的内存大小
字段输出选项(I/O)功能说明
bi每秒读取的块数
bo每秒写入的块数
字段输出选项(系统)功能说明
in每秒中断数,包括时钟中断
cs每秒上下文切换数
字段输出选项(CPU)功能说明
us用户进程执行时间
sy系统进程执行时间
id空闲时间
waI/O等待时间
st显示虚拟机监控程序为另一个虚拟处理器提供服务时虚拟CPU非自愿等待的时间比例

3.2.3 CPU监控

  在Linux系统中监控CPU的性能时主要关注3个指标:运行队列、CPU使用率、上下文切换。

(1)运行队列

  每个CPU都维护着一个线程的运行队列,线程未处于睡眠状态(阻塞或等待I/O)时就表示处于可运行的状态。如果CPU子系统处于高负荷下,则意味着内核调试将无法及时响应系统请求,导致的结果就是可运行状态进程阻塞在运行队列中,当运行队列越来越大时,线程就花费更多的时间来获取被执行的机会。

(2)CPU使用率

  CPU使用率即CPU使用的百分比,多数系统性能监控工具关于CPU使用率的分类大概有以下几种:

  ①user time(用户进程的时间):用户空间中被执行进程占CPU开销时间的百分比

  ②system time(内核线程及中断时间):内核空间中线程和中断占CPU开销时间的百分比

  ③wait I/O time(I/O请求等待时间):所有进程被阻塞时,等待完成一次I/O请求所占CPU开销时间的百分比

  ④idle time(空闲时间):一个完整空闲状态的进程占CPU开销时间的百分比

(3)上下文切换

  一个标准的Linux操作系统内核可以运行50-50000个处理线程,在只有一个CPU时,内核将调试并均衡每个进程和线程,一个进程要么获得时间额度,要么抢先获得较高优先级(如硬件中断),其中较高优先级的线程将重新回到处理器队列中,这种线程的转换关系就是上下文切换。

  mpstat命令用于查看具有多个CPU的计算机的性能情况,而vmstat命令只能显示CPU的总性能情况。

  mpstat命令可以实时进行系统监控,报告CPU相关的一些统计信息。

mpstat 选项
选项功能说明
-P[ALL]表示监控哪个CPU
interval相邻两次采样的时间间隔
count采样的次数

请添加图片描述

输出选项功能说明
%user表示处理用户进程所使用的CPU的百分比。用户进程是用于应用程序的非内核进程
%nice表示使用nice命令对进程进行降级时所使用的CPU的百分比
%sys表示内核进程使用的CPU百分比
%iowait表示等待进行I/O所使用的CPU百分比
%irq表示用于处理系统中断的CPU百分比
%soft表示用于软件中断的CPU百分比
%steal显示虚拟机管理器在服务另一个虚拟处理器时,虚拟CPU处于非自愿等待状态下花费时间的百分比
%guest显示运行虚拟处理器时CPU花费时间的百分比
%idle显示CPU的空闲时间

3.2.4 性能分析监控

  top命令是Linux操作系统中常用的性能分析命令,能够实时显示系统中各个进程的资源使用状况,类似于windows的任务管理器。top命令显示的是一个动态过程,可以通过用户按键不断刷新。

top 选项
选项功能说明
-c显示完整的命令行
-d屏幕刷新间隔时间
-i 时间设置时间间隔
-u 用户名指定用户名
-p 进程号指定进程
-n 次数循环显示的次数

请添加图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值