RHCSA知识点汇总

打印 上一主题 下一主题

主题 978|帖子 978|积分 2934

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第0章:Linux基础入门

0.1 什么是计算机

计算机的组成:
控制器:是整个计算机的中枢神经,根据程序要求举行控制,协调计算机各部门工作及内存与外设的访问等。
输入装备:将笔墨、数据、程序和控制命令等信息输入到计算机。
存储器:存储程序、数据、命令等信息。
运算器:对数据举行各种算术运算和逻辑运算。
输出装备:将计算机计算后的信息输出出来。

计算机的功能:接收输入装备的指令和数据,颠末cpu的数据和逻辑运算处置惩罚产生有效的信息存储起来或者输出到屏幕上。
0.2 利用系统简介

利用系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是设置在计算机硬件上的第一层软件,任何其它软件都必须在利用系统的支持下才能运行。利用系统的重要工作是由利用系统内核实现的,利用系统的内核功能:
系统调用接口:程序员通过该接口与内核举行通讯。
程序管理:一部计算机大概同时间有很多的工作在等待CPU运算处置惩罚,内核这个时候必须要能够控制这些工作,让CPU的资源做有效的分配才行。
内存管理:控制整个系统的内存管理,系统所有的程序代码与数据都必须要先存放在内核当中。通常内核会提供虚拟内存的功能,当内存不足时可以提供内存交换的功能。
文件系统管理 :例如数据的输入和输出等的工作,还有差别文件格式的支持等。
装备驱动:硬件的管理是内核的重要工作之一,装备的驱动程序就是内核管理着硬件的代码,装备的驱动程序可以使硬件准备好工作,时候等待着程序的调用。好在目前都有所谓的“可加载模块”功能,可以将驱动程序编辑成模块,就不需要重新编译内核。

第一章:简单使用Linux

1.1 Linux的组成


Shell:Shell是系统的用户界面,提供了用户与内核举行交互利用的一种接口。
应用程序:包罗文本编辑器、编程语言、X Window、办公套件、Internet工具、数据库等。
Linux的利用界面常称为Shell,Shell是利用系统提供给用户使用的界面(图形、字符),它提供了用户与内核举行交互利用的一种接口。当用户发出指令(命令或鼠标利用),先将这些指令发送给Shell,由Shell将用户的指令翻译后传送给内核,再由内核来控制硬件的工作。然后内核将硬件的工作情况发送给Shell,并由Shell返回硬件的工作信息和情况。
1.2 使用终端访问Linux

(1)查看当前Linux的发行版信息
  1. [root@server ~]# cat /etc/redhat-release
  2. Red Hat Enterprise Linux release 9.3 (Plow)
复制代码
(2)查看内核版本
  1. [root@server ~]# uname -r
  2. 5.14.0-362.8.1.el9_3.x86_64
复制代码
(3)查看shell的范例
  1. #方法一:
  2. [root@server ~]# cat /etc/shells
  3. /bin/sh
  4. /bin/bash
  5. /usr/bin/sh
  6. /usr/bin/bash
  7. #方法二:
  8. [root@server ~]# chsh -l
  9. /bin/sh
  10. /bin/bash
  11. /usr/bin/sh
  12. /usr/bin/bash
复制代码
(4)查看当前默认的shell
  1. [root@server ~]# echo $SHELL
  2. /bin/bash
复制代码
(5)shell提示符
对于普通用户,Bash shell 默认的提示符是:$
对于超级用户(rooot),Bash shell 默认的提示符是:#
(6)使用命令重启和关闭Linux利用系统:
重启:reboot、shutdown -r now
关机:poweroff、shutdown -h now
1.3 Linux基础命令使用

(1)切换用户:su
  1. #切换到root用户,若切换其他普通用户则在后面加上用户名
  2. [obboda@server ~]$ su -
  3. #退出当前用户(或者使用快捷键ctrl + d)
  4. [root@server ~]# exit
  5. #查看当前登录用户
  6. [obboda@server ~]$ whoami
  7. obboda
复制代码
(2)修改主机名
  1. #临时修改,重启linux系统之后失效
  2. [root@localhost ~]# hostname server   
  3. #永久生效,修改的是文件内容。重启linux系统后依旧生效
  4. [root@localhost ~]# hostnamectl   set-hostname   server   
  5. #查看主机名配置文件
  6. [root@localhost ~]# cat  /etc/hostname
  7. server
复制代码
(3)查看当前工作目录:pwd
  1. [obboda@server ~]$ pwd
  2. /home/obboda
  3. [obboda@server ~]$ su -
  4. [root@server ~]# pwd
  5. /root
复制代码
(4)切换目录:cd
cd / :切换到根目录下
cd - :回到切换前的目录
cd ~ :切换到当前目录的家目录下(若cd不加参数默认为~)
cd .. :切换到上一级目录(. 表现当前目录)
(5)修改密码:passwd
  1. #只有root用户能够指定修改其他用户密码,普通用户修改自己密码只需输入passwd
  2. [root@server ~]# passwd test11
  3. 更改用户 test11 的密码 。
  4. 新的密码:
  5. 重新输入新的密码:
  6. passwd:所有的身份验证令牌已经成功更新。
  7. #删除test11的密码
  8. [root@server ~]# passwd -d test11
  9. 清除用户的密码 test11。
  10. passwd: 操作成功
复制代码
第二章:Linux中执行命令

2.1 命令格式

命令格式: 主命令 选项 参数(利用对象)
命令:


  • 内置命令(builtin):由shell程序自带的命令
  • 外部命令:有独立的可执行程序文件,文件名即命令名
选项:指定命令的运行特性,指明要运行命令中的哪一个功能代码。


  • 短选项:例如:-l,-d,假如同一命令同时使用多个短选项,多数可归并
  • 长选项:例如--help,--human-readable
参数:命令的作用对象,即命令对什么见效。
终止命令: 按 Ctrl+c 键可中断正在执行的命令。
补全命令:输入命令关键字的前几个字符后,按 Tab 键,可实现命令自动补全。
2.2 查看命令帮助

