RHCSA
day01
1.不要安装安全类的软件
2.确保window 64位 不是教育版
文件系统(磁盘上组织文件的一种方法和数据结构) ntfs —-支持的单个文件最大是4TB fat32 —-支持的最大单个文件是4G
3.开启虚拟机提示VT-X未开启(物理机没有开启虚拟化)
环境部署系统安装:
虚拟平台(vmware-workstation)+创建一台虚拟机+RHEL-server-8.5-x86_64.iso
(网络模式选择-仅主机 nat* 桥接;磁盘类型ide sata scsi nvme*)
面试:
linux必须创建分区: / swap(虚拟内存)
一般llinux 需要创建哪些分区: / /boot swap
登陆主通过用户名密码验证
linux系统管理员 默认root用户—–后期登录主机通过管理员登录
普通用户 redhat
判断命令是否成功,第一种执行后没有任何提示返回到下一个命令提示符 第二种有对应命令结果提示
1.查看主机ip地址
1 | #ip a ==ip addr |
1 | #ifconfig |
2.终端(标准的输入输出设备键盘鼠标显示器)
虚拟终端:ctrl+alt+F3 ~ F6 ctrl +alt+F2 /dev/tty3 /dev/tty4 命令行的终端
模拟终端: 图形化模拟的终端窗口
远程终端: 伪终端 通过远程软件基于远程连接的终端窗口 /dev/pts/0 /dev/pts/1 …
物理终端
1 | #tty 查看当前终端的设备文件 |
3.终端的命令提示符
1 | [root@localhost ~]# |
4.命令的标准格式
1 | 1.#命令 #ifconfig |
5.基础命令
1 | #ip a 查看ip地址 |
6.系统密码重置
1 | 重启客户机----在启动界面快速将鼠标点进去上下键切换一下(停留在启动界面)+e----找到linux开头的行在行尾添加------rd.break------- mount -o remount,rw /sysroot ----chroot /sysroot -----passwd root |
1.安装linux操作系统
2.第一天基础命令整理总结
3.破解密码
day02
cd 切换目录
1 | #cd chang directory |
su 用户切换
1 | su USERNAME 切换到指定用户,当前路径没有更改 |
快捷键
ctrl+c 终止当前名令执行
ctrl+l 清屏 == clear
ls 列出命令(查看目录下的所有文件)
1 | -l 长格式显示文件以及文件的属性 ls -l == ll |
linux基本思想一切皆文件—–7种文件类型
1 | -普通文本文件 |
/ | Linux文件系统的最上层根目录,其他所有目录均是该目录的子目录 |
---|---|
/bin | Binary的缩写,存放普通用户可执行的程序或命令 |
/boot | 存放系统启动时所需的文件,这些文件若损坏常会导致系统无法启动,一般不要改动 |
/dev | dev 是设备(device)的英文缩写。包含所有的设备文件 |
/etc | 存放了系统管理时要用到的各种配置文件和子目录 |
/home | 存放一般用户的个人目录 |
/lib | 是库(library)英文缩写,存放系统的各种库文件 |
/lib64 | 存放系统本身需要用到64位程序的共享函数库(library) |
/mnt /media | 可以临时将别的文件系统挂在这个目录下,即为其他的文件系统提供安装点 |
/opt | 该目录通常提供给较大型的第三方应用程序使用,例如Sun Staroffice、Corel WordPerfect,这可避免将文件分散至整个文件系统 |
/proc | 可以在这个目录下获取系统信息。这些信息是在内存中由系统自己产生的(内核) |
/root | 超级用户的个人目录,普通用户没有权限访问 |
/run | 保存自系统启动以来描述系统信息的文件(应用层的进程信息) |
/sbin | 和/bin类似,这些文件往往用来进行系统管理,只有root可使用 |
/srv | srv 是服务(server)的简写,服务启动之后需要访问的数据目录 |
/sys | 本目录是将内核的一些信息映射文件,以供应用程序所用 系统文件 |
/tmp | 用来存放不同程序执行时产生的临时文件。 |
/home | 存放一般用户的个人目录 |
/usr | 一般用户程序安装所在的目录,用于安装各种应用程序 |
/var | 通常各种系统日志文件放在这里 动态变化的数据文件 |
面试—–软链接和硬链接区别
在linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号inode。
(1)符号链接又叫软链接,和原文件不是一个文件。例如Windows的快捷方式,
作用特点:在指定路径查找某个文件访问快速便捷,删除源文件快捷方式不能访问
创建对象:文本文件目录文件都可以创建,并且可以跨文件系统
创建链接文件:ln -s 原文件 链接文件
如何判断是否是链接文件: l
(2)硬链接,
概念:多个文件名指向同一个Inode
作用特点:防止用户误删除,备份(仅对文件名备份)
创建对象:对目录文件不能创建,并且不可以跨文件系统
创建硬链接: ln 原文件 新文件
多个文件名是否指向同一个节点号,以及硬链接次数是否改变
touch FILENAME 创建文件
mkdir DIRNAME 创建目录
rm FILENAME 删除文件
rm -r DIRNAME 删除目录文件
cat FILENAME 查看文件
nano FILENAME 编辑文件
1 | [root@www ~]#touch aaa 在当前路径创建了aaa文件 |
1 | 创建硬链接只对文本件可以 |
***文件系统层级结构FHS
date
date命令用于显示或设置系统的时间与日期,语法格式为:“ date [+指定的格式]”。
用户只需在强大的date命令后输入以“+”号开头的参数,即可按照指定格式来输出系统的时间或日期,这样在日常工作时便可以把备份数据的命令与指定格式输出的时间信息结合到一起。例如,把打包后的文件自动按照“年-月-日”的格式打包成“backup-2020-9-1.tar.gz”,用户只需要看一眼文件名称就能大概了解到每个文件的备份时间了。date命令中常见的参数格式及作用如表2-4所示。
表2-4 date命令中的参数以及作用
参数 | 作用 |
---|---|
%S | 秒(00~59) |
%M | 分钟(00~59) |
%H | 小时(00~23) |
%I | 小时(00~12) |
%m | 月份(1~12) |
%p | 显示出AM或PM |
%a | 缩写的工作日名称(例如:Sun) |
%A | 完整的工作日名称(例如:Sunday) |
%b | 缩写的月份名称(例如:Jan) |
%B | 完整的月份名称(例如:January) |
%q | 季度(1~4) |
%y | 简写年份(例如:20) |
%Y | 完整年份(例如:2020) |
%d | 本月中的第几天 |
%j | 今年中的第几天 |
%n | 换行符(相当于按下回车键) |
%t | 跳格(相当于按下Tab键) |
按照默认格式查看当前系统时间的date命令如下所示:
1 | [root@kongd ~]# date |
按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间的date命令如下所示:
1 | [root@kongd ~]# date "+%Y-%m-%d %H:%M:%S" |
将系统的当前时间设置为2020年11月1日8点30分的date命令如下所示:
1 | [root@A /]# #date 月日时分年点秒 |
再次使用date命令并按照默认的格式查看当前的系统时间,如下所示:(月日时分年点秒)
1 | [root@kongd ~]# date |
date命令中的参数%j可用来查看今天是当年中的第几天。这个参数能够很好地区分备份时间的新旧,即数字越大,越靠近当前时间。该参数的使用方式以及显示结果如下所示:
1 | [root@kongd ~]# date "+%j" |
clock
显示计算机的时间和日期
hwclock -s 系统时间向硬件时间同步
hwclock -w 硬件时间向系统时间同步
timedatectl status
timedatectl命令用于设置系统的时间,英文全称为:“time date control”,语法格式为:“ timedatectl [参数]”。
发现电脑时间跟实际不符?如果只差几分钟的话,我们可以直接调整,但如果差几个小时,那么除了调整当前的时间,还有必要检查下时区了,timedatectl命令中的参数以及作用:
参数 | 作用 |
---|---|
status | 显示状态信息 |
list-timezones | 列出已知时区 |
set-time | 设置系统时间 |
set-timezone | 设置生效时区 |
查看系统时间与时区:
1 | [root@kongd ~]# timedatectl status |
如果您查到的时区不是上海(Asia/Shanghai),可以手动进行设置:
1 | [root@kongd ~]# timedatectl set-timezone Asia/Shanghai |
如果时间还是不正确,我们可以手动的修改系统日期:
1 | [root@kongd ~]# timedatectl set-time 2021-05-18 |
而如果想修改时间的话,也很简单:
1 | [root@kongd ~]# timedatectl set-time 9:30 |
[root@localhost ~]# localectl set-locale LANG=en_US
文件管理命令
touch 创建文本文件
stat FILENAME 查看文件详细属性
touch [-option…] FILENAME…
touch FILE1 FILE2 FILE3
touch /{FILE1,FILE2,FILE3}
touch {a..c}{1..3} a1 a2 a3 b1 b2 b3 c1 c2 c3
mkdir 创建目录
mkdir [-options..] DIRNAME
-p parents 指定父目录创建(从左向右依次创建多级目录)
-v verbose 详细信息 显示创建的详细结果
创建多级目录 mkdir -pv /1/2/3/4/5
tree 树状显示目录结构
rm 删除文件
rm [-options] FILENMAE/DIRNAME…
-f force 强制
-r 递归,递归删除目录文件
rm FILE1 FILE2
rm f* 删除以f开头的所有文件
rm *.txt
rm * 删除当前目录下所有文本文件
rm -f
rm -r d1
rm -rf dd1
du 查看系统文件占用磁盘大小 KB
-a 查看指定目录下所有文件占用的总大小,以及该目录下每个文件占用磁盘空间的大小
-s 只显示指定目录下所有文件占用磁盘的大小,不显示子目录
-h 显示大小可以进行单位转换
mv 移动文件
1 | mv [-options] 源文件名... 目标路径 |
cp 复制文件
cp [-options] 源文件名… 目标路径
-r 递归复制目录文件
-p 复制文件保持文件原属性
-a== -rp 复制目录保持目录文件的原属性
1 | [root@localhost test]# cp -p /test/a /pub 复制/test/a文件到 /pub目录,复制保持文件原属性 |
wget 下载文件
wget [-option…] URL
-P 指定下载文件到指定路径
-b 将下载进程放在后台运行
-c 断点续传
-t 指定下载尝试次数
-r 下载目录文件
-o
-O
1 | root@localhost test]# wget http://mirrors.163.com/centos/8/infra/x86_64/infra-common/Packages/a/awscli-1.18.156-1.el8.noarch.rpm ---把awscli-1.18.156-1.el8.noarch.rpm 下载到当前路径 |
day03
查看目录文件: ls
查看文本文件内容
cat 将文件内容输出到终端,查看文件内容(正序)
-n 查看文件内容显示标号
tac 将文件内容输出到终端,查看文件内容(逆序显示)
more 一般对于大文件查看通过终端窗口可以分页显示,最后所有内容输出到终端查看显示
less 打开阅读,分页显示,退出需要通过q
?关键字 或者 /关键字
n 向上匹配关键字
N 向下匹配关键字
head 查看文件的前十行信息
-n 指定显示的行数
-n 3
tail 查看文件的后十行信息
-n 3
-f follow 追加显示文件内容 ctrl+c
tail -f /var/log/messages
文本编辑
1.nano
2.vi / vim *** 文本编辑器
终端最后一行
显示新文件或者文件名几行几个字符或者没有任何信息 (执行便捷命令)
–insert— (编辑文件内容)
:末行模式
命令模式:
dd 删除光标所在行
d+enter 删除光标所在行和光标的下一行
dG 删除光标所在行以及文档尾的所有行
dgg 删除光标所在行以及文档首的所有行
d^ 删除光标到行首的内容,不包含光标字符
d$ 删除光标到行尾,包含的光标所在字符
x 删除光标所在字符
G 跳转到文档尾
gg 跳转到文档首
4G 跳转到第四行
^ 行首
$ 行尾
yy 复制
4yy 复制从光标开始一共四行内容
cc 剪切
4cc 剪切从光标开始一共四行内容
p 粘贴(粘贴在光标所在的下一行)
u 向左撤销(返回上一次的编辑状态)
ctrl+r 重做(向右撤销,返回到近期编辑的状态)
插入模式:
a 在光标后插入内容
A 光标所在行的行尾
i 在光标前插入内容
I 光标所在行的行首
o 进入插入模式,在光标的下一行添加内容
O 进入插入模式,在光标的上一行添加内容
s 删除光标所在字符,进入插入模式
S 删除光标所在行,进入插入模式
末行模式:
:q 退出
:q! 强制退出
:w 保存
:wq 保存退出 == ZZ 命令模式
:wq! 强制保存退出
:10 跳转到第十行
:r FILENMAE 将指定文件的内容读取到光标所在下一行
:%s %匹配符,表示匹配所有行 s 替换命令 /要替换的字符/替换后的字符/ 替换的是每一行第一次匹配到的关键字 g 替换匹配到的所有关键字 %s /0/1/g
:set nu 显示行号
:set nonu 取消行号
/关键字 快速匹配关键字所在行的内容
:noh 取消高亮标记
vim -o /etc/passwd /etc/shadow 多个文件水平分割显示内容
-O /etc/passwd /etc/shadow 左右分屏显示文件内容
ctrl+w+w
vim + /etc/passwd 打开该文件进入文档尾
3.”>”或“>>”实现文件编辑
echo 打印命令
1 | #echo this is test (标准输入输出命令) |
$引用变量
1 | #name=zhangsan |
$?显示上一条命令的退出码 0成功 1-255错误状态
1 | [root@localhost ~]# echo ${name} |
| 管道符(将前面命令的标准输出作为后面命令的标准输入)—无名管道
1 | 显示一个文件的第十行 |
**p 标识的管道文件(命名管道)
1 | 开启两个终端 |
三种引号区别
‘ 单引号’ 强引用,不识别引号中特殊字符的特殊含义 echo ‘$PS1’
“ 双引号” 弱引用,识别特殊含义的字符, echo “$PS1” —如果是变量单引和双引有区别
`反引号` 命令替换符 == $()
1 | [root@localhost /]# echo "根目录下所有的文件\`ls`" |
“>” 输出重定向符 (将前面命令的输出结果写入指定文件)
1 | echo helloworld > FILE 将helloworld输出结果通过输出重定向符写入指定文件,当文件不存在会创建该文件 |
“>>” 追加重定向符
1 | echo this is test >> FILENAME |
< 输入重定向符
1 | cat < /etc/passwd |
4.文件编辑<< 终止结束符
1 | [root@localhost /]# cat << EOF 查看内容,匹配终止结束符结束输入 |
文件描述符:0 文件标准输入符1标准(正确)输出描述符 2错误输出描述符
1 | cat 0< /etc/passwd |
文件内容处理相关命令—(行)
grep 文本过滤显示命令
命令格式: grep [-options…] 关键字 文件名…
#grep root /etc/passwd 将/etc/passwd 文件中有root关键字的行打印显示
-v 反过滤,把没有关键字的行打印显示
-o 只显示匹配到的关键字
-c 显示匹配关键字的行数
-i 忽略大小写
-n 过滤显示行号
-w 按照单词过滤
-A 2 显示关键字以及下两行信息
-B 2 显示关键字以及上两行信息
-C 3 显示关键字以及上下三行信息
1 | 过滤指定文件/etc/passwd将文件中有nologin关键字的行写入login文件,并按照原文件的顺序写入。 |
^ 以什么开头 ^q ^#
$ 以什么结尾 a$
^$ 空白行
[] 定义取值范围,该范围内的任意单个字符 [1-9] grep ^[0-9] FILENAME 开头是0-9任意一个数字的行显示
[^] ^取反 ^[^0-9] ^[!0-9]
cut 文本内容剪切命令
-d 指定文件内容的分割符
-f 指定截取的字段
1 | #cut -d : -f 1 /etc/passwd |
-c 指定字符截取 cut -c 1-3 /etc/passwd
wc 文本统计命令 行 单词书 字节数 文件名
-l 只统计行数
-w 只统计单词数
-c 统计字节数
-m 统计字符数
当前系统共有多少用户
1 | [root@localhost /]# echo 当前系统共有用户\`wc -l /etc/passwd | cut -d " " -f 1`个 > file |
sort 文本排序 默认按照字符排序
-n 按照数值大小升序显示
-r逆序显示
-t 指定分隔符
-k 指定字段
-u unique 去重 ==sort a.txt | uniq
1 | [root@localhost /]# sort -t : -k 3 -n /etc/passwd |
uniq 去重命令(重复行相邻)
-c 显示每一行重复的次数
-d 只显示重复出现的行
-D 显示重复出现的所有行
tr 字符替换
1 | echo abcde | tr -t a 1 |
day04
文件查找4种方式
whereis 查询范围通过系统环境变量路径搜索文件$PATH,所有的文件
which 查询范围通过系统环境变量路径搜索文件$PATH,找的是可执行文件(查找命令文件)
locate 全局搜索,但是需要在搜素前将系统文件导入数据库updatedb;查找速度快
*find 全局搜索文件。
注意事项:
1)-prune 必须和 -path,-o 一起使用
2)-prune -o 的顺序不 能调换
3)-name等必须放在-prune -o后面才能使用
! -a -o
eg: find . -path ./tmp -prune -o -name "*.txt"
[root@localhost test]# find . ! -name “out*” -a -name “*.txt”
find / -name FILENAME -type f
find -name FILENAME
find ../.. -name FILENAME
-exec -ok
#-exec -ok find 查找文件的结果通过 可以将前面命令的结果默认通过换 行识别为多个文件参数通过后面命令进行处理
find / -type f -exec cp -p {} /test ;
find / -type f -ok cp -p {} /test ;
[root@localhost test]# find . -type f |xargs -I {} cp {} /test
-I 将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
find
find命令格式:
1 find path -option 【 -print 】 【 -exec -ok |xargs |grep 】 【 command {} \; 】
find命令的参数:
1)path:要查找的目录路径。
~ 表示$HOME目录
. 表示当前目录
/ 表示根目录
2)print:表示将结果输出到标准输出。
3)exec:对匹配的文件执行该参数所给出的shell命令。
形式为command {} ;,注意{}与;之间有空格
4)ok:与exec作用相同,
区别在于,在执行命令之前,都会给出提示,让用户确认是否执行
5)|xargs 与exec作用相同 ,起承接作用
区别在于 |xargs 主要用于承接删除操作 ,而 -exec 都可用 如复制、移动、重命名等
6)options :表示查找方式
options常用的有下选项:
1 | -name filename #查找名为filename的文件 |
下面通过一些简单的例子来介绍下find的常规用法:
1、按名字查找
在当前目录及子目录中,查找大写字母开头的txt文件
$ find . -name '[A-Z]*.txt' -print
在/etc及其子目录中,查找host开头的文件
$ find /etc -name 'host*' -print
在$HOME目录及其子目录中,查找所有文件
$ find ~ -name '*' -print
在当前目录及子目录中,查找不是out开头的txt文件
$ find . -name "out*" -prune -o -name "*.txt" -print
2、按目录查找
在当前目录除aa之外的子目录内搜索 txt文件
$ find . -path "./aa" -prune -o -name "*.txt" -print
在当前目录及除aa和bb之外的子目录中查找txt文件
$ find . −path′./dir0′−o−path′./dir1′−path′./dir0′−o−path′./dir1′ -a -prune -o -name '*.txt' -print
注意:在1、2处都需要加空格,否则会出现如图所示的报错
在3处加不加 -a都可以
在当前目录,不再子目录中,查找txt文件
$ find . ! -name "." -type d -prune -o -type f -name "*.txt" -print
或者 find . -name *.txt -type f -print
3、按权限查找
在当前目录及子目录中,查找属主具有读写执行,其他具有读执行权限的文件
$ find . -perm 755 -print
查找用户有写权限或者组用户有写权限的文件或目录
find ./ -perm /220
find ./ -perm /u+w,g+w
find ./ -perm /u=w,g=w
4、按类型查找 (b/d/c/p/l/f )
在当前目录及子目录下,查找符号链接文件
$ find . -type l -print
5、按属主及属组
查找属主是www的文件
$ find / -user www -type f -print
查找属主被删除的文件
$ find / -nouser -type f -print
查找属组 mysql 的文件
$ find / -group mysql -type f -print
查找用户组被删掉的文件
$ find / -nogroup -type f -print
6、按时间查找
查找2天内被更改过的文件
$ find . -mtime -2 -type f -print
查找2天前被更改过的文件
$ find . -mtime +2 -type f -print
查找一天内被访问的文件
$ find . -atime -1 -type f -print
查找一天前被访问的文件
$ find . -atime +1 -type f -print
查找一天内状态被改变的文件
$ find . -ctime -1 -type f -print
查找一天前状态被改变的文件
$ find . -ctime +1 -type f -print
查找10分钟以前状态被改变的文件
$ find . -cmin +10 -type f -print
7、按文件新旧
查找比 aa.txt 新的文件
$ find . -newer "aa.txt" -type f -print
查找比 aa.txt 旧的文件
$ find . ! -newer "aa.txt" -type f -print
查找比aa.txt新,比bb.txt旧的文件
$ find . -newer 'aa.txt' ! -newer 'bb.txt' -type f -print
8、按大小查找
查找超过1M的文件
$ find / -size +1M -type f -print
查找等于6字节的文件
$ find . -size 6c -print
查找小于32k的文件
$ find . -size -32k -print
9、执行命令
1)查找 del.txt 并删除,删除前提示确认
$ find . -name 'del.txt' -ok rm {} \;
2) 查找 aa.txt 并备份为aa.txt.bak
$ find . -name 'aa.txt' -exec cp {} {}.bak \;
3)查当前目录下的所有普通文件
# find . -type f -exec ls -l {} \;
-rw-r–r– 1 root root 34928 2003-02-25 ./conf/httpd.conf
-rw-r–r– 1 root root 12959 2003-02-25 ./conf/magic
-rw-r–r– 1 root root 180 2003-02-25 ./conf.d/README
查当前目录下的所有普通文件,并在 - exec 选项中使用 ls -l 命令将它们列出
4)在 /logs 目录中查找更改时间在5日以前的文件并删除它们
$ find logs -type f -mtime +5 -exec -ok rm {} ;
5)查询当天修改过的文件
# find ./ -mtime -1 -type f -exec ls -l {} ;
6)查询文件并询问是否要显示
# find ./ -mtime -1 -type f -ok ls -l {} \;
< ls … ./classDB.inc.php > ? y
-rw-r–r– 1 cnscn cnscn 13709 1月 12 12:22 ./classDB.inc.php
# find ./ -mtime -1 -type f -ok ls -l {} \;
< ls … ./classDB.inc.php > ? n
文件压缩解压缩
tar
-c
-x
-t
-v
-f
-j
-J
-z
-C
文件传输:
window –linux xftp实现文件传送
rz FILENAME 接收 sz 传送 —lrzsz包
linux–linux
文件发送: scp mima root@192.168.220.154:/root
文件接收: scp root@192.168.220.154:/root/mima /passwd
scp -r
[root@162 ~]# sftp 192.168.220.154 发起sftp的远程连接
sftp> put file
sftp> get filename
文件管理名
touch > >> vi/vim nano
mkdir
rm -rf
cp
mv
wget
cat tac more less head tail (vim nano) grep
vim**** nano > >>
echo this is test > a.txt
cat <
grep wc cut sort uniq tr
whereis
which
locate
find****
tar
bash 特性
1.bzip and bzip2
用途:
制作压缩文件、解开压缩文件
命令格式:
gzip [-9] 文件名…
bzip2 [-9] 文件名…
gzip -d .gz格式的压缩文件
bzip2 -d *.bz2格式的压缩文件
常用命令选项:
-9:表示高压缩比,多在创建压缩包时用
-d:用于解开已经压缩过的文件
2.tar
用途:
制作归档文件、释放归档文件
格式:
tar [选项]… 归档文件名 源文件或目录
tar [选项]… 归档文件名 [-C 目标目录]
alias 定义命令别名
alias 别名=”命令本身”
l临时别名,仅在当前终端运行状态下生效
vim /etc/bashrc 1–exit 2–bash 3–source /etc/bashrc
永久别名对系统所有用户都生效
vim ~/.bashrc
永久别名仅对当前用生效
定义别名
定义别名的方法很简单,格式如下所示:
alias [name[=value]]
这里需要注意的是:
等号(=)前后不能有空格,否则就会出现语法错误了。
如果value中有空格或tab,则value一定要使用引号(单、双引号都行)括起来。
了解了别名的基础知识之后,我们来看一个定义别名的例子:
[roc@roclinux ~]$ alias vi=’vim’
这个例子定义了一个 vim 命令的别名,以后,当我们执行 vi 命令时,其实真正执行的是 vim 命令。
如何查看别名
如果太热衷于设置别名,那么你就会面临着要记住很多别名的困扰,因此,学会查看所有已设置的别名,就显得尤为重要了。
查看别名的方法也很简单,直接输入 alias 命令,不加任何选项和参数即可:
命令缓存
1.建立命令缓存
执行命令自动在缓存建立
hash -p /usr/bin/touch touch
hash -p /usr/bin/touch chuangjian
2.删除缓存
hash -d chuangjian
hash -r 清空所有缓存
exit终端
缓存特点: 命令缓存—alias–名令文件
1 | [root@162 ~]# hash |
history
展示数行之前的历史命令。命令编号前面前缀上感叹号可以再次执行这个命令。如果我们需要编辑历史列表中的命令,我们可以按下 Ctrl + r 并输入与命令相关的第一个字符。我们可以看到的命令会自动补全,可以根据我们目前的需要来编辑它:
命令列表会保存在一个叫 .bash_history 的文件里。history 命令是一个非常有用的用于减少输入次数的工具,特别是进行命令行编辑的时候。默认情况下,bash 保留最后输入的500个命令,不过可以通过修改 HISTSIZE 环境变量来增加:
Linux history 命令
但上述变化,在我们的下一次启动不会保留。为了保持 HISTSIZE 变量的变化,我们需要通过手工修改文件编辑:
- #要设置 history 长度,请看bash(1)文档中的 HISTSIZE 和 HISTFILESIZE
- HISTSIZE=1000
重要: 我们的更改不会立刻生效,除非我们重启了 shell 。
day05
用户组
AAA
用户类别
管理员 只有一个UID=0
普通用户 1-65535
系统用户 1-999
系统管理账号:1-200
系统普通账号 : 201-999
一般用户 1000-
公有模式 users ** 私有模式 用户在自己的组当中(创建用户会创建一个和用户同名的组)
1.用户创建
useradd == adduser 添加用户或者更新添加用户的基本信息
1 | #useradd USERNAME |
2.查看系统中用户信息
1)用户的配置文件(/etc/passwd)
用户名:密码占位符: 用户唯一id值:基本组的组id:描述字段(注释):家目录:shell
2)id 判断系统某一个用户是否存在
3)grep ^USERNAME /etc/passwd
3.用户修改
usermod [options] LOGIN
-c 修改描述名称
-d 指定家目录
-g 修改基本组
-G 修改附属组 会将用户以指定的附属组进行修改
-l 修改登录名称
-L 锁定用户
-s 修改shell
-u 修改UID
-U 解锁
4.删除用户
userdel -r USERNAME 完整删除一个用户相关的所有信息
注: 也会删除用户的基本组,但是如果基本组当中存在的其他的用户通过userdel -r 不能删除该基本组
userdel USERNAME 只删除用户配置文件相关信息,如果要完整删除用户需要手动删除用户的家目录/home/USERNAME和邮件文件/var/spool/mail/USERNAME
组类别
管理组 只有一个
普通组 1-65535
基本组(默认组、主组) 一个用户只有一个基本组
附属组 一个用户可以有多
1.创建组
groupadd GROUPNAME
-g 指定gid
-r 指定为系统组(1-999)
groupadd -g 456 -r GROUPNAME
2.查看组信息
1)查看组配置文件/etc/group
组名:组密码占位符:组id:组中的用户名(把当前组作为附属组的用户名)
2)grep ^USERNAME /etc/group
3)组修改
groupmod 修改组信息
-g 修改组id
-n 修改组名
groupmod -n grp1 g1 将g1组名改为grp1
4)删除组
groupdel GROUPNAME
只能删除附属组组当中有用户也可以删除,不能删除基本组
用户密码管理
1.设置密码
passwd USERNAME 用户密码修改,设置用户密码
passwd / chage更改密码参数
-l 锁定用户密码
-u 解锁用户
-x
-n
-w
-d
[root@162 ~]# echo mima | passwd –stdin root
Changing password for user root.
passwd: all authentication tokens updated successfully.
chpasswd 批量更改
echo root:mima | chpasswd
vim file
root:mima1
zhangsan:mima2
cat file | chpasswd
chpasswd < file
2.查看密码信息 /etc/shadow
用户名:密码:最后一次设置密码的时间(1970.1.1开始统计到设置密码的天数):密码最短时间:最长:警告时间:宽限时间:过期精确时间(1970.1.1开始统计到密码失效的天数)
组密码管理
1)设置组密码
gpasswd GROUPNAME
-a 将指定用户拉到某一个组
-d 从组中移除用户
-M 设置组成员列表
-r 删除组密码
-R 锁定组密码(解锁–重置组密码)
-A 设置组长(可以将添加,删除组中用户)
newgrp 切换新组
注:作为管理员切换组不需要组密码,如果是组成员也不需要验证组密码
2)查看组密码/etc/gshadow
组名:组密码:组长:组成员
补充:
useradd haha /etc/passwd /etc/shadow /etc/group /etc/gshadow
/home/USERNAME 家目录
/var/spool/mail/USERNAME 邮件文件
默认定义用户添加的相关参数值:/etc/login.defs /etc/default/useradd
实验:创建学习组1,学习组2 ;他们的组gid分别为1111,2222,添加成员并将uid为1088,
和uid为1066的成员为两组的组长,其中一组组长有一个‘外号’laoda。
不同学习组进入需要密码才能进入(设置密码);即使密码泄露也不希望组之外的成员进入。
groupadd -g 1111 g1
groupadd g2
groupmod -g 2222 g2
useradd u1
usermod -u 1088 u1
useradd u2
usermod -u 1066 u2
gpasswd -a u1 g1
gpasswd -a u2 g2
gpasswd -A u1 g1
gpasswd -A u2 g2
usermod -c laoda u1
gpasswd g1
gpasswd g2
gpasswd -R g1
gpasswd -R g2
kali
sudo用户授权
通过管理员给普通用户下发执行命令的特权
vim /etc/sudoers
redhat ALL=(ALL) NOPASSWD: /usr/sbin/useradd
提权用户 提权用户所在的主机名=(授权用户) 提权不需要密码验证: 提取可执行的命令
$sudo useradd u1
su
su redhat
su - redhat
w | who | users查看系统通过哪些用户基于终端登录
last 查看当前主机近期时间里通过哪些用户验证登录当前主机
whoami 查看当前终端通过哪一个用户身份登录
权限
[root@162 ~]# ll
total 40
-rw-r–r–. 1 root root 0 Feb 13 21:15 111
系统权限在文件中标识
2-11
2-10 9个字符标识一般权限r w x
9个字符每三个字符一组标记权限 所属用户 所属组 其他用户
用户如何匹配对应文件的权限
111该文件所属用户是root用户,对于root用户对111文件现在拥有rw-
11 扩展权限标识符 .没有扩展权限 +有扩展权限
系统当中权限的描述方式:
字符形式: rwx (系统权限的标识)
数值形式: 4=r 2=w 1=x 对于111文件所属用户root他的权限6 所属组的权限4 其他用户的权限4
(用户方便描述权限)
系统中文件默认的权限值
**权限掩码:(权限过滤符) umask = 022 033
目录最高权限:777 755 744
文本文件的权限: 666 644 644
6 6 6
rw- rw- rw-
0 3 3 0 4 4 0 5 5
— -wx -wx r-x r-x
rw- r– r–
6 4 4
权限修改:chmod
chmod 权限 FILENAME(管理员可以更改所有用户创建文件的权限;但是普通用户只能更改自己创建的文件(文件的所属用户是当前用户))
字符形式: chmod u=rwx,g+wx,o-x a chmod ugo=rw FILENAME == chmod a=rw FILENAME
数值形式: chmod 644 FILENAME chmod 66 FILENAME 066
chown 更改文件所属用户 chown 所属用户名 FILENAME chown u1 a chown u2:u2 a chown :u4 a
chgrp 更改文件的所属组 chgrp 所属组(组名) FIELNAME
权限匹配规则:(没有扩展权限时)
标准定义: 安全上下文
通过发起者用户执行一个可执行文件(命令),匹配一个目标文件时,判断执行文件的发起者身份是否是目标文件的的所属用户,如果是直接匹配所属用户权限,如果不是开始匹配是否是文件所组的用户如果是直接匹配所属组权限,不是则直接匹配其他用户的权限。
(首先判断发起用户,是否是文件的所属用户,如果是直接匹配所属用户权限,如果不是开始匹配是否是文件所组的用户如果是直接匹配所属组权限,不是则直接匹配其他用户的权限。)
文件权限字符含义
d目录: r 查看(列出)目录下的文件信息 ls
w 能够在指定目录中创建文件 touch > >> vim nano mkdir mv cp (对于普通用户如果没有写权限,则不能删除该目录下的文件)
x 打开该目录 cd
-文本文件: r 查看该文件的内容
w 编辑文件内容
x 运行文本内容(命令文件)
1 | [redhat@162 ~]$ cd /root |
1 | [root@162 /]# touch file |
特殊权限
chmod u+s,o+s,o+t FILENAME 是在文件对应的执行位显示,如果文件默认没有执行权限特殊权限大写标识,如果有特殊权限特殊权限字符小写标识。
chmod 7644 FILENAME 特殊权限是7(u+s=4,g+s=2.o+t=1) 644标准权限
u+s =4 所属用户的强制位(对于可执行文件的所属用户禁锢) —1.对可执行文件设置有意义
g+s =2 所属组的强制位(对于可执行文件的所属组禁锢)(对目录文件设置–目录文件的所属组禁锢;表示任何用户创建文件的所属组都是当前目录的所属组)
o+t =1 sticky冒险位(对一个目录文件存在冒险位,用户只能删除自己文件不能删除别人的文件)
1 | [root@162 /]# ll /usr/bin/touch |
1 | 实际案例: |
1 | g+s 对目录设置 |
1 | 目录o+t |
扩展权限:
1 | getfacl FILENAME 查看文件的权限列表 |
day06
网络管理
三种网络模式
仅主机: 虚拟机都为仅主机模式,多台虚拟可以互ping; 物理机 –ping —->虚拟机
nat: 虚拟机都为nat模式,多台虚拟可以互ping; 物理机 <—–ping —->虚拟机 只要物理能访问外网虚拟机就能上网
桥接: 虚拟机都为桥接模式,多台虚拟可以互ping;物理机 <—–ping —->虚拟机 (同一网段的地址);可以访问外网(当前主机的地址能不能访问外网)
网卡动态和静态地址配置
1.虚拟图形界面
2.nmtui 连接图形化界面进行配置(键盘)
3.nm-connection-editor 鼠标控制
4.网卡配置文件
[root@162 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet 网卡类型 Ethernet真实网卡
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp 网卡模式dhcp动态模式 none 静态模式
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens160 网卡配置文件名
UUID=29a02f09-4754-4f2f-a91b-b0fd3cbf7987
DEVICE=ens160 网卡设备名
ONBOOT=no 网卡开机后是否自动连接
IPV6_PRIVACY=no
注:RHEL7- 一个网卡设备可以对应多个网卡配置文件,但是当前网卡默认只能连接一个网卡配置
*****5.nmcli 网络管理工具
nmcli device show 显示主机所有网络设备详细信息
status 显示主机设备和会话(网卡配置文件)
connect 将设备和指定会话文件链接
nmcli connection show
modify
edit
add
delete
up
down
1 | nmcli配置静态ip地址 |
1 | [root@162 ~]# nmcli connection edit ens160 --进入编辑网卡配置文件 |
1 | [root@162 ~]# nmcli connection add type ethernet ifname ens160 con-name work |
day07
软件安装
1.获取软件 包
(1)本地获取
本地光盘存储介质获取
默认路径:/run/media/root/RHEL-8-1-0-BaseOS-x86_64
手动挂载: mkdir /sr0
mount /dev/sr0 /sr0 (临时生效)
挂载命令 设备名称 挂载点目录
取消挂载: 注意不能再挂载点目录中取消
umount 设备名
umount 挂载点
(2)网络(上网)
网易开源镜像站
阿里开源镜像站
清华大学
2.安装软包RHEL8
/mnt/AppStream/Packages
/mnt/BaseOS/Packages
#cd /mnt/AppStream/Packages
rpm -ivh zsh-html-5.5.1-6.el8.noarch.rpm
-qpi 包名 查看一个软件包的详细信息
-evh 卸载软件包
-qa 查询已安装的所有软件包 rpm -qa | grep 软件名
-ql 查看指定软件的文件列表
-qf 查看某个文件是由哪一个包提供
-Uvh 更新软件包
-qd 查询软件的事例文档
[root@localhost ~]# rpm -ivh https://down.qq.com/qqweb/LinuxQQ/linuxqq_2.0.0-b2-1089_x86_64.rpm
dnf/yum
能够自动解决依赖关系(自动识别依赖包并且下载对应依赖包,一次性安装无需手动指定)
1.获取软件包
(1)本地安装
mount /dev/sr0 /mnt
(2)网络安装
2.安装软件包
配置yum配置文件—-/etc/yum.repos.d/*.repo
vim /etc/yum.repos.d/base.repo
[AppStream] 源标示名称(名称自定义)
name=App 源名称
baseurl=file:///mnt/AppStream
gpgcheck=0
[BaseOS]
name=base
baseurl=file:///mnt/BaseOS
gpgcheck=0
#dnf install httpd -y
repolist 显示仓库状态
remove 移除,卸载软件
update
源码安装
解包 —— tar
解包、释放出源代码文件
配置 —— ./configure
针对当前系统、软件环境,配置好安装参数
编译 —— make
将源代码文件变为二进制的可执行程序
安装 —— make install
将编译好的程序文件复制到系统中
mkdir /test
rm -rf /test/*
mv tar-1.29.tar.gz /test
cd /test
ll
tar -zxvf tar-1.29.tar.gz
ll
dnf remove tar -y
touch 1
tar -cvzf 1.tar.gz 1 –系统默认的tar工具移除
ll
cd tar-1.29/
yum install gcc* -y –安装编译器
./configure —不能通过管理员运行
su redhat
rm -rf config.log
./configure –通过普通用户进行配置、
exit
make
make install
ll
tree
which tar
cd ..
ll
tar -zcvf 1.tar.gz 1
hash
hash -d tar
tar -zcvf 1.tar.gz 1
ll
history
ps pstree top kill PID killall 进程名称 & ctrl-z jobs fg bg nohup
top ***
磁盘管理
1.磁盘设备基本单位 扇区=512 数据层 1块 = 4KB
2.主机启动顺序
主机加电开机+bios硬件自检+mbr+grub2+启动内核+initrams+加载系统系统文件
3.mbr 默认只记录四个分区表项,但是可以把其中一个主分区作为扩展分区在扩展分区中可以分多个逻辑分区
3主分区+1扩展分区(n逻辑分区)
主分区
为什么创建多个分区:通过不同分区可以管理不同类型的数据文件;通过多个分区设置不同的文件系统类型,来存放不同数据类型的文件。
如何创建分区
1.条件
至少需要一块硬盘;有剩余空间
lsblk 可以显示系统所有块设备
2.磁盘管理工具创建分区
fdisk /dev/nvme0n2
n 创建新的分区 d删除分区 p打印分区列表 w 保存退 q退出不存
3.设置文件系统类型(格式化)
[root@localhost ~]# mkfs.xfs /dev/nvme0n2p2
4.使用分区
临时挂载
mkdir /p1
mount /dev/nvme0n2p1 /p1
umount /p1
永久挂载
vim /etc/fstab
设备名(UUID) 挂载点目录 文件系统类型 参数 开机备份 开机检查
mount -a 在当前主机运行状态下挂载所有加载/etc/fstab 文件设备新添加设信息
reboot 重启加载文件
blkid 查看设备id (设备的文件系统类型)
注: 一个文件系统可以同时挂载到多个挂点目录;多个文件系统挂载到一个挂载点目录,但是通过挂载点查看的是最后一次连接文件系统信息。