第一章 Linux基础安装入门-安装
所需软件:VmwareWorkStation 16
rhel-baseos-9.0-x86_64-dvd 镜像文件
Xshell 远程终端工具
「链接:迅雷云盘 提取码:e42h”复制这段内容后打开手机迅雷App,查看更方便」
第二章 学习Linux
1.修改密码
#第一步重启系统,然后按键盘的下键将白色条放到第二行上输入e
#第二步在linux开头那一行尾部添加rd.break,然后使用ctrl+x继续后面
#第三步输入输入mount查看设备挂载信息(主要看/sysroot目录挂载权限)
接着输入mount -o remount,rw /sysroot/目录重新挂载已经挂载的设备,并以其他的权限挂载,这里我们需要rw权限
#第四步输入chroot /sysroot/ ,使用chroot命令改变系统的根目录的位置,将其改到/sysroot之后就可以进行密码修改
#第五步passwd root 输入两次密码
#第六步输入touch /.autorelabel
#第七步两次输入exit完成root密码重置
2.远程连接xshell
ssh root@192.168.62.129
(如果输入密码的时候服务器一直拒绝,则需要在虚拟机中打开bash)
输入:vim /etc/ssh/sshd_config
进入后输入/Root 匹配后删掉这一行的#键,将后面的内容删掉改为yes,如图
改完后:wq保存退出,输入 systemctl restart sshd
然后再去重新远程链接一下。
3.操作系统什么
操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是配置在计算机硬件上的第一层软件,任何其它软件都必须在操作系统的支持下才能运行。
开源:把软件程序和源代码一起打包给用户(使用自由,复制自由,修改自由,创造衍生品自由,低风险,高品质)
4.计算机的结构
硬件:显示器、键盘、鼠标、
输入:鼠标,键盘,扫描仪,摄像头
主机:
CPU:算数逻辑单元(程序的运算和逻辑判断)+控制单元(协调各周边组件和各单元之间的工作)
输出:
软件:操作系统,
运算器 控制器 输入、输出
操作系统主要是通过操作系统内核实现的。
系统调用把应用程序的请求传给内核,调用相应的内核函数完成所需的处理,将处理的结果返回给应用程序。
SHELL 壳
Bash(bourne-Again SHELL):Bash是Bourne shell的后继兼容版本与开放源代码版本,它的名称来自Bourne shell(sh)的一个双关语(Bourne again / born again)。
终端(终端设备,是计算机网络中处于网络最外围的设备,主要是用于用户信息的输入和处理结果的输出)
物理终端:键盘、鼠标、显示器。
虚拟终端:模拟终端(图形化界面)切换到重命令行的终端ctrl+alt+f3
伪终端:对于一个应用程序而言,它看上去像一个终端,但 事实上它并不是一个真正的终端。
重命令行的终端切换到模拟终端 ctrl+alt+f2
5. 命令格式
命令名称 [命令参数] 命令对象
命令名称:动词,要做的某件事
命令对象:一般要处理的文件、目录、用户
严格区分大小写
reboot 重启 | shutdown -r now 重启 | shutdown -h now 关机 |
---|---|---|
poweroff 关机 | ip a 或 ifconfig 查看IP地址 |
查看当前linux的发行版本:cat /etc/redhat-release
查看内核版本:uname -r
查看shell类型:cat /etc/shells chsh -l
查看当前的默认shell类型:echo $SHELL
6.命令代码
-
[root@localhost ~] #
#:标识符,标识的是当前用户是root
$:标识符,标识的当前的用户是普通用户。
root:管理员,超级管理员,根用户
@:分隔符
localhost:本意标的是当前这台主机,也是这台主机的主机名。
~:当前用户的家目录
root用户的家目录:/root.
普通用户的家目录:/home/rhcsa
家目录:存放个人数据的地方
Ls(list directory contents):用于显示指定工作目录下的内容(文件及子目录)。
如果指定,则列出指定目录的内容。
如果不指定,则列出当前目录的内容。
/:根,文件系统的根。 一切皆文件。
-
路径:
绝对路径:以根开始的路径。/home/rhcsa
相对路径:不以根开始的路径。Rhcsa
root(普通用户)
su (switch user):用于变更其他使用者的身份。
如果从root切换到普通用户,则不需要输入密码。但是如果从普通用户去切换到root,则需要输入密码。
一般使用的时候需要加上-的选项去获取对应身份的环境变量和身份权限。
pwd(print work directory)显示工作目录
cd (change directory):切换当前工作目录
cd /root
cd - :切换到上一次切换的目录
cd ~:切换到当前用户的家目录
ls(list directory contents): 列出当前工作目录下的内容。
-l 以长格式的形式显示文件和目录的信息(权限、所有者、大小、创建时间)ls -l =ll
-a 显示所有文件及目录(.开头的隐藏文件)
-A 不列出.(当前目录)和..(父目录)
-h 在-l基础上去使用h,以人类可读的方式显示当前目录中文件和目录的大小。
第三章 命令初学
/bin 软链接(快捷方式),符号链接,binaries(二进制文件),可执行的应用程序。
/boot:存放的是启动程序后的核心文件(链接文件、镜像文件。)
/dev:存放的是linux的外部设备(光驱)。
/etc:存放的是系统管理所需要的配置文件。
/home:普通用户的家目录。
/root:root用户的家目录。
/lib:library(库),存放着系统最基本的动态连接共享库(32位),
/lib64:ibrary(库),存放着系统最基本的动态连接共享库(64位)
/media:挂载点目录,让用户去临时挂载别的文件系统。系统默认挂载点目录
/mnt:挂载点目录,手动去挂载点目录。
/opt:optional(可选),主机给额外安装软件所摆放的目录。
/sbin:超级用户的二进制文件的缩写,存放的是系统管理员所使用的系统管理程序。(超级管理员自己能用到的一些命令)
/srv:第三方服务,存放的是一些服务启动后需要提取的数据。
/tmp:temporary(临时):存放的是一些临时文件。
/usr:unix shared resource(共享资源),用户很多应用程序和文件都存放在该目录中。
/var:variable变量的缩写,存放的不断扩充的东西。(日志文件)
/run:是临时文件系统,存放的系统启动以来的信息(守护进程)
/sys:内核或者操作系统
/proc :进程的缩写。程序(由源代码生成的可执行文件),进程(程序执行后形成了进程,它会占用内存资源。)
Block 块设备
bus 总线(地址、控制、数据)
第四章 在Linux中执行命令
1.help命令
-
help 命令 (help cd)
-
命令 --help(cd --help)
2.man( manual)
-
man 命令
空格是下一页,b上一页,/单词,n上一个关键字,N下一个关键字。
区段1:用户指定,查看命令的帮助。
区段2:系统调用,
区段3:程序库的调用
区段4:设备、查看特殊文件的帮助。
区段5:文件格式
区段6:游戏,查看游戏的帮助
区段7:
区段8:系统指令,
区段9:内核内部的指令。
3.Info
Info 命令
4.date
date -s “年月日 时:分:秒“
date 月日时分年
5.clock
用来显示系统的时钟时间
6.cal
用于查看当前年份的日历
7.hwclock
-
hwclock 查看硬件时间
-
hwclock --show 查看硬件时间
-
hwclock -w 同步硬件时间和系统时间
-
hwclock -s 将硬件时钟同步到系统时间
-
hwclock -r 查看当前时间
练习: 将系统时间设置为2023年11月11日11点11分,再将硬件时间同步到系统时间,显示 2023年11月的日历,
语法:
8.文件权限
-
①-②rw-③ --- ④--- . 1 root root 1073 Oct 21 10:03 anaconda-ks.cfg
-
①- 标记位——文件类型
- 普通文件
d 目录文件
l 链接文件(软链接 硬链接)
第一列root是所有者
第二列root是所属组
文件:元数据inode(索引节点)
硬链接(hard link)特点
1、 必须有原始文件
2、 在同一个文件系统里面创建
3、 不能对目录进行创建
软链接(符号链接symbolic link )特点:
1、 对不存在的目录和文件进行创建
2、 对存在的目录和文件进行创建
3、 可以跨文件系统创建的
4、 删除软链接的时候对原文件没有任何影响
-
d ②rwx ③r-x ④r-x ⑤.
r 读取的权限
w 对文件内容进行更改的权限
x 对文件的执行权限。
- 没有权限
②:该文件的所有者对文件的权限。
③:该文件的所属组的对该文件的权限。
④:其他人对该文件的权限。
⑤ :扩展权限。
Access 访问时间:用户读取文件内容的时间
Modify 修改时间:修改文件内容的时间。
Change 改变时间:用来标记文件元数据发生变化的时候。
Birth 创建时间:创建文件的时间。
9.ln
创建软连接
ln -s 原始文件 软连接文件
创建硬连接
ln 源文件 硬链接文件
用户数据
B block 块设备文件
C 字符设备
P pipiline管道设备文件
S socket 套接字文件 IP地址+端口号
10.stat
-
Stat 用于显示文件元数据的内容
11.time
timedatectl 设置系统时间 语法: 选项 参数
timedatectl status 比date查看的详细:
timedatectl set-timezone Asia/shanghai 设置所在的时区
timedatectl set-time 2023-10-28 设置时间(简单的)
Access 访问时间:用户读取文件内容的时间
Modify 修改时间:修改文件内容的时间。
Change 改变时间:用来标记文件元数据发生变化的时候。
Birth 创建时间:创建文件的时间。
12.touch
touch : 创建一个文件
touch 语法:1.touch 文件名 文件名 文件名
2.touch {1..2}{a..d},两个括号里面的数进行排列组合
Touch 修改文件的时间戳
如果touch一个已经存在的文件,则会把它除了创建时间之外的剩下时间全部进行修改。
如果touch一个不存在的文件,则会创建该文件。
不能使用/来当文件名
13.Mkdir
mkdir 创建目录
语法:1.mkdir aa
2.mkdir tese{1..3}
级联目录:a文件下有b,b文件下有c
语法:mkdir -p aa/bb
mkdir -p bb/cc
mkdir -p cc/dd
14.tree
tree以树状的形式展示出来
15.rm
rm 要删除的对象(普通文件)
rm = rm -I 删除的话y,不删除的话n
忽略提示信息删除:\rm 要删除的对象
rm -f 要删除的对象
rm -rf 要删除的对象
要清空当前目录:rm -rf *
(*代表的匹配所有)
16.cp
Cp 选项 源文件 目标文件
-
-a: 复制目录及以下的所有文件
-
-p: 保留原文件的权限,所有者以及时间戳的信息
-
-r,-R:复制目录及其所有的目录的子目录
例: cp -p 复制的源文件 复制的目标路径
17.mv
语法: mv 选项 源文件 目标文件
作用:1.移动文件
2.给文件或目录改名或将目录或文件移动到其他位置
-
移动单个文件
语法:mv 移动的文件 移动的目标文件
-
批量移动文件
语法 mv 移动的文件 移动的文件 移动的目标文件
-
目标文件不存在时
例如:
此目录下只有文件1-5
现将文件5移动到文件6下,此时,文件6不存在,移动后文件5就会被文件6覆盖,文件5就不在了,就相当于把文件5改了个名字,将文件5改成了6.
-
移动目录
语法:mv 要移动的目录 要移动的目录 移动的目标目录
此时,只有目录a,b
要将a目录移动到c目录下面,mv a c,此时,用ll查看,就会发现a目录没有了,多出来一个c目录,就相当于给a目录重命名了。
18.数据流和重定向
1.1 数据流
-
标准输入stdin (standard input):从键盘获取的输入。
-
用数据流0.1.2输出
现在没有haha这个文件,将haha写到file1中,就会把错误信息写到file1中
-
批量输出
语法1:
语法2:
date &> file1(用&连接)
1.2重定向是操作符
1.输出重定向操作符
>输出重定向符;>>追加输出重定符
例:将系统时间移动到f2文件里面
再将pwd查看到的文件也写到f2文件中,用是出重定向符将正确信息写入文件的时候,会覆盖原有的内容。
追加重定向符
例:将date用追加重定向符写到f2文件中,用追加重定向符不会覆盖原有的内容,而是添加新内容
-
输入重定符操作符
<输入重定向符;<<输入的终止结束符
语法:要输入的内容 < 要输入的文件或目录
例:将date写到file1里面,再用输入重定向符将date写到file1里面
对比语法cat < file1和cat file1,发现没有什么区别,所以,加不加<都行
-
<<输入的终止结束符
用来指定一个符号来结束当前的命令
例:cat << . 意思就是以.为结束符或结束的标志
终止结束符必须令起一行,官方指定的终止结束符市EOF
19.echo
"echo"是一个常用的Linux命令,可以用于向标准输出或文件写入一行或多行文本。通常用来输出一些提示信息或测试脚本的输出,也可以用于输出变量的值或执行命令的结果。
-
命令格式:
echo [字符串] [$变量]
-
模糊查询($)
-
查看主机名
-
字符串输出
语法:echo string
普通字符串显示
echo "It is a test"显示专业字符
echo "\"It is a test\""结果是:
"It is a test"显示换行
echo -e "OK! \n" # -e 开启转义 echo "It is a test"结果是:
OK! It is a test显示不换行
#!/bin/sh echo -e "OK! \c" # -e 开启转义 \c 不换行 echo "It is a test"结果是:
OK! It is a test显示命令执行结果
echo `date`注意: 这里使用的是反引号 `, 而不是单引号 '。
结果将显示当前日期
结果是:
Thu Jul 24 10:08:46 CST 2014
20.tee
读取标准输入的数据,并将他的内容输出到标准输出设备同时保存成文件
(| 管道符--用于两个命令或多个命令相连接)
-
语法:命令 管道符 tee 文件
例:把更下的命令通过tee命令用管道符连接输出到f2文件中,并且输出到屏幕中
21.vim编辑器
1.1 vi/vim 的使用
基本上 vi/vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)。
1.2 命令模式
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。
以下是普通模式常用的几个命令:
-
i -- 切换到输入模式,在光标当前位置开始输入文本。
-
x -- 删除当前光标所在处的字符。
-
: -- 切换到底线命令模式,以在最底一行输入命令。
-
a -- 进入插入模式,在光标下一个位置开始输入文本。
-
o:在当前行的下方插入一个新行,并进入插入模式。
-
O -- 在当前行的上方插入一个新行,并进入插入模式。
-
dd -- 删除当前行。
-
yy -- 复制当前行。
-
p(小写) -- 粘贴剪贴板内容到光标下方。
-
P(大写)-- 粘贴剪贴板内容到光标上方。
-
u -- 撤销上一次操作。
-
Ctrl + r -- 重做上一次撤销的操作。
-
:w -- 保存文件。
-
:q -- 退出 Vim 编辑器。
-
:q! -- 强制退出Vim 编辑器,不保存修改。
若想要编辑文本,只需要启动 Vim,进入了命令模式,按下 i 切换到输入模式即可。
命令模式只有一些最基本的命令,因此仍要依靠底线命令行模式输入更多命令。
1.3 输入模式
在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式。
在输入模式中,可以使用以下按键:
-
字符按键以及Shift组合,输入字符
-
ENTER,回车键,换行
-
BACK SPACE,退格键,删除光标前一个字符
-
DEL,删除键,删除光标后一个字符
-
方向键,在文本中移动光标
-
HOME/END,移动光标到行首/行尾
-
Page Up/Page Down,上/下翻页
-
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
-
ESC,退出输入模式,切换到命令模式
1.4 底线命令模式
在命令模式下按下 :(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
-
:w
:保存文件。 -
:q
:退出 Vim 编辑器。 -
:wq
:保存文件并退出 Vim 编辑器。 -
:q!
:强制退出Vim编辑器,不保存修改。
按 ESC 键可随时退出底线命令模式。
简单的说,我们可以将这三个模式想成底下的图标来表示:
1.5 创建文件
输入vim f8回车,进去后按i,进入编辑页面,输入任意东西,点Esc,SHift:+wq退出。
用ll查看,就会有f8这个文件
用cat f8查看一下,就会有刚才写的东西
1.6 vim 键盘图
1.7 操作演示
-
复制:将光标放到要复制的行,然后点yy,再将光标放到要复制的行首,点p,就可以复制了。
1yy--和yy作用相同,复制
3yy--从光标处开始,向上插入
-
剪切:光标放在任意位置,点cc,放到想剪切的位置,点p
-
显示当前文档的行数
SHift :set nu--显示当前的行数
SHift :set nonu--不显示当前的行数
-
按照行跳转
语法:SHift :要跳转的行数
-
查找并替换
SHift :%s/被替换的内容/要替换成的内容/g(g是替换整片文档)
例:用vim创建一个hello文件,里面有姓名和性别
方法一:语法:vim Hello 进入后就可以写入想要保存的文件
查看Hello文件所在位置
方法二:用echo命令来baocun 语法:echo “要写入的内容” >>要写入的文件
22. 创建文件三种方式
-
1.touch
-
2.输出重定向符
-
3.vim编辑器
23.whereis
查找二进制文件,源文件,源代码文件,帮助页面
-
语法:whereis 选项 目录 名字
-
-b 查找二进制文件
-
-m 查找帮助文件
-
-s 查找源代码文件
-
-u 反向查找(-u 张三,就是查找不叫张三的人)
-
-f 不显示文件名前的路径名称
-
-S 在设置的目录下查找原始代码的文件
24.find
在指定目录下查找文件或目录
语法:find 路径 匹配表达式
-
根据名字找文件
-name 要找的文件名 (*/?)
例:查找aa文件所在的路径
-
根据文件类型找文件
-type 文件类型 (f普通文件、d目录文件、l链接文件)
查找当前路径下的普通文件
语法:find -type f
-
根据文件大小找文件
-size 文件大小 +1M(要找的文件大于1M)-1M(要找的文件大小小于1M)
找出大于1M的文件 语法:find . -size +1M
-
根据文件所有者找文件
语法:find . -user root
-
根据所属组查找文件
语法:find . -group root
-
根据时间参数查找
-atime 访问时间 语法:-atime n 小时 查找n小时内被访问的文件
-ctime 改变时间 语法:-ctime n 小时 改变n小时内被访问的文件
-mtime 修改时间 语法:-mtime n 小时 修改n小时内被访问的文件
25.grep
用于查找文件里面的字符串或者正则表达式
语法:grep 选项 字符串 文件的路径
-
-n 查找到字符串所在行
-
-c 查找到字符串在的行号
-
-l 只打印匹配到文件名
-
-v 反向查找
-
-r 递归查找
例1:关键字查找
例2:查找关键字有几行
例3:查找关键字所在行数
例4:查找关键字所在行
-
查找以sg开头的所在行:
语法:grep ^[sg] passwd
-
查找不已sg开头的行(除了sg开头的行不显示,其他的行都显示)
语法:grep ^[^sg] passwd
-
查找以0-9开头的所在行:
语法:grep ^[0-9] f1
-
查找以n结尾的文件:
语法:grep n¥ passwd
-
grep命令显示空白行
语法:grep ^¥ f1
-
grep命令不显示空白行
语法:grep ^[^$] f1
语法:grep -v ^$ f1
26.cat(concatenate)
作用:显示文本文件内容
语法:cat 选项 文件
-n
对输出内容中的非空行标注行号
-b
对输出内容中的非空行标注行号
27.head
可用于查看文件的开头部分的内容,默认显示前十行。
语法:head 参数 文件
-q
隐藏文件名
-v
显示文件名
-c
-c<数目> 显示的字节数
-n
-n<行数> 显示的行数
28.tail
命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文.(可用于查看文件结尾部分的内容,默认显示最后十行)
语法:tail 参数 文件
29.more
命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。
语法:more 文件名
30.cut
命令用于按列提取文本内容
语法:cut 选项 文件名称
cut命令从文件的每一行剪切文件,字符和字段,并将这些字符,字节和字段写至标准输出。
如果不指定file参数,cut命令将读取标准输入,必须指定-b,-c或-f的标志之一。
-b
以字节位单位进行分割
-
显示前十行的第三个字节
-c
以字符为单位进行分割
-
显示前十行的第三个字符
-d
用户自定义分隔符。比如:进入vim passwd文件中,就以:位分隔符
-
显示第一个字节
-f
指定显示那个区域
-n
取消分割多字节的字符
31.sort
对文件内容进行排序(按字母顺序和数字大小排序)
语法:sort 选项 文件名称
-f
忽略大小写
-b
忽略缩进与空格
-n
依照数值的大小排序
-r
反向排序
-u
去除重复行
-t
指定间隔符
-k
设置字段范围
32.uniq
作用:检查文件内容的重复行,并且把重复行去掉
语法:uniq 选项 文件名
-c
显示去除重复行的行数(如果去除了三行重复行,前面就会显示3,就表示去除了三行重复行)
33.tr
作用:替换文件中的字符
语法:tr 选项 要替换的东西
-c
反选替换
-d
删除指定字符
-s
缩减连续连续重复的字符成单个字符
34.wc
作用:用于统计文本的行数,字数,字节数
语法:wc 选项 文件
-
显示第一行的行数,字数,字节数
-l
只显示行数
-w
只显示单词数
-c
只显示字节数
35.rhcsa-压缩和解压缩
.zip: zip 程序压缩打包的档案;(很常见,但是因为不包含文档名编码信息,跨平台可能会乱码) .rar: rar 程序压缩打包的档案:(在windows上很常见,但是是商业软件。 ·gz: gzip 程序压缩的档案;(linux目前使用最广泛的压缩格式) .bz2: bzip2 程序压缩的档案 .xz: Xz程序压缩的档案 .tar: tar 程序打包的资料,并没有压缩过。 (但是tar打包的时候可以指定文件格式,就相当于压了) .targz: tar程序打包的档案,其中并且经过gzip 的压缩(最常见) .tar.bz2: tar 程序打包的档案,其中并且经过 bzip2的压缩 .tar.xz: tar程序打包的档案,其中并且经过xz的压缩(新一代压缩选择) 7z:. 7zip程序压缩打包的档案
36.zip和unzip命令
1.zip
可以压缩文件和目录
语法:zip 压缩后的文件名 要压缩的文件
-
压缩aa目录下的f1
-
多文件压缩
将f1和f6文件全部压缩为f7.zip
2.unzip
解压文件和目录
语法:unzip 文件
37.tar
-
归档命令
以下三点是任选其一
-c 创建.tar格式的包文件
-x 释放.tar格式的包文件
-t 查看包中的文件列表
必选项:
用于指定打包文件名
-f 当与-c选项一起使用时,创建的tar包文件使用该选项指定的包文件
当与-x选项一起使用时,则释放该选项指定的tar包文件
辅助选项
-v 表示在命令执行时显示详细的提示信息
-p 打包时保留文件及目录的权限
z 调用gzip程序,以gzip文件压缩或解压缩文件
-j 调用bzip2程序,以bzip2格式压缩或解压缩文件
-J 使用xz压缩或解压缩文件,xz的压缩率通常比bzip2更高
-C 和-x选项一起使用,表示释放包时指定释放的目标路径
-
将目录a压缩成a.tar
-
将a.tar解压缩到a目录中
38.scp
两台虚拟机之间互相传文件
-r 如果要传的时一个目录文件,就必须要加-r,不加-r,就传不过去
语法:scp -r 当前主机文件 目标主机的对于路径
-
将f1文件发到192.168.84.129的主机上
-
192.168.84.129的主机上就收到了当前主机上的f1文件
39.linux中的特殊符号
; 可使用分号分隔多条命令 在一行上输入和执行多条较短的命令,
可使用分号来分隔命令
✳ 匹配任意零个或者多个字符 不能用于创建文件
? 匹配任意单个字符 不能用于创建文件
[] 匹配方括号中的任意一个 不能用于创建文件
字符,表示范围可以用"-"
[^]或者[!] 匹配方括号中的任意一个 用于查找和删除文件,不用于创建文件
字符或数字后进行取反
{string,sting} 匹配括号中的任意一个 可用于创建、查看、删除文件
字符串表示一个范围时,
字符串之间隔”-“
40.history
作用:查看历史命令
-d
删除指定历史命令行
语法:history -d 要删除的行数
第五章 rhcsa-用户和组管理
一.用户和组的分类
1、在Linux中用户可以分为三类
-
第一种是超级用户一一用户名为root,它具有一切权限,只有进行系统维护(例如:建立用户等)或其他必要情形下才用超级用户登录,以避免系统出现安全问题。
-
第二种是系统用户(伪用户)一一是Linux系统正常工作所必需的用户。主要是为了满足相应的系统进程对文件属主的要求而建立的,专门用来运行 台进程和服务的用户,系统用户不能用来登录系统。例如: bin.daemon、adm、lp等用户
-
第三种是普通用户一一是为了让使用者能够使用Linux系统资源而建立的,我们的大多数用户属于此类。
2、在Linux中的组有两类
-
第一种是基本组(私有组): 建立账户时,若没有指定账户所属的组系统会建立一个和用户名相同的组,这个组就是基本组
-
第二种是附加组(公有组): 可以容纳多个用户,组中的用户都具有组所拥有的权利。
二.用户文件
1.用户账号文件
/etc/passwd
用vim打开etc下的passwd文件
语法:vim /etc/passwd
-
第一部分:root (蓝绿色)——账号名称
-
第二部分:x (紫色)——密码占位符,保存的用户密码
-
第三部分:0 (红色的第一个数字)——uid,用户的标识。系统用户的uid范围0~999,普通用户uid的范围>=1000
-
第四部分:0 (红色的第二个数字)——gid,组id,用户所在基本组的标识
-
第五部分:root(蓝色的)——个人资料,可以记录很多东西
-
第六部分:/root(绿色的)——主目录/个人目录
-
第七部分:/bin/bash——shell,默认的shell,用户激活时默认的是bash
3.用户密码文件
/etc/shadow
-
第一部分:root (蓝绿色)——登录名
-
第二部分:1.很长的一列(红色)——加密口令,密码。
用到的三种算法:
1.1MD5——$后面的数字是1,说明用的MD5的算法
1.22.SHA--512——$后面的数字是6,就说明用的是SHA--512的算法
1.33.SHA--256——$后面的数字是5,就说明用的是SHA--256的算法
1.44.$符号后面啥都没有,就表示没有设置密码,就是不需要密码都可以进去。
2.如果后面是*,代表不能用这个账户登录到系统中,
3.如果后面是!,标识密码已经被锁定了,
-
第三部分::后面的红色数字——最后一次修改时间。天数是从1970年1月1日开始算的
-
第四部分::后面的0(红色)——最小时间间隔,就是最少时间内不能被修改。
-
第五部分:99999(蓝色)——最大时间间隔,就是99999天内,必须把这个密码改了
-
第六部分:7(白色的)——警告时间,提前七天警告用户该修改密码了。
-
第七部分::::(一堆冒号)——不活动时间
-
第八部分:最后两个冒号之间啥都没有——失效时间,就是代表永远不会失效。
三.用户组文件
语法:vim /etc/group
-
第一部分:root(蓝绿色)——组名,
-
第二部分:x(紫色)——组的加密口令
-
第三部分:红色的数字——gid,区分不同组的id
四.创建用户
1.useradd
作用:创建一个用户或更新已有用户的信息
-u uid,指定一个用户id |
---|
-g gid,指定一个组id |
-G 指定附加组 |
-c 后面加双引号,双引号里面添加注释信息 |
-d 指定某个目录为用户的家目录 |
-s 指定用户使用的shell |
语法:useradd 选项 用户
例:创建张三用户
useradd zhangsan //创建了zhangsan这个用户
id zhangsan //查看zhangsan这个用户是否被创建成功了
[root@localhost -]# id zhangsan uid=1001(zhangsan) gid=1001(zhangsan) goups=1001(zhangsan)
例:创建lisi的目录,基本组叫zhangsan,指定uid为2001,注释是“普通用户”,指定目录为/root/aa,用户叫lisi
例:创建wanger的目录,基本组叫zhangsan,指定uid为2012,注释是“普通用户”,指定目录为/root/aa/wanger,用户叫wanger
五.设置密码
passwd
作用:给已经添加的用户设置密码
语法:passwd 要设置的用户名
-n 指定密码最短使用权限 |
---|
-x 指定密码最长使用权限 |
-w 制定警告时间 |
-d 删除用户密码 |
例:给lisi设置密码
六.修改信息
usermod
作用:修改用户的信息
语法:usermod 选项 用户名
-l 更改账户的名称 |
---|
-L 锁定用户账户,让用户账号不能登录到系统当中 |
-U 解锁用户账户 |
例:修改lisi的uid,改成2060
例:把lisi的基本组改到zhangsan下面
语法:usermod -g zhangsan lisi
七.删除用户
userdel
作用:删除用户
语法:userdel 用户名
-r 删除账户的同时,可以把用户的家目录也删掉
-
对比一下
例:删除xiaoming的用户
例:用-r的命令,把daming用户删掉
对比之下,不加-r的选项,用户的邮箱是还在的,查看邮箱
刚刚删除了xiaoming用户,现在邮箱里面还在,就要把邮箱里面的xiaoming也要删除掉
这样就把用户名和邮箱信息都删掉了。
八.创建组
groupadd
作用:创建一个新的组
语法:groupadd 选项 创建的组名
-g 指定新用户组的标识号,就是组id,默认每次创建一次值加一 |
---|
-n 将用户组的名字改为新名字 |
九.删除组
groupdel
作用:删除组
语法:groupdel 选项 组名
<!--想要查看已经创建的组,用vim /etc/passwd 命令,打开passwd的配置文件,下面会出现已经创建的组。-->
第六章 权限
文件 | 目录 | |
---|---|---|
r | 读取权限 | 可以列出目录下的文件 |
w | 修改权限 | 可以进行创建和删除等操作 |
x | 执行权限 | 能进入到该目录/切换到该目录 |
- | 没有权限 | 没有权限 |
1.chmod
作用:修改文件或目录的权限
语法:chmod 选项 mod 文件
u 所有者 |
---|
g 所属组 |
o 其他人 |
a 所有人 |
+ 增加权限 |
- 减少权限 |
= 赋予他给定的权限,并把他之前的权限覆盖了 |
2.文字设定法
+ - =
语法:chmod 对像 符号(+ - =)权限(r w x) 文件名
例1:给f1所有者增加执行的权限
例2:给f2的所属组和其他用户增加修改权限
例3:给file1文件的所有用户给全部权限
例4:让fi所有人都没有权限
例5:让f3的所有者和所属组只有读的权限,不能用减号
3.数字设定法
语法:chmod n1n2n3 文件名
n1 所有者权限 |
---|
n2 所属组权限 |
n3 其他人权限 |
- 没有权限 0 |
x 执行权限 1 |
w 修改权限 2 |
r 读取权限 4 |
例1:chmod 367 f1
意思就是f1 文件所有者有修改和执行权限,所属组有读取和修改权限,其他人有读取,修改和执行权限。
4.特殊权限
SUID
作用:是为了让一般用户执行某些程序的时候,再程序运行期间暂时获得该程序文件的所属者的权限。
Chmodu+s文件名称 |
---|
chmod 0777 文件 去掉该文件的 suid 权限 |
chmod 4777文件 增加该文件的 suid 权限 |
SGID
文件:如果SGID设置在二进制文件上面,则不论用户是谁,都可以再执行该程序的时候程序的所属组将变成该文件的所属组。
目录:如果SGID设置A目录上,则在该目录内创建的文件或者目录的所属组会变成A目录的所属组。
Chmodu+s文件名称 |
---|
chmod 0777文件 去掉该文件的 sgid 权限 |
chmod 2777文件 增加该文件的sgid 权限 |
chgrp
作用:更改文件或目录的所属组
语法:chgrp 选项 要更改的所属组 文件
例1:将test目录下的root用户的所属组变成普通用户的所属组
此时,test的所属组变成了dgw,也就是我的普通用户。
例2:切换到test目录,创建f1的文件,f2的目录,以长格式显示出来
将test目录下的f1文件和f2目录的所属组都改成普通用户的所属组
此时,在创建f3的文件和f4的目录,就会发现他们的所属组都是普通用户的所属组
sbit(Sticky Bit)
SBit 只针对目录有效,在具有SBit权限的目录下,如果该用户在该目录下拥有wx权限,则当用户在该目录下创建文件或者目录的时候,只有文件拥有者和root用户才有权限去删除里面的东西。
chmod 0777 文件··去掉该文件的 sbit 权限 |
---|
chmod 1777 文件增加该文件的 sbit 权限 |
5.拓展权限
1.acl
ACL(访问控制列表):给指定的用户分配指定的权限
2.查看acl权限
语法:man getfacl
查看权限-比ll查看的更直
3.设定acl权限
语法:setfacl 选项 文件名
选项: |
---|
-m: 设定 ACL 权限。 |
如果是给予用户 ACL 权限则使用u:用户名:权限格式赋予;e |
如果是给予组 ASL 权限,则使用g:组名:权限”格式赋予; |
-x: 删除指定的 ACL 权限; |
-b: 除所有的 ACL 权限; |
-d: 设定默认 ACL 权限。只对目录生效,指目录中新建立的文件拥有此默认权限; |
-k: 删除默认 ACL 权限; |
-r:递归设定ACL 权限。指设定的 ACL 权限会对目录下的所有子文件生效 |
例:创建大黑的用户
创建/project目录
创建mimi文件,将hello word 写到mimi里面
现在,只让文件的所属者有读取的权限
希望大黑这个组里的同学不仅能够读取秘密这个文件内容还可以像这个文件追加个人信息,大黑 男 18 小黑 男18
删除mimi
就会发现+号变成.了