(1)help 和 --help
  1. #两种命令输出结果一样
  2. [root@server ~]# help cd
  3. [root@server ~]# cd --help
  4. cd: cd [-L|[-P [-e]] [-@]] [目录]
  5.     改变 shell 工作目录。
  6.    
  7.     改变当前目录至 DIR 目录。默认的 DIR 目录是 shell 变量 HOME
  8.     的值。
  9.    
  10.     变量 CDPATH 定义了含有 DIR 的目录的搜索路径,其中不同的目录名称由冒号 (:)分隔。
  11.     一个空的目录名称表示当前目录。如果要切换到的 DIR 由斜杠 (/) 开头,则 CDPATH
  12.     不会用上变量。
  13.    
  14.     如果路径找不到,并且 shell 选项 `cdable_vars' 被设定,则参数词被假定为一个
  15.     变量名。如果该变量有值,则它的值被当作 DIR 目录。
  16.    
  17.     选项:
  18.         -L      强制跟随符号链接: 在处理 `..' 之后解析 DIR 中的符号链接。
  19.         -P      使用物理目录结构而不跟随符号链接: 在处理 `..' 之前解析 DIR 中的符号链接。
  20.         -e      如果使用了 -P 参数,但不能成功确定当前工作目录时,返回非零的返回值。
  21.         -@      在支持拓展属性的系统上,将一个有这些属性的文件当作有文件属性的目录。
  22.    
  23.     默认情况下跟随符号链接,如同指定 `-L'。
  24.     `..' 使用移除向前相邻目录名成员直到 DIR 开始或一个斜杠的方式处理。
  25.    
  26.     退出状态:
  27.     如果目录改变,或在使用 -P 选项时 $PWD 修改成功时返回 0,否则非零。
复制代码
(2)man
man用来提供在线帮助,使用权限是所有效户。使用man命令可以调阅此中的帮助信息,非常方便实用。
  1. [root@server ~]# man ls
复制代码

(3)info
info与man的用途其实差不多,都是用来查询命令的用法或者是文件的格式。但是与man page差别的是,info page则是将文件数据拆成一个一个的段落,每个段落用自己的页面来撰写, 而且在各个页面中还有类似网页的『超链接』来跳到各差别的页面中,每个独立的页面也被称为一个节点(node)。
2.3 date命令

date命令中的参数以及作用:

按照默认格式查看当前系统时间:
  1. [root@server ~]# date
  2. 2024年 11月 05日 星期二 17:15:59 CST
复制代码
参数%j可用来查看今天是当年中的第几天:
  1. [root@server ~]# date "+%j"
  2. 310
复制代码
按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间:
  1. [root@server ~]# date "+%Y-%m-%d %H:%M:%S"
  2. 2024-11-05 17:19:34
复制代码
将系统的当前时间设置为2022年9月1日8点30分:
  1. [root@server ~]# date -s "20220901 8:30:00"
  2. 2022年 09月 01日 星期四 08:30:00 CST
复制代码
2.4 timedatectl命令

timedatectl命令用于设置系统的时间,英文全称为:“time date control”

查看系统时间与时区:
  1. [root@server ~]# timedatectl status
  2.                Local time: 四 2022-09-01 08:02:51 CST
  3.            Universal time: 四 2022-09-01 00:02:51 UTC
  4.                  RTC time: 二 2024-11-05 09:24:11
  5.                 Time zone: Asia/Shanghai (CST, +0800)
  6. System clock synchronized: no
  7.               NTP service: active
  8.           RTC in local TZ: no
复制代码
若时区不正确,可以举行手动设置(日期、时间同理):
  1. [root@server ~]# timedatectl set-timezone Asia/Shanghai
复制代码
2.5 查看目录下的文件:ls


  1. [root@server ~]# ls -lh /root/
  2. 总用量 184K
  3. drwxr-xr-x. 2 root root    6  1月 15  2024 公共
  4. drwxr-xr-x. 2 root root    6  1月 15  2024 模板
  5. drwxr-xr-x. 2 root root    6  1月 15  2024 视频
  6. drwxr-xr-x. 2 root root   53  1月 15  2024 图片
  7. drwxr-xr-x. 2 root root    6  1月 15  2024 文档
  8. drwxr-xr-x. 2 root root    6  1月 15  2024 下载
  9. drwxr-xr-x. 2 root root    6  1月 15  2024 音乐
  10. drwxr-xr-x. 2 root root    6  1月 15  2024 桌面
  11. -rw-------. 1 root root  813  1月  8  2024 anaconda-ks.cfg
  12. -rw-r--r--. 1 root root  345 11月  1 18:26 haha.txt
  13. -r-xr-xr-x. 1 root root 173K  1月 15  2024 vsftpd-3.0.5-5.el9.x86_64.rpm
复制代码
第三章:Linux文件范例和根目录结构

3.1 Linux文件范例


3.2 Linux系统的目录结构



第四章:从命令行管理文件

4.1 创建链接文件

符号链接又叫软链接,和原文件不是一个文件 例如Windows的快捷方式,假如原始文件被删除,所有指向它的符号链接也就都被粉碎了。软链接有自己的node,是linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径。符号链接可以超过文件系统,也可以为目录创建。
创建软链接文件:ln  -s  源文件  目标文件
  1. [root@server ~]# ln -s /etc/hostname /root/hostname
  2. [root@server ~]# ll -i /etc/hostname /root/hostname
  3. 67575434 -rw-r--r--. 1 root root  7 10月 24 20:11 /etc/hostname
  4. 35247713 lrwxrwxrwx. 1 root root 13 11月  5 17:54 /root/hostname -> /etc/hostname
复制代码
硬链接只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为inode)。当移动或者删除原始文件时,硬链接不会被粉碎,因为它所引用的是文件的物理数据而不是文件在件结构中的位置。
创建软链接文件:ln  源文件  目标文件
  1. [root@server ~]# ln /etc/hostname /root/hostname
  2. [root@server ~]# ll -i /etc/hostname /root/hostname
  3. 67575434 -rw-r--r--. 2 root root 7 10月 24 20:11 /etc/hostname
  4. 67575434 -rw-r--r--. 2 root root 7 10月 24 20:11 /root/hostname
复制代码
4.2 目录利用命令

(1)创建目录
命令格式:mkdir  [-pv]  [路径]目录名
-p :可快速创建出目录结构中指定的每个目录,对于已存在的目录不会被覆盖
-v :显示创建目录的详细过程
  1. [root@server ~]# mkdir -pv /root/1/2/3
  2. mkdir: 已创建目录 '/root/1'
  3. mkdir: 已创建目录 '/root/1/2'
  4. mkdir: 已创建目录 '/root/1/2/3'
复制代码
(2)统计目录及文件的空间占用情况
命令格式:du [选项] [目录名]

(3)删除目录文件
命令格式:rm  [-rf]  目录/文件名
-r :递归删除目录下的所有子目录和文件
-f :逼迫删除不会询问
4.3 创建、删除普通文件

(1)创建普通文件
命令格式:touch  [选项]  文件名
touch的两种用法:

  • 假如文件不存在,则表现创建文件。
  • 假如文件已存在,更新文件的三个时间。 stat 可以查看文件的详细信息。
  1. [root@server ~]# stat /etc/hostname
  2.   文件:/etc/hostname
  3.   大小:7               块:8          IO 块:4096   普通文件
  4. 设备:fd00h/64768d      Inode:67575434    硬链接:2
  5. 权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
  6. 环境:system_u:object_r:hostname_etc_t:s0
  7. 最近访问:2024-11-05 15:57:08.146390808 +0800
  8. 最近更改:2024-10-24 20:11:42.864992358 +0800
  9. 最近改动:2024-11-05 17:56:06.190608537 +0800
  10. 创建时间:2024-10-24 20:11:42.864992358 +0800
  11. [root@server ~]# touch /etc/hostname
  12. [root@server ~]# stat /etc/hostname
  13.   文件:/etc/hostname
  14.   大小:7               块:8          IO 块:4096   普通文件
  15. 设备:fd00h/64768d      Inode:67575434    硬链接:2
  16. 权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
  17. 环境:system_u:object_r:hostname_etc_t:s0
  18. 最近访问:2024-11-05 18:15:50.469058365 +0800
  19. 最近更改:2024-11-05 18:15:50.469058365 +0800
  20. 最近改动:2024-11-05 18:15:50.469058365 +0800
  21. 创建时间:2024-10-24 20:11:42.864992358 +0800
复制代码
注:三个时间是指atime、mtime和ctime,分别对应访问文件时间、修改内容的时间和修改文件元数据的时间。
(2)创建多个文件
方法1: touch 文件名1 文件名2 文件名3
方法2: touch {文件名1,文件名2,文件名3}
  1. [root@server xixi]# touch {1,2}{3,4}
  2. [root@server xixi]# ls
  3. 13  14  23  24
  4. [root@server xixi]# touch haha{1..10}
  5. [root@server xixi]# ls
  6. 13  14  23  24  haha1  haha10  haha2  haha3  haha4  haha5  haha6  haha7  haha8  haha9
复制代码
(3)删除普通文件
命令格式: rm [-f] 文件名
4.4 数据流和重定向

 (1)数据流


  • 标准输入(standard input,简称stdin):默认情况下,标准输入指从键盘获取的输入。
  • 标准输出(standard output,简称stdout):默认情况下,命令执行所回传正确的信息会输出到屏幕上。
  • 标准错误输出(standard error output,简称stderr):默认情况下,标准错误输出可以明白为命令执行失败后,所回传的错误信息会输出到屏幕上。
不管正确或错误的数据都是默认输出到屏幕上,所以屏幕是混乱的。所以就需要用数据流重定向将这两条数据分开。数据流重定向可以将标准输出和标准错误输出分别传送到其他的文件或装备去,而分别传送所用的特殊字符如下所示:


  • 标准输入(stdin):代码为0
  • 标准输出(stdout):代码为1
  • 标注错误输出(stderr):代码为2


(2)重定向利用符
重定向利用符可以将命令输入和输出数据流从默认装备重定向到其他位置。重定向利用符本身不是命令,而是命令中附加的可改变命令的输入和输出对象的特殊符号。


  • 输出重定向利用符:>、>>
  • 输入重定向利用符:<、<<

注:竣事标识字符串可以是任何字符串,只要它在输入的开始和竣事时保持一致即可。
(3)输出重定向案例


  • 案例1:输出重定向(覆盖)
  1. [root@server xixi]# date > date.txt
复制代码



  • 案例2:输出重定向(追加)
  1. [root@server xixi]# date >> date.txt
复制代码



  • 案例3:错误输出重定向
  1. [root@server xixi]# ls /home /aa 2>error.txt
复制代码



  • 案例4:正确和错误都输入到相同文件
  1. [root@server xixi]# ls /home /aa &>list.txt
复制代码

  1. [root@server xixi]# ls /home /aa >list.txt  2>&1
复制代码



  • 案例5:重定向到空装备/dev/null
  1. [root@server xixi]# ls /home/ /aa >list.txt 2>/dev/null
复制代码

  1. [root@server xixi]# ls /home/ /aa &>/dev/null
复制代码

(4)输入重定向案例


  • 案例1:从文件读取数据作为cat命令的输入
  1. [root@server xixi]# echo test > file
  2. [root@server xixi]# cat < file
  3. test
复制代码


  • 案例2:标准输入重定向<<并不表现追加,而是表现输入竣事的意思,即作为一个竣事符
  1. [root@server xixi]# cat > file3 << end
  2. > hello
  3. > end
  4. [root@server xixi]# cat file3
  5. hello
复制代码
4.6 tee命令读取数据输出到文件

管道符 | :用于两个命令或者多个命令相连接,将管道符左边命令的输出作为管道符右边命令的输入。
tee:读取标准输入的数据,并将其内容输出到文件的同时输出到屏幕(即想把输出保存到文件中,又想在屏幕上看到内容)

命令格式:tee  [-ai]  [文件]
-a :即--append,附加到现有文件背面,而非覆盖
-i :即--ignore-interrupts,忽略中断信号
示例:
  1. [root@server xixi]# date | tee time.txt
  2. 2024年 11月 05日 星期二 19:34:23 CST
  3. [root@server xixi]# cat time.txt
  4. 2024年 11月 05日 星期二 19:34:23 CST
复制代码
4.7 vim编辑器

在Linux系统中一切都是文件,而设置一个服务就是在修改其设置文件的参数。Vim编辑器中设置了三种模式:命令模式、末行模式和编辑模式,每种模式分别又支持多种差别的命令快捷键。
进入vim编辑器:vim  文件
注:存在该文件则直接举行编辑,若不存在该文件则创建该文件后举行编辑。每次运行vim编辑器时,默认处于命令模式。
4.7.1 命令模式下的常用按键

(1)光标跳转按键

(2)复制、粘贴、删除(剪切)

4.7.2 编辑模式

可通过如下恣意一种功能键从命令模式切换到编辑模式。按esc键可从编辑模式切换到命令模式。

4.7.3 末行模式

按:或 / 可从命令模式切换到末行模式。按esc键可从编辑模式切换到命令模式。
(1)查找关键字并替换

(2)保存退出

(3)其他利用

4.7.4 vim的拓展用法

(1)可视化模式
在命令模式下按Ctrl+v进入可视化模式。该模式下通过光标移动选择文本,选取后按 y 可以把文本提取到缓冲区(即复制),c 可以剪切。之后可以使用p在光标后粘贴,P粘贴在光标前。
(2)替换模式
在命令模式下按r,再输入要替换的新字符,只替换光标地点位置的字符。
在命令模式下按R,将从光标地点位置连续替换后续字符,按ESC退出。
第五章:文件内容显示

5.1 浏览普通文件内容


5.2 过滤文件内容显示:grep

(1)基础使用
在指定的普通文件中查找并显示含有指定字符串的行,也可与管道符一起使用,语法为:grep  [选项]  关键字符串  文件名

(2)使用特殊符号举行字符串的匹配

5.3 切割显示:cut

cut命令用于按列提取文本内容,语法为: cut [选项] 文件名称
-c:仅显示行中指定范围的字符。
-d:指定字段的分隔符,默认的字段分隔符为“TAB”。
-f:显示指定字段的内容。
示例:
  1. # 查看用户信息配置文件前五行
  2. [root@server xixi]# head -n 5 /etc/passwd
  3. root:x:0:0:root:/root:/bin/bash
  4. bin:x:1:1:bin:/bin:/sbin/nologin
  5. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  6. adm:x:3:4:adm:/var/adm:/sbin/nologin
  7. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  8. # 以 : 为分割,提取每行第一段 | 输出前五行
  9. [root@server xixi]# cut -d: -f1 /etc/passwd | head -n 5
  10. root
  11. bin
  12. daemon
  13. adm
  14. lp
  15. # 提取每行第二个字符 | 输出前五行
  16. [root@server xixi]# cut -c2 /etc/passwd | head -n 5
  17. o
  18. i
  19. a
  20. d
  21. p
复制代码
5.4 排序显示sort

sort命令用于对文本内容举行排序显示,语法为: sort  [选项]  文件名称

示例:
  1. # 现有一个用户文件
  2. [root@server xixi]# cat user.txt
  3. tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon
  4. polkitd:x:998:996:User for polkitd
  5. geoclue:x:997:995:User for geoclue
  6. rtkit:x:172:172:RealtimeKit
  7. pulse:x:171:171:PulseAudio System Daemon
  8. qemu:x:107:107:qemu user
  9. usbmuxd:x:113:113:usbmuxd user
  10. unbound:x:996:991:Unbound DNS resolver
  11. rpc:x:32:32:Rpcbind Daemon
  12. gluster:x:995:990:GlusterFS daemons
  13. # 以 : 为分割,以第三个字段作为排序依据,进行数字排序
  14. [root@server xixi]# sort -n -t: -k3 user.txt
  15. rpc:x:32:32:Rpcbind Daemon
  16. tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon
  17. qemu:x:107:107:qemu user
  18. usbmuxd:x:113:113:usbmuxd user
  19. pulse:x:171:171:PulseAudio System Daemon
  20. rtkit:x:172:172:RealtimeKit
  21. gluster:x:995:990:GlusterFS daemons
  22. unbound:x:996:991:Unbound DNS resolver
  23. geoclue:x:997:995:User for geoclue
  24. polkitd:x:998:996:User for polkitd
复制代码
5.5 去重显示uniq

uniq命令用于去除文本中连续的重复行,语法为: uniq  [选项]  文件名称
-c :在每列旁边显示该行重复出现的次数。
示例:
  1. [root@server xixi]# cat uniq.txt
  2. Welcome to kongd.com
  3. Welcome to kongd.com
  4. Welcome to kongd.com
  5. Welcome to kongd.com
  6. Red Hat certified
  7. Free Linux Lessons
  8. Professional guidance
  9. Linux Course
  10. # 去重
  11. [root@server xixi]# uniq uniq.txt
  12. Welcome to kongd.com
  13. Red Hat certified
  14. Free Linux Lessons
  15. Professional guidance
  16. Linux Course
  17. # 去重,显示重复行次数
  18. [root@server xixi]# uniq -c uniq.txt
  19.       4 Welcome to kongd.com
  20.       1 Red Hat certified
  21.       1 Free Linux Lessons
  22.       1 Professional guidance
  23.       1 Linux Course
复制代码
5.6 替换文件中的字符显示:tr

tr 指令从标准输入读取数据,颠末替换或者删除后,将结果输出到标准输出。语法为:tr  [选项]  SET1  SET2
-c :代所有不属于第一字符集的字符
-d :删除所有属于第一字符集的字符
-s :把连续重复的字符以单独一个字符表现
示例:
  1. # 将文件中的小写字母全部转换为大写字母输出
  2. [root@server xixi]# cat fruit.txt | tr a-z A-Z
  3. ABANDON
  4. CAT
  5. DATE
  6. BANANA
复制代码
第六章:文件的其他利用命令

6.1 文本内容统计:wc

wc命令用于统计指定文本文件的行数、字数或字节数,语法为: wc [选项] 文件名称

示例:/etc/passwd是用于保存系统账户信息的文件,统计当前系统中有多少个用户
  1. [root@localhost ~]# wc -l /etc/passwd
  2. 45 /etc/passwd
复制代码
6.2 复制、移动文件

(1)cp:复制文件或目录
语法:cp  [选项]  源文件  目标文件

(2)mv:移动文件或目录
语法: mv  [选项]  源文件名  目标文件名
剪切利用差别于复制利用,因为它会把源文件删除掉,只保留剪切后的文件。假如在同一个目录中将某个文件剪切后还粘贴到当前目录下,其实本质就是对文件举行了重定名利用。
示例:
  1. [root@localhost xixi]# ls
  2. haha.log
  3. [root@localhost xixi]# mv haha.log xixi.log
  4. [root@localhost xixi]# ls
  5. xixi.log
复制代码
6.3 查找文件路径


(1)find详解
此中 find 命令:find命令默认接的命令是 -print ,它默认以\n将找到的文件分隔。可以使用-print0来使用\0分隔,如许就不会分行了。但是肯定要留意,-print0针对的是\n转\0,假如查找的文件名本身就含有空格,则find后-print0仍然会显示空格。

(2)find示例
1.按照文件名搜刮
  1. # 语法:
  2. [root@localhost ~]# find 路径 [选项] 搜索内容
  3. 选项:
  4.     -name: 按照文件名搜索
  5.     -iname: 按照文件名搜索,不区分文件名大小写
  6.     -inum: 按照 inode 号搜索
复制代码
  1. # 示例1:查询/etc目录下,以host开头的文件
  2. [root@localhost xixi]# find /etc/ -name "host*"
  3. /etc/hosts
  4. /etc/avahi/hosts
  5. /etc/nvme/hostnqn
  6. /etc/nvme/hostid
  7. /etc/hostname
复制代码
  1. # 示例2:查找/etc目录下,父目录名以ssh结尾,且自身为ssh开头的文件
  2. [root@localhost xixi]# find /etc/ -path "*ssh/ssh*"
  3. /etc/ssh/ssh_config
  4. /etc/ssh/ssh_config.d
  5. /etc/ssh/ssh_config.d/50-redhat.conf
  6. /etc/ssh/sshd_config.d
  7. /etc/ssh/sshd_config.d/50-redhat.conf
  8. /etc/ssh/sshd_config.d/01-permitrootlogin.conf
  9. /etc/ssh/ssh_host_ed25519_key
  10. /etc/ssh/ssh_host_ed25519_key.pub
  11. /etc/ssh/ssh_host_ecdsa_key
  12. /etc/ssh/ssh_host_ecdsa_key.pub
  13. /etc/ssh/ssh_host_rsa_key
  14. /etc/ssh/ssh_host_rsa_key.pub
  15. /etc/ssh/sshd_config
复制代码
2.按照文件大小搜刮
  1. # 语法:
  2. [root@localhost ~]# find 搜索路径 [选项] 搜索内容
  3. 选项:
  4.     -size [+|-]大小: 按照指定大小搜索文件,这里的“+”的意思是搜索比指定大小还要大的文件, “-”的意思是搜索比指定大小还要小的文件   
  5. 注意:-size 0可以查找大小为0的普通文件。如果要查找没有任何文件的目录或者空的普通文件可以使用-empty
复制代码
  1. # 示例3:查询当前目录下,大于5M的文件
  2. [root@localhost ~]# find . -size +5M
  3. ./.cache/mozilla/firefox/cv7bcl6l.default-default/startupCache/scriptCache.bin
  4. ./.cache/mozilla/firefox/cv7bcl6l.default-default/startupCache/startupCache.8.little
复制代码
3.按照修改时间搜刮 Linux 中的文件有访问时间(atime)、数据修改时间(mtime)、状态修改时间(ctime)这三个时间,我们可以按照时间来搜刮文件。
  1. [root@localhost ~]# find 搜索路径 [选项] 搜索内容
  2. 选项:
  3.     -atime [+|-]时间: 按照文件访问时间搜索
  4.     -mtime [+|-]时间: 按照文件数据修改时间搜索
  5.     -ctime [+|-]时间: 按照文件状态修改时间搜索
  6.     -newer file: 把比file修改时间更新的文件列出来
  7.     -newerXY:如果所考虑的文件的时间戳X比文件引用的时间戳Y新,则成功。字母X和Y可以是以下任意字母。
  8.         a文件引用的访问时间
  9.         B文件引用的出生时间
  10.         c索引节点状态更改参考时间
  11.         m文件引用的修改时间
  12.         t将所指定的参数理解为一个具体的时间值
  13. 示例:搜索/test下2021-06-03到2021-06-06之间修改过的文件
  14. [root@localhost ~]# find /test -type f -newermt 2021-06-03 -a ! -newermt 2021-06-06
复制代码


  •  -5:代表 5 天内修改的文件。
  • 5:代表前 5~6 天那一天修改的文件。
  • +5:代表 6 天前修改的文件。

4.按照权限搜刮
  1. [root@localhost ~]# find 搜索路径 [选项] 搜索内容
  2. 选项:
  3.     -perm 权限模式: 查找文件权限刚好等于“权限模式”的文件
  4.     -perm -权限模式: 查找文件权限全部包含“权限模式”的文件
  5.     -perm +权限模式: 查找文件权限包含“权限模式”的任意一个权限的文件
复制代码
假如要在整个系统中搜刮权限中包罗SUID权限的所有文件,只需使用-4000即可:
  1. [root@kongd ~]# find / -perm -4000 -print
  2. /usr/bin/fusermount
  3. /usr/bin/chage
  4. ………………省略部分输出信息………………
复制代码
5.按照所有者和所属组搜刮
  1. [root@localhost ~]# find 搜索路径 [选项] 搜索内容
  2. 选项:
  3.     -uid 用户 ID: 按照用户 ID 查找所有者是指定 ID 的文件
  4.     -gid 组 ID: 按照用户组 ID 查找所属组是指定 ID 的文件
  5.     -user 用户名: 按照用户名查找所有者是指定用户的文件
  6.     -group 组名: 按照组名查找所属组是指定用户组的文件
  7.     -nouser: 查找没有所有者的文件
复制代码
6.按照文件范例搜刮
  1. [root@localhost ~]# find 搜索路径 [选项] 搜索内容
  2. 选项:
  3.     -type d: 查找目录
  4.     -type f: 查找普通文件
  5.     -type l: 查找软链接文件
复制代码
7.逻辑运算符
  1. [root@localhost ~]# find 搜索路径 [选项] 搜索内容
  2. 选项:
  3.     -a: and 逻辑与
  4.     -o: or 逻辑或
  5.     -not: not 逻辑非
  6. 优先级:与>或>非
复制代码
6.4 压缩和解压缩

(1)zip 和 unzip 命令
  1. # 素材准备:
  2. [root@localhost ~]# mkdir /test
  3. [root@localhost ~]# cd /test
  4. [root@localhost test]# for i in {1..5};do echo "test$i" > test$i.txt;done
  5. [root@localhost test]# ls
  6. test1.txt  test2.txt  test3.txt  test4.txt  test5.txt  
  7. [root@localhost test]# mkdir dir1
  8. [root@localhost test]# cp /etc/fstab dir1/
  9. # 实例1: 使用zip压缩文件test1.txt
  10. [root@localhost test]# zip test1.zip test1.txt
  11. adding: test1.txt (stored 0%)
  12. [root@localhost test]# ls test1*
  13. test1.txt  test1.zip   
  14. # 压缩率为最高压缩test2.txt
  15. [root@localhost test]# zip -9 test2.zip test2.txt
  16. adding: test2.txt (stored 0%)
  17. [root@localhost test]# ls test2*
  18. test2.txt  test2.zip   
  19. # 实例2: 将当前目录dir1连同目录下文件一起压缩
  20. [root@localhost test]# zip -r dir1.zip dir1/
  21. adding: dir1/ (stored 0%)
  22. adding: dir1/fstab (deflated 44%)
  23. [root@localhost test]# ls dir1*
  24. dir1.zip
  25. dir1:
  26. fstab
  27. # 实例3: 向压缩文件中test1.zip中添加test2. txt文件
  28. [root@localhost test]# zip -m test1.zip test2.txt
  29. adding: test2.txt (stored 0%)
  30. # 实例4: 删除压缩文件中的文件
  31. [root@localhost test]# zip -d test1.zip test2.txt
  32. # 实例5: 压缩文件时排除某个文件
  33. [root@localhost test]# zip test.zip *.txt -x test1.txt
  34. adding: test3.txt (stored 0%)
  35. adding: test4.txt (stored 0%)
  36. adding: test5.txt (stored 0%)   
  37. # 实例6: 解压文件test2.zip
  38. [root@localhost test]# unzip test2.zip  
  39. Archive:  test2.zip
  40. extracting: test2.txt
  41. # 实例7:将压缩文件text.zip在指定目录dir1下解压缩  
  42. [root@localhost test]# unzip test.zip -d dir1
  43. Archive:  test.zip
  44. extracting: dir1/test3.txt           
  45. extracting: dir1/test4.txt           
  46. extracting: dir1/test5.txt  
  47. # 实例8:  查看压缩文件目录,但不解压
  48. [root@localhost test]# unzip -v test.zip  
复制代码
(2)gzip和gunzip命令
  1. # gzip(gunzip=gzip -d)命令
  2. # 实例1: 使用gzip压缩文件
  3. [root@localhost test]# gzip test1.txt  
  4. [root@localhost test]# ls test1*
  5. test1.txt.gz  test1.zip
  6. # 实例2: 使用gzip压缩目录下文件
  7. [root@localhost test]# gzip -r dir1/
  8. [root@localhost test]# ls dir1
  9. fstab.gz  test3.txt.gz  test4.txt.gz  test5.txt.gz
  10. # 注意: 以上压缩之后原始文件就没有了。
  11. # 实例3: 压缩但保留原始文件
  12. [root@localhost test]# gzip -c test2.txt > test2.txt.gz
  13. [root@localhost test]# ls test2*
  14. test2.txt  test2.txt.gz  test2.zip
复制代码
注:查看压缩过的文本文件内容: zcat、zless。 zcat 文件名.gz
(3)bzip2、bunzip2命令
  1. bzip2、bunzip2(=bzip2 -d)是更新的Linux压缩工具,比gzip有着更高的压缩率。
  2. bzip2、bunzip2示例如下:
  3. [root@localhost test]# bzip2  man.config  //将man.config以bzip2压缩,此时man.config变成
  4. man.config.bz2
  5. [root@localhost test]# bzip2  -9  -c man.config > man.config.bz2 //将man.config用最佳的压缩比压缩,并保留原本的档案
  6. [root@localhost test]# bzip2  -d  man.config.bz2 //将man.config.bz2解压缩,可用bunzip2取代
  7. bzip2  -d
  8. [root@localhost test]#bunzip2  man.config.bz2  //将man.config.bz2解压缩
复制代码
(4)xz、unxz命令
  1. # 实例1:压缩文件
  2. [root@localhost test]# xz test1.txt
  3. [root@localhost test]# ls test1.txt.xz  
  4. test1.txt.xz
  5. # 实例1:压缩文件
  6. [root@localhost test]# xz test1.txt
  7. [root@localhost test]# ls test1.txt.xz  
  8. test1.txt.xz
  9. # 实例3:查看压缩文件内容
  10. [root@localhost test]# xzcat test1.txt.xz  
  11. test1
  12. # 实例4:解压缩(xz -d等价于unxz)
  13. [root@localhost test]# unxz test1.txt.xz  
  14. # 实例5:解压缩目录dir1下文件
  15. [root@localhost test]# xz -d dir1/*
  16. [root@localhost test]# ls dir1
  17. fstab  test3.txt  test4.txt  test5.txt
复制代码
注:查看压缩过的文件内容: xzcat、xzless 。 xzcat 文件名.xz
6.5 tar 归档命令

格式: tar [选项] [args]…… 

必选项:

辅助选项:

额外的选项:
  1. #打包时排除某个文件
  2. tar cf 文件名.tar --exclude=路径/文件 路径
  3. 注:此处的路径前后需要保持保持一致,统一使用绝对路径或者相对路径
复制代码
1.创建(非压缩的)打包文件,将指定的一个或多个文件或目录备份天生为一个指定的包文件
  1. tar  cvf/cfv/-cvf  文件名.tar  要打包的目录或文件名列表……
复制代码
2.列出包文件中的文件列表
  1. tar  t[v]f  包文件名
复制代码
3.创建带压缩的包文件,为节省存储空间,通常需要天生压缩格式的tar包文件,tar命令支持三种差别的压缩方式
  1. tar  czf/-czf 文件名.tar.gz  要打包压缩的目录或文件名……
  2. tar  cjf/-cjf 文件名.tar.bz2  要打包压缩的目录或文件名……
  3. tar  cJf/-cJf 文件名.tar.xz  要打包压缩的目录或文件名……
复制代码
4.提取包文件到指定目录
  1. tar  xf/-xf/-xzf 文件名.tar.gz  [-C 目标路径]
  2. tar  xf/-xf/-xjf 文件名.tar.bz2  [-C 目标路径]
  3. tar  xf/-xf/-xJf 文件名.tar.xz  [-C 目标路径]
复制代码
第七章 命令表明器-shell

7.1 什么是shell

shell:壳,命令表明器,负责解析用户输入的命令。命令分两类:


  • 内置命令 (shell内置),shell为了完成自我管理和基本的管理,差别的shell内置差别的命令,但是大部门都差不多
  • 外置命令,在文件系统的某个目录下,有个与命令名称相同的文件
type 命令查看命令是file、alias 还是 builtin


  • type -a 列出当前命令可以如何执行
  • type -t 仅列出命令按照哪种方式执行
那shell如何知道命令的可执行文件在哪个路径下呢?系统为了让用户在命令行快速方便地执行命令,将可执行文件的路径存储在情况变量PATH中。
在众多情况变量里面有一个情况变量叫做PATH,当用户每次执行外部命令的时候都会去该变量所记录的路径下搜刮和命令同名的二进制文件,假如有则执行该二进制文件,假如没有则提示命令找不到。
  1. # echo $PATH
  2. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
复制代码
7.2 Linux 中的特殊符号


7.3 命令别名

别名是命令的快捷方式。对于需要经常执行,并需要很长时间输入的长命令创建快捷方式很有效。
语法:alias 别名=’原命令 [选项]…… [参数]……’
  1. # 查看设置的别名
  2. [root@node13 ~]# alias
  3. alias cp='cp -i'
  4. alias egrep='egrep --color=auto'
  5. alias fgrep='fgrep --color=auto'
  6. alias grep='grep --color=auto'
  7. alias l.='ls -d .* --color=auto'
  8. alias ll='ls -l --color=auto'
  9. alias ls='ls --color=auto'
  10. ……
  11. # 删除别名:
  12. [root@node13 ~]#unalias 别名
复制代码
留意:在命令行中使用alias命令设置的别名仅在该次登入有效,假如重新开启一个 Shell,或者重新登录系统,则这些alias将无法使用。
在linux中提供alias永世化的方法: (1)若要让某个用户使用该别名,则把别名加在 ~/.bash_profile 或~/.bashrc 中。然后source ~/.bashrc或者 source ~/.bash_profile 。(2)若要让每一位用户都使用该别名,则把别名加在/etc/bashrc 或者 /etc/profile 中,然后 source /etc/bashrc 或者source /etc/profile。
7.4 命令历史

history 命令可以查阅命令历史记录 ,也可在命令行利用向上或向下光标键来举行查询。
语法: history [选项] [参数]
  1. 选项:
  2. number:显示最近number条命令历史
  3. -c:清空当前历史命令
  4. -a  [file]:后面没跟文件时,默认将缓冲区中历史命令写入~/.bash_history中
  5. -r [file]:将历史命令文件中的命令读入当前历史命令缓冲区中
  6. -w:将当前历史命令缓冲区命令写入历史命令文件中;
复制代码
  1. [root@node13 ~]# history  5
  2. 1871  ls -l
  3. 1872  ls -l /
  4. 1873  touch a
  5. 1874  touch b
  6. 1875  history  5
  7. [root@node13 ~]# !1871   将1871条命令再执行一遍
  8. ls -l
  9. [root@node13 ~]# !!     
  10. 执行上一条命令
复制代码
命令行中的其它快捷键:
  1. ctrl+d 输入已结束;也可当做exit
  2. ctrl+c 键盘中断请求,终止当前的命令
  3. Ctrl+a 移动到当前行的开头
  4. Ctrl+e 移动到当前行的结尾
  5. Ctrl+l 清屏==clear
  6. Ctrl+u 剪切命令行中光标所在处之前的所有字符(不包括自身)
  7. Ctrl+k 剪切命令行中光标所在处之后的所有字符(包括自身)
  8. ctrl+←/→  光标在命令行中按照单词跳转
  9. 引用上一条命令的最后一个参数
  10. 方法1:!$
  11. 方法2:先按Alt再输入.
  12. 方法3:先按Esc在输入.
复制代码
示例:生产情况中,history命令记录利用时间、利用用户、利用IP
(1)/etc/profile文件中加入以下内容
  1. USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
  2. export HISTTIMEFORMAT="[%F %T][`whoami`][${USER_IP}] "
复制代码
(2)执行:source /etc/profile
  1. [root@VM-8-15-centos ~]# history  
  2. 1  [2020-12-25 18:10:27][root][111.18.44.17]   
  3. 2  [2020-12-20 10:35:16][root][111.18.44.17] cat /etc/redhat-release  
  4. 3  [2020-12-20 14:02:20][root][111.18.44.17] exit
  5. 4  [2020-12-24 09:39:17][root][111.18.44.17] cat /etc/redhat-release  
  6. 5  [2020-12-24 10:06:17][root][111.18.44.17] awk 'NR==5' /etc/passwd
  7. 6  [2020-12-24 10:08:31][root][111.18.44.17] whereis ifconfig
复制代码
第八章:用户和组管理

8.1 Linux 中的用户和组的分类

1.Linux下的用户可以分为三类:


  • 超级用户——用户名为root,它具有一切权限,只有举行系统维护(例如:创建用户等)或其他必要情形下才用超级用户登录,以避免系统出现安全题目。
  • 系统用户(伪用户)——是Linux系统正常工作所必需的用户。重要是为了满足相应的系统历程对文件属主的要求而创建的,例如:bin、daemon、adm、lp等用户。系统用户不能用来登录。
  • 普通用户——是为了让使用者能够使用Linux系统资源而创建的,我们的大多数用户属于此类。
2.Linux中的组有以下两类:


  • 基本组(私有组):创建账户时,若没有指定账户所属的组,系统会创建一个和用户名相同的组,这个组就是基本组。
  • 附加组(公有组):可以容纳多个用户,组中的用户都具有组所拥有的权利。
3.Linux中用户和用户组的设置文件
在Linux中,用户账号、密码、用户组信息和用户组密码均是存放在差别的设置文件中的。

(1))用户账号文件——/etc/passwd passwd 是一个文本文件,用于界说系统的用户账号,由于所有效户都对passwd有读权限,所以该文件中只界说用户账号,而不保存口令。
  1. [root@node13 ~]# ll  /etc/passwd
  2. -rw-r--r-- 1 root root 2917 May  6 17:44 /etc/passwd
  3. [root@node13 ~]# head -1 /etc/passwd
  4. root:x:0:0:root:/root:/bin/bash
  5. # 每行定义一个用户账号信息,每行由7个字段组成,字段之间用“:”分隔,其格式如下:
  6.     账号名称:密码:UID:GID:个人资料:主目录:Shell
复制代码
/etc/passwd文件中字段说明:
账号名称:用户登录Linux系统时使用的名称。
密码:从前是以加密格式保存密码的位置,现在密码保存在/etc/shadow文件中,此处只是密码占符“x”或“*”。若为“x”,说明密码颠末了shadow的保护。
UID:用户的标识,是一个数值,用它来区分差别的用户,每个用户都有一个UID数值:
超级用户的UID——0
系统用户的UID——1~999
普通用户的UID——≥1000
GID:用户地点基本组的标识,是一个数值,用它来区分差别的组,相同的组具有相同的GID。
个人资料:可以记任命户的完整姓名、地址、办公室电话、家庭电话等个人信息。
主目录:类似Windows 的个人目录,通常是/home/username,这里username是用户名,用户执行“cd~”命令时当前目录会切换到个人主目录。
Shell:界说用户登录后激活的Shell,默认是Bash Shell
(2)用户密码文件——/etc/shadow
  1. [root@node13 ~]# ll  /etc/shadow ---------- 1 root root 3872 May  6 17:44 /etc/shadow
  2. [root@node13 ~]# head -1 /etc/shadow
  3. root:$6$3EZ8vA1hgB3VTWb0$IlamoUyDh1RS.wftgz4qj0kmVrka7Yi6SgIo1aM6eu8nbFM9haOVRTtNDDfkix8MCugx8p8lufmItgsOsu1rl1:19083:0:99999:7:::
  4. # 每行定义了一个用户信息,行中各字段用“:”隔开,其格式如下:
  5.     登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
复制代码
/etc/shadow文件中的每行9个字段的含义分别为:

(3)用户组账号文件——/etc/group 系统中的每个组,在/etc/group文件中有一行记录,任何用户均可以读取用户组账户信息设置文件。
  1. [root@node13 ~]# ll  /etc/group
  2. -rw-r--r-- 1 root root 1150 May  6 17:44 /etc/group
  3. [root@node13 ~]# head -1 /etc/group
  4. root:x:0:
复制代码
/etc/group文件字段说明:

第一字段:用户组
第二字段:用户组密码,这个段可以是空的或!,假如是空的或有!,表现没有密码;
第三字段:用户组管理者,这个字段也可为空,假如有多个用户组管理者,用,号分割;
第四字段:组成员,假如有多个成员,用,号分割;
8.2 用户管理

8.2.1添加新用户

命令格式: useradd [选项]  <username>
  1. 常用选项:
  2.     -c 注释信息——设定与用户相关的说明信息(如,真实姓名、邮箱地址等)。
  3.     -d 目录——设定用户的家目录(默认为/home/用户名)。
  4.     -e YYYY-MM-DD——设置用户的失效日期,此日期后将不能使用该账号。
  5.     -f 天数——指定密码到期后多少天账号被禁用,若指定为0,则表示账号到期后被立即禁用;若指定为-1,则表示
  6. 账号过期后不被禁用(即密码永不过期)。
  7.     -g 组名或GID号——为用户指定所属的基本组,该组在指定时必须已存在。
  8.     -G 组名或GID号列表——为用户指定所属的附加组,各组在指定时已存在,附加组可以有多个,组 之间用“,”分
  9. 隔。
  10.     -M——不创建用户家目录。
  11.     -N——不创建与用户名同名的基本组。
  12.     -p 密码——指定用户的登录密码。
  13.     -s shell名——指定用户登录后使用的Shell,默认是bash。
  14.     -u 用户号——设置账号的UID,默认是已有用户的最大UID加1。如果同时有-o选项,则可以重复使用其他用户的标识号。
复制代码
示例:
  1. # 示例1:新建一个用户zhang3,查看passwd、shadow文件中的变化,并确认该用户的家目录中的初始配置文件。
  2. [root@localhost ~]# useradd  zhang3
  3. [root@localhost ~]# tail  -1  /etc/passwd
  4. zhang3:x:1001:1001::/home/zhang3:/bin/bash
  5. [root@localhost ~]# tail  -1  /etc/shadow
  6. zhang3:!!:16925:0:99999:7:::        //注意密码字段的内容为“!!”,表示密码尚未设置
  7. [root@localhost ~]# ls  -ld  /home/zhang3
  8. drwx------. 3 zhang3 zhang3 74 11月   4 15:58 /home/zhang3
  9. [root@localhost ~]# ls  -A  /home/zhang3
  10. .bash_logout  .bash_profile  .bashrc  .mozilla
  11. # 示例2:新建一个用户wang5,指定其UID为1005、登录Shell为/bin/bash,账号永不过期
  12. [root@localhost ~]# useradd  -u  1005  -s  /bin/bash -e  -1  wang5
  13. # 示例3:新建一个辅助管理员用户admin,将其用户家目录指定为/admin,基本组指定为wheel,附加组同时属于adm组和root组
  14. [root@localhost ~]# useradd  -d /admin  -g wheel  -G adm,root  admin st3
  15. # 示例4:新建一个用于访问FTP的zhao6用户,禁止其登录且不创建家目录。
  16. [root@localhost ~]# useradd  -M  -s /sbin/nologin  zhao6
复制代码
8.2.2修改用户信息——usermod命令

命令格式:usermod [选项] username
  1. 常用的选项包括-c,-d,-m,-g,-G,-s,-u等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。
  2. 另外,还可以使用如下选项: -l 新用户名——更改账户的名称,必须在该用户未登录的情况下才能使用。 -L——锁定(暂停)用户账户,使其不能登录使用。 -U——解锁用户账户。
复制代码
示例:
  1. # 示例1:将用户admin的家目录移至/home目录下。
  2. [root@localhost ~]# usermod -d /home/admin -m admin
  3. # 示例2:将用户wang5的名称修改为wangwu,并暂停使用该账号。
  4. [root@localhost ~]# usermod wang5 -l wangwu -L
复制代码
8.2.3 为用户账号设置密码——passwd命令

Linux的账户必须设置密码后,才能登录系统
命令格式: passwd [账户名]
  1. 常用选项:
  2.     -d——清空指定用户的口令。这与未设置口令的账户不同,未设置口令的账户无法登录系统,而口令为空的账户可以。
  3.     -e——使用户的账号密码立即过期,强迫用户下次登录时必须修改口令。
  4.     -i——口令过期后多少天停用账户。
  5.     -l——锁定(停用)用户账户。
  6.     -n——指定口令的最短存活期。
  7.     -x——指定密码的最长使用期限。
  8.     -u——解锁用户账户。
复制代码
  1. # 使用该方式也可修改用户密码
  2. [root@localhost ~]#echo 密码 | passwd --stdin 用户名   
复制代码
8.2.4 删除用户账号——userdel命令

命令格式: userdel [-r] 账户名
注: -r——在删除该账户的同时,一并删除该账户对应的家目录。
8.2.5 用户间切换——su(substitute user)命令

命令格式: su [用户名]
注:从root用户切换到任何用户不需要密码验证,而从普通用户到root或其他普通用户均需要输入目标用户的密码且验证成功后才可切换。
su 和 su -命令区别就是加载的设置文件不一样:


  • su 切换方式加载的文件: ~/.bashrc,/etc/bashrc
  • su -切换方式加载的文件: /etc/bashrc,/etc/profile,~/.bashrc,~/.bash_profile
8.2.6 控制用户对系统命令的使用权限

使用sudo命令可以提高普通用户的利用权限,不过这个权限需要root用户举行设置/etc/sudoers文件才可使用。
sudo的执行流程如下(默认只有root用户能使用):

  • 当用户执行sudo时,便会让用户输入自己的密码来确认(root执行sudo时不需要输入密码);
  • 若欲切换的身份与执行者身份相同,那也不需要输入密码。
  • 若密码输入成功,系统会去/etc/sudoers文件中查找该用户是否有执行sudo的权限;
  • 若用户具有执行sudo的权限,便开始sudo后续接的命令;
sudo -l:列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。
sudo -u 用户名 命令:以指定用户的身份执行命令。背面的用户是除root以外的,可以是用户名,也可以是 UID。
sudo -k:清除存活期时间,下次再使用sudo时要再输入密码。
sudo -b 命令:在配景执行指定的命令。
sudo -p 提示语 :可以更改询问密码的提示语,此中%u会代换为使用者账号名称,%h会显示主机 名称。
设置/etc/sudoers文件的2种方式:
  1. [root@localhost ~]# vim /etc/sudoers
  2. 或者
  3. [root@localhost ~]# visudo
  4. root  ALL=(ALL)   
  5. ALL
  6. 参数代表含义:
  7. 1、用户账号:系统哪个账号可以使用sudo这个命令。
  8. 2、登录者的来源主机名
  9. 3、可切换的身份:这个账号可以切换成什么身份来执行后续的命令。默认root可以切换成任何人。
  10. 4、可执行的命令:这个命令最好使用绝对路径编写。默认root可以切换任何身份且进行任何命令。
  11. 说明:ALL是关键字,代表任何身份、主机或命令。
复制代码
8.3 用户组管理

(1)创建用户组
命令格式: groupadd [-r]  用户组名称
选项:
-g GID——指定新用户组的组标识号(GID),默认值是已有的最大的GID加1。
-r——创建一个系统组账号,与-g 差别时使用时,则分配一个1~999的GID。
(2)修改用户组属性
命令格式: groupmod 选项 用户组
选项:
-g GID——为用户组指定新的组标识号。
-n 新用户组——将用户组的名字改为新名字修改用户组的 名称和用户组的GID值。
(3)添加/删除组成员
命令格式: gpasswd [选项] [用户] [组]
注:只有root用户和组管理员才能够使用该命令。
选项:
-r 删除组密码
-a——把用户加入组
-d——把用户从组中删除。
-M——可同时添加多个用户
-A——给组指派管理员。
(4)删除组账户
命令格式: groupdel 用户组名
8.4 查询用户和组信息

  1. [root@node13 ~]# id centos  显示出某个用户的详细信息
  2. uid=1042(centos) gid=1042(centos) groups=1042(centos)
  3. [root@node13 ~]# useradd -g centos -G root admin
  4. [root@node13 ~]# groups admin   显示出用户的所属组信息
  5. admin : centos root
复制代码
8.5 查看用户登录系统的情况

(1)users:查看当前登录系统的用户
  1. [root@node12 ~]# users  
  2. root  
复制代码
(2)last:列出目前与过去登入系统的用户相关信息,该命令默认会去读取/var/log/wtmp文件,并把该文件记录的登入系统的用户名单全部显示出来。
  1. # 显示最近的两条登录信息
  2. [root@node13 ~]# last -2
  3. ...
  4. # 显示最近的两条登录信息
  5. [root@node13 ~]# last -f /var/log/wtmp  -n 3
  6. ...
复制代码
(3)假如想要知道每个账号的最近登录时间,则可使用lastlog查看,该命令会读取/var/log/lastlog文件。
  1. [root@node13 ~]# lastlog
  2. ...
复制代码
(4)w:显示登录到系统的用户信息。

(5)who:显示目前登录到系统的用户,who通常通过/var/run/utmp文件来获取信息 。



第九章:Linux文件系统权限

9.1 文件的一般权限


文件的权限针对三类对象举行界说:


  • owner 属主,缩写u
  • group 属组,缩写g
  • other 其他,缩写o
每个文件针对每类访问者界说了三种重要权限:


  • r:Read 读
  • w:Write 写
  • x:eXecute 执行
留意:root账户不受文件权限的读写限制,执行权限受限制


1.修改文件或目录的权限—chmod(change mode)命令
命令格式 1: chmod [选项] [ugoa][+-=][rwx] 文件或目录...
命令格式2:  chmod [选项] nnn 文件或目录...
常用的选项:-R,递归修改指定目录下所有文件、子目录的权限。


  • ugoa :表现权限设置所针对的用户类别,可以是此中字母中的一个或组合,u(user)表现文件或目录的属主(所有者);g(group)表现属组内的用户;o(others)表现其他用户;a(all)表现所有效户(即u+g+o)。
  • +或-或=:表现设置权限的利用动作,+代表添加某个权限;-代表取消某个权限;=表现只赋予给定的权限,并取消原有的权限。
  • rwx :用字符情势表现的所设置的权限,可以是此中一个字母或组合。
  • nnn :用三位八进制数字表现的权限。
2.对于文件和目录来说,r,w,x有着差别的作用和含义:

对于文件和目录大概出现的权限:

3.修改文件或目录的属主和属组
(1)修改文件或目录的所属者
命令格式 : chown [选项] 新属主[:[新属组]] 文件或目录……
选项:-R可递归设置指定目录下的全部文件(包罗子目录和子目录中的文件)的所属关系。
(2)修改文件或目录的属组
命令1: chown [选项] :新属组 文件或目录……
命令2: chgrp [选项] 新属组 文件或目录……
9.2 文件和目录的特殊权限

在Linux系统中,用户对文件或目录的访问权限除了r、w、x三种一般权限外,还有SET UID(SUID)、SET GID(SGID)、Sticky Bit(粘滞位)三种特殊权限,用于对文件或目录举行更加机动方便的访问控制。
9.2.1 SUID权限

SUID 权限的含义:是为了让一般用户在执行某些程序的时候, 在程序的运行期间, 暂时得到该程序文件所属者的权限。
分析:student用户要更改自己的密码,student 在执行 passwd 修改自己的密码时, 其修改的密码, 终极是需要保存到 /etc/shadow 这个文件中, 而这个文件的权限是 --------- ,它的拥有者是 root ,也只有 root 可以“ 逼迫” 存储,其他用户连看都不可。可偏偏 student 去执行 passwd (/usr/bin/passwd) ,却可以更新自己的密码。这就是因为有 s 权限的存在,当 s权限在拥有者的权限位上时, 即如-rwsr-xr-x 如许时, 称为 SUID 。SUID 即 Set UID , UID 指的是拥有者的的 ID, 而这个程序 (/usr/bin/passwd) 的拥有者为(root) 。
  1. [root@node13 ~]# which passwd
  2. /usr/bin/passwd
  3. [root@node13 ~]# ll /usr/bin/passwd
  4. -rwsr-xr-x. 1 root root 33600 Apr  7  2020 /usr/bin/passwd
复制代码
留意:


  • suid仅对二进制文件有效。
  • 在执行过程中,调用者会暂时得到该文件的所有者权限。
  • 该权限只在程序执行的过程中有效。
  1. # 查询整个系统中设置了 SUID 的文件
  2. find / -perm /4000
复制代码
9.2.2 SGID权限

SGID 可以用在两个方面:


  • 文件: 如 果 SGID 设置在二进制文件上, 则岂论用户是谁,在执行该程序的时候,程序的所属组将会变成该程序文件的所属组。
  • 目录, 如 果 SGID 是设置在 A 目录上, 则在 A 目录内所创建的文件或目录的所属组, 将会是此 A 目录的所属组。 一 般来说, SGID 多用在特定的多人团队的项目开发上,在系统中用的很少。
  1. # 查询整个系统中设置了 SGID 的文件
  2. find / -perm /2000
复制代码
9.2.3 Sticky Bit权限

Sticky Bit (SBit) 当前只针对目录有效, 对文件没有效果。其对目录的作用是:在具有 SBit 的目录下, 用户若在该目录下具有 w 及 x 权限 , 则当用户在该目录下创建文件或目录时, 只有文件拥有者与 root 才有权利删除。 例如:当 student 用户属于 A 目录的组成员或属于 other ,且拥有 wx 权限时, 可以对该目录内任何人创建的目录或文件举行“ 删除/重定名/移动” 等利用。 假如将 A 目录加上了 Sticky Bit 权限, 则 student用户只能针对自己创建的文件或目录举行“ 删除/重定名/移动” 等利用。
9.2.4 设置文件和目录的特殊权限

为文件或目录添加三种特殊权限同样可以通过chmod命令来实施,使用“u±s”、“g±s”、“o±t”的字符权限模式分别用于添加和移除SUID、GUID、sticky权限。 若使用数字情势的权限模式,可采用“nnnn”格式的四位八进制数字表现,此中:背面三位是一般权限的数字表现,前面第一位则是特殊权限的标志数字:
0——表现不设置特殊权限
1——表现只设置sticky
2——表现只设置GUID权限
3——表现只设置SGID和 sticky权限
4——表现只设置SUID权限
5——表现只设置SUID和sticky权限
6——表现只设置SUID和SGID
7 ——表现同时设置SUID、GUID、sticky3种权限
9.3 ACL权限

ACL 权限分配:给指定的用户指定目录分配指定的权限。
ACL权限管理命令:
(1)查看ACL权限
  1. [root@localhost ~]# getfacle 文件名
复制代码
(2)设定ACL权限
语法: setfacl 选项 文件名
选项:
-m:设定 ACL 权限。假如是给予用户 ACL 权限,则使用u:用户名:权限 格式赋予;假如是给予组 ACL 权限,则使用 g:组名:权限 格式赋予;
-x:删除指定的 ACL 权限;
-b:删除所有的 ACL 权限;
-d:设定默认 ACL 权限。只对目录见效,指目录中新创建的文件拥有此默认权限;
-k:删除默认 ACL 权限;
-R:递归设定 ACL 权限。指设定的 ACL 权限会对目录下的所有子文件见效;
9.4 权限掩码umask

在Linux系统中,当用户创建一个新的文件或目录时,系统都会为新建的文件或目录分配默认的权限,该默认权限与 umask值有关。
其详细关系是:新建文件的默认权限=0666-umask值 新建目录的默认权限=0777-umask值
  1. # 分别查看、修改用户当前默认的umask值
  2. [root@localhost ~]# umask
  3. 0022
  4. [root@localhost ~]# touch file800
  5. [root@localhost ~]# mkdir dir800
  6. [root@localhost ~]# ll -d dir800 file800  
  7. drwxr-xr-x. 2 root root 4096 3月  11 19:40 dir800
  8. -rw-r--r--. 1 root root    0 3月  11 19:40 file800
复制代码

  1. #修改shell umask值(临时)
  2. [root@localhost ~]# umask 000
  3. [root@localhost ~]# mkdir dir900
  4. [root@localhost ~]# touch file900
  5. [root@localhost ~]# ll -d dir900 file900  
  6. drwxrwxrwx. 2 root root 4096 3月  11 19:44 dir900 -rw-rw-rw-. 1 root root   
  7. 0 3月  11 19:44 file900
复制代码
  1. #修改shell umask值(永久)
  2. [root@localhost ~]# vim /etc/profile   
  3. if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
  4.     umask 002
  5. else
  6.     umask 022
  7. fi
  8. [root@localhost ~]# source /etc/profile       //立即在当前shell中生效
复制代码
  1. #通过umask决定新建用户家目录的权限
  2. [root@localhost ~]# vim /etc/login.defs  
  3. UMASK           077
  4. [root@localhost ~]# useradd gougou
  5. [root@localhost ~]# ll -d /home/gougou/
  6. drwx------. 4 gougou gougou 4096 3月  11 19:50 /home/gougou/
  7. [root@localhost ~]# vim /etc/login.defs
  8. UMASK           000
  9. [root@localhost ~]# useradd yangyang
  10. [root@localhost ~]# ll -d /home/yangyang/
  11. drwxrwxrwx. 4 yangyang yangyang 4096 3月  11 19:53 /home/yangyang/
复制代码
第十章:管理Linux的联网

10.1 设置网络

网络接口是指网络中的计算机或网络装备与其他装备实现通讯的进出口。这里,重要是指计算机的网络接口即网卡装备。 从RHEL7开始引入了一种新的“一致网络装备定名”的方式为网络接口定名,该方式可以根据固件、装备拓扑、装备范例和位置信息分配固定的名字。网络接口的名称的前两个字符为网络范例符号。如: en——表现以太网(Ethernet)、wl表现无线局域网(wlan)、ww表现无线广域网(wwan);接下来的字符根据装备范例或位置选择,如: o——表现内置(onboard)于主板上的集成装备(即集成网卡)及索引号; s——表现是插在可以热拔插的插槽上的独立装备及索引号; x——表现基于MAC地址定名的装备; p——表现PCI插槽的物理位置及编号。
一个网络接口,可以有多个网络连接,但同一时间只能有一个网络连接处于活动状态。
(1)使用ip命令设置临时见效的网络连接

  1. [root@master ~]# ip   -4 addr add 192.168.168.16/24  dev ens160
复制代码
(2)nmcli(命令行工具)
nmcli device:可以简写为nmcli d,查看网卡装备
  1. [root@kongd ~]# nmcli device
  2. DEVICE  TYPE      STATE      CONNECTION
  3. ens160  ethernet  connected  ens160
  4. lo      loopback  unmanaged  --
  5. [root@kongd ~]# nmcli device show
复制代码
connected:已被NM管理,而且当前有活泼的connection
disconnected:已被NM管理,但是当前没有活泼的connection
unmanaged:未被NM管理
unavailable:不可用,NM无法管理,通常出现于网卡为down的时候
  1. # nmcli connection:可以简写为 nmcli c,查看相应的会话
  2. [root@kongd ~]# nmcli connection
  3. NAME    UUID                                  TYPE      DEVICE
  4. ens160  39c494c3-7621-43fb-9c42-15e330b3d4dc  ethernet  ens160
  5. [root@kongd ~]# nmcli connection show
  6. [root@kongd ~]# nmcli connection show 39c494c3-7621-43fb-9c42-15e330b3d4dc
  7. [root@kongd ~]# nmcli connection show /etc/sysconfig/network-scripts/ifcfg-ens160
复制代码
(3)设置已存在会话的网卡的ip地址(非交互式)
  1. [root@kongd ~]# nmcli c mo ens160 ipv4.method manual ipv4.addresses 192.168.150.200/24
  2. ipv4.gateway 192.168.150.2 ipv4.dns 223.5.5.5 autoconnect yes  
  3. [root@kongd ~]# nmcli c up ens160  
复制代码
10.2 网络测试命令

(1)使用ping命令测试网络的连通性 命令一般格式为: ping [选项] <目标主机名或IP地址>
(2)使用tracepath命令用来追踪并显示报文到达目的主机所颠末的路由信息 命令一般格式为: tracepath [选项] <目标主机名或IP地址>
10.3 通过域名访问主机

(1)设置静态解析,通过/etc/hosts文件实现域名解析
  1. [root@master ~]# cat /etc/hosts
  2. 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  3. ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  4. 192.168.168.11  master
  5. [root@master ~]# ping master
  6. PING master (192.168.168.11) 56(84) bytes of data.
  7. 64 bytes from master (192.168.168.11): icmp_seq=1 ttl=64 time=0.131 ms
复制代码
(2)通过/etc/resolv.conf文件指派域名解析服务器的地址,由dns服务器做域名解析

10.4 从网站下载文件

(1)wget命令
用于在终端命令行里下载网络文件,英文全称为:“web get”,语法格式为:wget [选项] 网址
选项:
-P 下载到指定目录
-t 最大尝试次数
-b 配景下载模式
-c 断点续传
-p 下载页面内所有资源,包罗图片、视频等
-r 递归下载
(2)curl命令
是一个网络工具,其重要作用是通过http、https、ftp等方式下载/上传文件


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

风雨同行

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表