2023-08-17 16:37阅读: 167评论: 0推荐: 0

linux系统命令

操作系统

操作系统分为windows和linux

linux发展历程:

unix ----linux -----安卓/ios/macos

windows:管理员admin,命令不区分大小写

linux:管理员root,命令严格区分大小写!(⭐)

命令解释器bash、shell

命令行编辑的几个辅助操作:

Tab键:自动补齐
反斜杠\:强制换行
Ctrl + U:清空至行首
Ctrl + K:清空至行尾
Ctrl + L :清屏
ctrl + c 停止本次命令的编辑
ctrl shift + 放大字体
ctrl - 缩小字体
选中即复制
鼠标滚轮按下即粘贴

用户管理:

普通用户
管理员 root
su:切换用户时不改变位置
su -:切换用户时将目录改为切换用户的家目录(安全)
su - 切换用户为管理员,那么再次输入su -为重新登录用户
su - 用户名称 切换普通用户

命令行格式:

[root@localhost ]#
第一个root是用户
第二个localhost是主机名
第三个是当前位置
~:当前用户的家目录
格式:命令字 [选项][参数]
选项:功能
参数:命令的执行对象
选项:通过-引导 短格式-长格式--
两个短格式的选项可以合并 -a -l -al

(⭐)linux目录:

Linux所有的内容都是以文件或目录的形式显示,并且严格区分大小写

/ 根目录一个大的文件夹
/boot:用于引导操作系统
/etc :存放配置文件
/root:管理员的家目录
/home:普通用户的家目录
/dev:存放硬件设备的目录

目录操作命令:

pwd
# pwd显示的一定是绝对路径!
cd 切换目录 格式:cd 要切换的目录
路径:
绝对路径:从根目录开始的路径
相对路径:直接切换到当前目录之下的目录
cd .. 切换到上级目录
ls 查看当前目录内容 格式:ls [选项 参数(目录)]
选项:
-a 显示全部内容包括隐藏文件 名称前带.的是隐藏文件
-l 显示详细信息:
[root@localhost ~]# ls -l
drwxr-xr-x. 2 root root 6 4月 24 14:45 桌面
-rw-------. 1 root root 1839 4月 24 14:42 anaconda-ks.cfg
第一部分:项目 -文件 d目录
第二部分:权限 rwx读写执行
第三部分:归属
-d 查看当前目录本身
.当前目录 ..上级目录
--color:以不同颜色区分不同类型文件,默认开启,关闭:--color=none
mkdir 创建目录 格式:mkdir [选项] 目录名称
-p 迭代创建
mkdir -p jtxy/{zhangsan,lisi,wangwu}

文件操作命令:

touch
cp 选项 源文件 复制成功的文件
例子:cp /root/aa /home/bb 将root下的aa复制到/home下并改名叫bb
-r 同时复制目录内容
mv 选项 源文件 复制成功的文件
重命名:将文件重新移动到当前位置相当于改名
例子:mv /opt/aa /opt/bb
移动目录时不需要加-r选项

(⭐)复制和移动的区别?

复制:是在目标位置创建一个相同的文件,详细信息(权限,所有者,属组,安全类型上下文等)根据对方目录决定,复制目录需要加-r
移动:将当前内容移动到对方目录,详细信息不变
rm 删除
选项:
-r 删除目录及内容
-f 无需确认
(⭐注意rmdir只能删除空目录!) rmdir 删除空目录
ln
软链接:相当于快捷方式
ln -s /root/aa /opt/jtxy
硬链接:相当于副本文件

试题一

文件内容操作命令

cat 文件名称: 正序查看文件内容
tac 文件名称: 倒叙查看文件内容
(⭐) less 文件名称: 全屏显示文件内容
操作:滚轮可以上下查看,回车。空格翻到下一页,b翻到上一页,q退出
more 文件名称: 正序查看一部分文件内容(分屏查看文件内容)
head 文件名称:查看文件前几行 默认查看前十行
选项:
-n: n为行数
tail 文件名称:查看文件后几行 默认查看后十行
选项:
-n: n为行数

查找命令

(⭐) find [查找范围] [查找条件]
选项:
-name 按照文件名称查找
find /root/ -name "aa" #查找/root目录下名称为aa的内容
find /root/ -name "a*" #查找/root目录下以a开头的文件
-type 按照文件类型查找
find /root/ -name "aa" -type d #查找/root目录下目录名称为aa的内容
find /root/ -name "aa" -type f #查找/root目录下文件名称为aa的内容
-user 按照文件归属查找
与:条件都满足 -a 默认
或:满足一个即可 -o
非:查找不满足的 !
注意:-a和-o是放在选项之间,!放在选项之前
例子: (⭐)find /etc/ -name "a*" -o -name "b*" #查找名称以a开头或者以b开头的内容
find / ! -name "aa" # 在根目录查找名称不是aa的
(⭐) grep [选项] 查找条件 目标文件
grep "a" /root/anaconda-ks.cfg # 查看文件中包含a的字符所在行
特殊符号:
^.... 以...开头
....$ 以...结尾
^$ 表示空行
[root@localhost opt]# grep "^a" /root/anaconda-ks.cfg #查看以a开头的行
autopart --type=lvm
[root@localhost opt]H# grep "a$" /root/anaconda-ks.cfg #查看以a结尾的行
ignoredisk --only-use=sda
(⭐)选项:
-i:查找时忽略大小写
-v:反转查找,输出与查找条件不相符的行
-r:目录下递归查找某个字符
-n:显示行号
例子:grep -rn "a" # 搜索出当前目录下所有文件中含有"a"字符串的行

压缩文件

tar
(⭐)格式:
创建归档:tar 选项 归档后文件的位置以及名称 目标文件或者目录
释放归档:tar 选项 归档文件名 [-C 目标目录]
选项:
-c 创建归档文件
-f 指定归档文件,通常需要设备归档文件名,需要加-f并且放在所有选项之后
-v 显示进度
-t 查看归档内容
-x 释放归档文件
-z gzip格式的归档(压缩)
-j bz2格式的归档(压缩)
例子:
tar -×f /opt/aa.tar #释放归档
tar -cf /opt/aa.tar /root/anaconda-ks.cfg #将/root下的文件打包到/opt下以aa.tar命名
# 注意,使用上面的命令压缩之后,可能会报错,如果是中文版的,报错信息如下:
# [root@localhost ~]# tar -cf /opt/aa.tar /root/anaconda-ks.cfg
# tar: 从成员名中删除开头的“/”
# tar: Removing leading '/' from member names
# 其实这并不是报错了,这是警告,因为实际上已经压缩成功了,警告信息的意思是:
# 当前压缩不仅仅压缩了文件内容,还把文件所在的路径信息给压缩了,首先是泄露路径信息不安全,其次是解压后会给使用者一定的使用困扰
# 进入到需要压缩的文件下,使用相对路径就可以
# [root@localhost ~]# cd /root
# [root@localhost ~]# tar -cf /opt/aa.tar anaconda-ks.cfg
注意:
1、ls查看时归档文件和压缩文件都是红色显示
2、默认情况释放归档到当前目录下,如果想要指定需要加-C
3、如果打包时加了压缩选项,解包时也需要添加

试题二

其他命令

history n 命令历史最后n条
in:执行历史中的第几条命令
选项:-c 清除命令历史
# 重启后失效
alias命令别名 为使用频率较高的复杂命令行设置简短的调用命令
alias查看命令别名
alias a="ping 127.1.1.1"设置命令别名
简单-> 复杂的命令
unalias -a #取消所以得命令别名
unalias 简答的别名 #取消命令别名
注意:命令别名重启之后即丢失
如果想永久生效:将设置命令保存到root用户的.bashrc文件中
将命令的执行结果输出到指定的文件中,而不是直接显示在屏幕上
(⭐)要求:每天中午12点查看cpu,内存,硬盘的状态保存到/home/zt文件中(重定向可以实现)
crontab -e # 先进入到计划任务视图
0 12 * * * ps -ef >> /home/zt
(⭐)
> 代表清空源文件并保存重定向的结果,
>> 表明将重定向的结果追加到文件中
重定向的分类:
重定向标准输出
> :清空目标文件的内容,并且将命令的输出结果保存到某个文件
>> :将命令的输出结果追加到某个文件中
例子:ls -al >> /root/test #将ls-al命令的输出结果重定向到test文件中
重定向标准错误:
2> :清空目标文件的内容,并且将错误结果保存到某个文件
2>> :将错误结果追加到某个文件中
重定向标准输出和错误:
&> :清空目标文件的内容,并且将标准输出和标准错误结果保存到某个文件
&>> :追加
wc 行数、字数、字符
选项:
-l 行数
-w 字数
-c 字符数
| 作用:将第一个命令的输出结果作为第二个命令的输入
例子:
grep "b" /root/initial-setup-ks.cfg | wc #统计文件中包含b的行数字数字符数
20 58 879
搜索出当前目录下所有文件名中含有"data"字符串的行
find * | grep "data"
搜索出当前目录下所有文件内容中含有"data"字符串的一共有多少行
grep -r "data" * | wc -l
格式: vim 文件的位置及名称
vim /root/data
模式:
命令模式:复制、粘贴、查找
输入模式:输入内容
末行模式:保存、另存为、打开其他文件
0∶快速跳转行首
$∶快速跳转行尾
gg:快速跳转首行
G︰快速跳转末行
: set nu显示行号
: set nonu关闭显示行号
dd :删除光标所在行
yy ︰复制光标所在行
粘贴:
p(小)∶粘贴到光标所在行之后
P(大)广∶粘贴到光标所在行之前
u(小)撤销上一步操作,多次按下u,撤销多步操作
末行模式操作
: w 文件位置及名称 另存为
: q 未保存退出
: q! 不保存并退出
: wq 保存并退出
: e 打开新的文件进行编辑
: r 导出其他文件的内容到当前文件中
:%s 需要替换的/替换后的g替换全部
例子:
:% s/old/new/g将整个文件中的old替换为new



用户和组

用户分类:

- root管理员(UID 0)
- 普通用户(UID 1000---60000)
- 程序用户

UID(用户标识号):唯一标识,一个标识一个用户

组账号:

- 基本组:一个用户一个基本组
- 附加组:一个用户可以有多个附加组

GID(用户组标识号):唯一标识,一个标识一个用户组,一般来说创建用户的时候会自动创建一个和用户同名的用户组,为用户的基本组

(⭐)常用的四个文件

- (⭐)**/ect/passwd:存放用户的基本信息**
root:x:0:0:root:/root:/bin/bash

字段1:用户名称

字段2:用户的密码占位符
字段3:用户UID
字段4:用户组GID
字段5:当前用户的作用
字段6:当前用户的家目录
字段7:登录shell信息 /bin/bash 允许登录shell
/sbin/nologin 不允许登录shell **不允许在命令行界面登录当前用户**
- (⭐)**/etc/shadow:存放用户的密码信息**
root:$6$EmzudMqq.j53ThAX$i5rX2hQeGJt1bJhJVc5mqfmy3.Yk0IzJ4jJhNXBiDUhSpctKEBgGGEUveyvSPqdmqCLRRMO98FAkDS6SdTeQw0::0:99999:7:::

字段1:用户名称

字段2:加密的用户密码
字段3:上次的修改密码距离1970.1.1多少天,没有则代表没有修改过密码
字段4:密码的最短有效天数,默认值为0
字段5:密码的最长有效天数,默认值99999
字段6:提前多少天提醒用户密码过期
字段7:在密码过期之后多少天禁用此用户
字段8:账号失效时间,默认为空
字段9:保留字段,未使用
- (⭐)**/etc/group:存放用户组信息**
root:x:0:

字段1:用户组名称

字段2:用户组密码占位符
字段3:用户组GID
字段4:用户组成员
- **/etc/gshadow:存放用户组密码信息**

(⭐⭐⭐)用户的相关命令

useradd 创建用户 格式:useradd 选项 用户名
# 注意:创建的用户是没有密码的,需要手动配置
选项:
-u 指定UID 例子: useradd -u 2000 bb
-s 指定shell登录信息 例子:useradd -s /sbin/nologin dd
-d 改变用户根目录位置 例子:useradd -d /opt/ee/ ee
-g 更改用户的基本组以及GID 例子:useradd -g 2000 mm
-G 将用户加入到某个组(附加组) 例子:useradd -G aa gg # 创建gg用户并添加到aa用户组中
# 使用-g -G时的用户组必须存在
# 对谁进行操作就将谁放到最后
# 上面的选项全部要记,下面这俩可以不记
-M 创建用户不创建家目录
-N 创建用户不创建基本组
passwd 更改密码 格式:passwd 选项 【更改用户】
选项:
-d 清空用户的密码,使之无需密码即可登录
-l 锁定用户(无法以当前用户登录系统)
-S 查看用户是否锁定 LK:锁定 NP:锁定 Passwd:存在密码
-U 解锁用户(可以登录系统)
例子:passwd -l gg 锁定用户
(⭐)echo "redhat" | passwd --stdin ff # 批量修改多个用户的密码
解释:将echo 输出做passwd命令输入,但是要以passwd命令的标准输入因此加--stdin
echo直接输出
--stdin标准输入
# 注意:当用户存在密码时即可以以用户身份登录系统,su - 是以用户身份登录shell
usermod 更改用户信息 格式:usermod 选项 用户名
选项:
-u 指定UID 例子: usermod -u 2000 bb
-s 指定shell登录信息 例子:usermod -s /sbin/nologin dd
-d 改变用户根目录位置 例子:usermod -d /opt/ee/ ee
-g 更改用户的基本组以及GID
-G 将用户加入到某个组(附加组)
-a 添加
例子:
usermod -l jtxy ee 将用户ee的名称改为jtxy
-m 一般与-d一起使用,更改家目录时配置文件一块改
usermod -aG aa gg # 添加用户gg的附加组为aa
uid=2003(gg) gid=2003(gg) 组=2003(gg),2002(aa)
# group 是用户组:第一个用户组时基本组 逗号分隔的第二个是附加组
id 查看用户的信息
[root@localhost ~]# id gg
uid=2005(gg) gid=2001(cc)
groups=2001(cc),2000(bb)
#groups是用户组:第一个用户组时基
本组 逗号分隔的第二个是附加组
userdel 删除用户 格式:userdel 选项 用户名
选项:
(⭐)-r # 连同家目录一起删除
chage 查看并修改用户的密码策略 格式:chage [选项] 用户名
选项:
(⭐) -l # 查看用户的密码策略
查看的信息:
上次密码更改
有效期
多长时间禁用
登录的有效期
最短天数
最长天数
提前多少天警告
-M:密码的最长有效天数
-m:密码的最短有效天数
-W:密码的警告天数
-Ⅰ(大写的i)∶密码的过期之后多长时间禁用用户
-E:账号的过期时间
-d:更改时间

用户组

groupadd 创建用户组 格式:groupadd 选项 用户组名
选项:
-g 指定GID
例子: groupadd -g 3000 fujiazu #创建用户组指定GID为3000
groupdel 删除组账号 格式: groupdel 组帐号名 组成员管理
gpasswd 组成员管理 格式: gpasswd [选项] 组帐号名
选项
-a:添加用户当前组中
-d:将用户从当前组中删除
#题目:将dd用户加入到jtxy中
#方法一:
usermod -aG jtxy dd
#方法二:
gpasswd -a dd jtxy
(⭐)# 对谁操作就把谁放在最后!!!
用法:groupmod [选项] 组
选项:
-g, --gid GID 将组 ID 改为 GID
-h, --help 显示此帮助信息并推出
-n, --new-name NEW_GROUP 改名为 NEW_GROUP
-o, --non-unique 允许使用重复的 GID
-p, --password PASSWORD 将密码更改为(加密过的) PASSWORD
-R, --root CHROOT_DIR chroot 到的目录
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files

试题三

权限

文件权限

读权限:如果用户对该文件拥有读权限,即可读取文件内容,cat、less、more、vim、head

写权限:如果用户对该文件拥有读权限,即可写入,可以使用vim、echo
执行权限:可以将该shell脚本文件执行

对于目录

读权限:ls

写权限:最高权限:cp、mv、touch、mkdir、rm3

执行权限: cd

归属

属主:文件的所有者,默认谁创建的就归谁

属组:属主的基本组,因此一个用户的基本组时属主的基本组,那这个用户就拥有属组的权限

其他用户

aa 用户﹑创建jtxy文件
jtxy 文件所有者: aa 属组
drwx r-x r-x. 2 root root 6 4月 24 14:45 桌面
所有者 属组 其他用户
权限是3位一组,
r:读
w:写
×:执行

(⭐⭐⭐)权限命令

chmod 更改用户权限
格式1: chmod [ugoa] [+-=] [rwx]文件或目录
u:所有者
g∶属组
o:其他用户
a:所有用户
+加权限
-减权限
=设置权限
例子:
[root@localhost ~]# chmod u=rwx anaconda-ks.cfg
[root@localhost ~]# chmod g=rwx anaconda-ks.cfg
[root@localhost ~]# chmod o=--x anaconda-ks.cfg
[root@localhost ~]# ls -l anaconda-ks.cfg
-rwxrwx---. 1 root root 1839 4月 24 14:42 anaconda-ks.cfg
# 注意,linux系统在处理命令时,处理到-的时候,就不会继续处理,因此没有权限
(⭐⭐)格式2:chmod xxx 文件目录
读(r) : 4 写(w) : 2 执行(x) : 1
第一个数字:所有者的权限
第二个数字:属组的权限
第三个数字:其他用户的权限
644 所有者:rw- 属组:r 其他:r
例子:
[root@localhost ~]# chmod 764 anaconda-ks.cfg
[root@localhost ~]# ls -l anaconda-ks.cfg
-rwxrw-r--. 1 root root 1839 4月 24 14:42 anaconda-ks.cfg
# 注意:对于文件来说,权限取决于父目录(上级目录)的权限
# 例子:如果该用户没有aa文件的权限,但是该用户拥有aa上级目录的权限,即可对aa进行强制操作
选项:
-R:递归修改指定目录下所有文件、子目录的权限﹐#格式1、格式2
chown 更改所有者和属组
格式:
chown 属主 文件或目录
chown :属组 文件或目录
chown 属主:属组 文件或目录
-R: 递归修改指定目录下所有文件、子目录的归属
chgrp
格式: chgrp 属组文件或目录

ACL

问题:-rwxI-----. 1 bb root 0 May 9 21:24 abc.txt
要求: aa可以只能查看文件(r)
cc只能拥有写权限()
dd只能拥有执行权限()

ACL权限可以对单一用户和单一用户组进行细致的读写执行权限设置

getfacl 文件或目录
setfacl -m u:用户名:rw 文件或目录
选项:
-m 设置权限
-x 删除acl权限
-b 清除所有的ACL权限
-d:设定默认 ACL 权限。只对目录生效,指目录中新建立的文件拥有此默认权限;
-k:删除默认 ACL 权限;
-R:递归设定 ACL 权限。指设定的 ACL 权限会对目录下的所有子文件生效;
预设权限(mask)
setfacl -m m:r bb #修改预设权限
#注意:预设权限会和设置的ACL权限进行与运算(同真为真),计算的结果权限结果就是有效的权限
(⭐)例子:
setfacl -m u:aa:r /root/abc.txt #设置aa用户拥有abc.txt的读权限
setfacl -x u:natasha bb #删除ACL权限
setfacl -b bb #清除bb文件所有的acl权限
案例1:
#设置用户组natasha对文件权限rwx,再将dd用户的基本组改为该组,查看dd对该文件的权限
[root@localhost opt]# touch bb
[root@localhost opt]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月 10 10:29 bb
[root@localhost opt]# setfacl -m g:natasha:rwx bb
[root@localhost opt]# getfacl bb
# file: bb
# owner: root
# group: root
user::rw-
group::r--
group:natasha:rwx
mask::rwx
other::r--
[root@localhost opt]# id dd
uid=2001(dd) gid=2001(dd) 组=2001(dd),2006(jtxy)
[root@localhost opt]# usermod -g natasha dd
[root@localhost opt]# id dd
uid=2001(dd) gid=2008(natasha) 组=2008(natasha),2006(jtxy)
[root@localhost opt]# su dd
[dd@localhost opt]$ ll
总用量 0
-rw-rwxr--+ 1 root root 0 5月 10 10:29 bb
案例2:
# 对bb文件设置只读预设权限,查看natasha的effective(有效权限)权限
[root@localhost opt]# getfacl bb
# file: bb
# owner: root
# group: root
user::rw-
group::r--
group:natasha:rwx
mask::rwx
other::r--
[root@localhost opt]# setfacl -m m:r bb
[root@localhost opt]# getfacl bb
# file: bb
# owner: root
# group: root
user::r--
group::r--
group:natasha:rwx #effective:r--
mask::r--
other::r--

Set权限

set权限,s就是set权限的标识

分类:

SUID

(⭐)作用:如果该文件拥有SUID权限,其他用户执行该文件时,将拥有所有者的权限

(⭐)chmod u+s

(⭐)注意:前提条件为必须要有执行权限

#举个例子,存放密码的/etc/shadow文件,其他用户没有写的权限,却依旧能修改密码运行passwd指令,就是因为shadow文件具有suid权限,其他用户执行该文件时,将会拥有所有者的权限,那么去除/usr/bin/passwd的suid,查看普通用户是否可以更改密码
[root@localhost opt]# ls -l /etc/shadow
----------. 1 root root 3246 5月 10 09:11 /etc/shadow
[root@localhost opt]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 33544 12月 14 2019 /usr/bin/passwd
[root@localhost opt]# chmod u-s /usr/bin/passwd
[root@localhost opt]# su natasha
[natasha@localhost opt]$ passwd
更改用户 natasha 的密码 。
Current password:
新的 密码:
重新输入新的 密码:
passwd: 鉴定令牌操作错误

SGID(通常设置到目录上)

(⭐)作用:在该目录内所建立的文件或目录的属组,将会自动继承父目录的属组

(⭐)chmod g+s

sticky(粘滞位) 通常设置目录上

标识为t

(⭐)作用:用户不能删除该目录中其他用户的文件

对其他用户进行操作

(⭐)chmod o+t 文件或目录

chmod mxxx 文件或目录
m:特殊权限
x:普通权限
m:SUID:4 SGID:2 粘滞位:1
例子:chmod 4765 aa # 设置权限为所有者:rwx,其他属组:rw,其他用户:rx,增加SUID
# 不要随便添加set位权限

磁盘和文件系统管理

机械硬盘:

磁盘、磁头、磁头臂

N极和S极:

磁盘的磁性材质,举例:N:1,S:0

数据:

假如数据保存在c:\交通学院,那么电脑应该怎么找到呢

扇区:最小的读写单元:512B

磁道:多个扇区组成的一圈,从外向里,编号从0开始

柱面:多个磁盘中相同位置/编号的磁道共同组成一个柱面

磁头:表示数据在盘片的正反面,磁头编号从上到下磁头编号:0、1、2.....

主引导扇区(MBR):引导操作系统启动、以及决定分区的数量

位置:0磁头0柱面1扇区

0磁头:数据在第一个盘片的正面

0柱面:数据在磁道

分区表:

MBR

MBR分区表长度:64字节,一个分区占16个字节,最多可以分4个分区

分区类型:

主分区(P):16字节的分区,最多有4个主分区

拓展分区(L):是将最后一个主分区当作拓展分区使用

逻辑分区(E):逻辑分区实在拓展分区的基础上划分的

GPT

最多可以分128个分区

linux将硬盘、分区等设备均表示为文件

磁盘命令

lsblk 查看硬盘信息
选项:
-f 查看文件系统以及挂载信息
分区:
# MBR分区方式:
fdisk 硬盘名称
举例:fdisk /dev/sdb
操作命令:
n 分区
p 查看分区表
d 删除分区
t 改变分区类型
w 保存退出
例子:
命令(输入 m 获取帮助):n
分区类型
p 主分区 (0个主分区,0个扩展分区,4空闲)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认 1): 2
第一个扇区 (2048-41943039, 默认 2048):
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +10G
创建了一个新分区 2,类型为“Linux”,大小为 10 GiB
# GPT分区:
gdisk 硬盘名称
最多可以分128个分区
# 2T以上的分区GPT:gdisk,2T以下的分区:MBR:fdisk

文件系统(建立文件系统的过程就是格式化)

文件系统是操作系统用于明确磁盘分区上的文件的方法和数据结构;即在磁盘上组织文件的方法

文件系统的作用:

  1. 通过文件系统记录数据的存放位置、

  2. 只有创建文件系统之后,才可以存放数据

NFTS windows默认的文件系统 分配单元大小4096字节

FAT16,FAT32:单个文件不超出4G,这种文件系统常用于U盘

linux中默认使用的文件系统类型

EXT4,第四代扩展(Extended)文件系统

XFS,一种非常优秀的日志文件系统(redhat8操作系统使用的文件系统)

SWAP,交换文件系统

mkfs 建立文件系统 格式:mkfs 选项 分区或硬盘
选项:
-t 指定文件系统的类型
# 拓展分区不能格式化
简单配置:mkfs.文件系统类型
例子:
[root@localhost ~]# mkfs.ext4 /dev/sda1
mke2fs 1.45.4 (23-Sep-2019)
创建含有 2621184 个块(每块 4k)和 655360 个inode的文件系统
文件系统UUID:bbe48970-c3a8-4369-8658-34371d4ce16e
超级块的备份存储于下列块:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
正在分配组表: 完成
正在写入inode表: 完成
创建日志(16384 个块)完成
写入超级块和文件系统账户统计信息: 已完成
格式化成功的标志:
ext4:出现done
xfs:出现meta-data=分区位置
vfat: mkfs.fat 4.1 (2017-01-24)
blkid:查看文件系统和UUID
#注意:UUID唯一表示一个分区

挂载:

为什么要挂载?

windows操作系统和Linux分区有区别

Linux系统1个根目录

windows系统1个分区1个根目录

所以将根目录中的某个目录和分区进行关联

注意:重启之后挂载就没了

#前提:挂载的目录必须存在
mount 分区位置以及名称 挂载目录
例子:[root@localhost ~]# mount /dev/sda1 /mnt/a1
umount 分区位置 挂载目录
#注意:如果已经挂载之后,需要删除分区,首先要卸载挂载点,才能删除分区,配置的挂载重启之后即丢失

开机后自动挂载

/etc/fstab

/dev/mapper/rhel-swap swap swap defaults 0 0
分区位置以及命令 挂载点目录 文件系统 挂载规则 是否检查 是否备份

交换分区

手机:

虚拟内存:使内存增加
8G +4G =12G
原理:将部分磁盘容量当做内存容量使用
安卓基于Linux改进

linux:

交换分区:将分区容量当做内存使用
交换文件系统:swap

步骤:

步骤:
1、建立交换分区 t 改变分区类型为82
2、格式化 mkswap 分区名 mkswap /dev/sda1
3、挂载 swapon 分区名 挂载交换分区
swapoff 分区名 卸载挂载点
free -h查看内存
swapon -s查看交换分区
swapon -a重新挂载交换文件分区
交换分区自动挂载:挂载点目录和文件系统均为swap

破解密码

  1. 重启系统,在选择系统界面,按下e

  2. 在倒数第二行最后输入rd.break ctrl+x 进入终端界面

  3. 输入mount -o remount, rw /sysroot

  4. chroot /sysroot #切换shell,进入bash界面,才能输入passwd命令

  5. passwd root指定修改root用户的密码

  6. touchl /.autorelabel

  7. 输入两次exit退出

(⭐⭐⭐)逻辑卷(LVM)

逻辑卷(LV):从卷组划分的容量,用于分配给用户使用

卷组(VG):多个物理卷组成

物理卷(PV):由多个硬盘或者分区组成,默认4MB大小的PE 基本单元

创建物理卷:pvcreate 格式:pvcreate 物理卷的成员
例子:pvcreate /dev/sda1
查看物理卷:pvsan、pvs
查看物理卷的详细:pvdisplay
创建卷组:vgcreate 格式:vgcreate 卷组名称 物理卷成员
(⭐)选项:-s 指定PE大小
例子:vgcreate -s 100M vgname /dev/sda1
查看卷组:vgs
查看卷组的详细信息:vgdisplay
将新的物理卷加入到已有的卷组中
vgextend wgroup /dev/sdb
vgremove 格式:vremove 卷组名
lvcreate 格式:lvcreate -l/-L -n 逻辑卷的名称 卷组名称
选项:
-l pe数量,逻辑卷大小由多少个pe组成
-L 指定逻辑卷大小
查看逻辑卷:lvs
逻辑卷的删除:lvremove /dev/vgname/lvname
逻辑卷的路径:/dev/卷组名/逻辑卷名
/dev/mapper/卷组名-逻辑卷名 #注意:/dev/mapper专门用于存放逻辑卷文件
格式化:
mkfs.ext4 /dev/vgname/lvname
mkfs.ext4 /dev/mapper/vgname-lvname
挂载:
例子:mount /dev/mapper/vgname-lvname /shandong
df -hT 查看挂载目录的信息
例子:PE大小为16MB。指定创建逻辑卷为513MB,513MB无法整除16,因此不够一个PE大小,按照一个PE大小计算,512MB+16MB=528MB

扩容和缩容

vgextend:扩容
格式:vgextend/cgreduce 卷组名 物理卷成员
vgreduce:缩容Ⅰ
lvextend
格式: lvextend -L 空间 逻辑卷的路径
lvextend -L +20G /dev/mapper/vgname-lvname
#注意:容量直接写20G,是将逻辑卷的容量改为20G,+20G是增加20G
df-hT查看挂载目录的信息(包括容量)
#注意:扩容逻辑卷的同时也需要扩容文件系统
ext4文件系统的扩容: resize2fs -p 逻辑卷的路径
xfs文件系统的扩容: xfs_growfs 逻辑卷的路径
例子: lvextend -r -L +20G /dev/mapper/vgname-lvname
扩容文件系统和逻辑卷
lvreduce
格式: lvreduce -r -L 容量 /dev/mapper/vgname-lvname
#注意:缩容逻辑卷的前提—定要卸载挂载点(扩容不需要)
挂载小知识:
挂载之后创建的数据,在卸载之后挂载数据依然存在
挂载之前创建的数据,在卸载之后挂载数据被系统隐藏
步骤:
1、卸载挂载点
2、fsck -f 逻辑卷路径 #将要缩容的数据调整到其他位置
3、lvreduce -r -L 容量 逻辑卷路径 #缩容逻辑卷和文件系统
4、重新挂载
#xfs文件系统不支持缩容

(⭐⭐⭐)vdo

存放硬盘中的数据以0、1二进制表示

vdo卷通过三步来优化空间,实现小容量存放大数据

通过rpm -qa |grep "vdo"查询当前系统是否有vdo

  1. 零区块排除:通过将非0的数记录,将0的数据删除,保留0数据位置以及数量即可

  2. 重复数据删除:将重复的数据删除

  3. 压缩

(⭐⭐) vdo create --name=vdo0 --device=/dev/sdb1 --vdoLogicalSize=10T
名字 vdo卷的成员 vdo卷的大小
vdostats --human-readable
查看vdo卷的大小
格式化:
ext4快速格式化:mkfs.ext4 nodiscard -E vdo卷的路径
xfs快速格式化:mkfs.xfs -K vdo卷的路径
挂载:
mount /dev/mapper/vdo1 /test
开机后自动挂载:
vim /etc/fstab
/dev/mapper/vdo1 /test xfs _netdev 0 0
# _netdev:网络设备
# 系统在挂载的时候顺序:先挂载磁盘、网络设备以及其他后挂载
# 注意:vdo技术实现的基础是vdo软件、先挂载vdo的话,软件没有启动
dd if=/dev/zero of=jtxy1 bs=1024 count=3
# 建立一个0填充的3Gb文件

进程管理

程序(软件):静态保存的到吗

进程:动态执行的代码

父进程:用于引导子进程的启动

守护进程:用于引导操作系统启动的进程 svstemd PID1

ps:查看静态进程(当前状态) 格式:ps 选项
ps aux 查看所有用户的进程信息 BSD
ps -ef
ps -ef | less 全屏查看系统信息
ps 查看当前运行的进程
内容:
PID:进程ID 唯一标识一个进程
TTY:终端
STAT:状态 R:运行 S:睡眠 Z:僵死 s:当前进程存在子进程
PPID:父进程ID
top
选项:
按k结束进程(9:强制结束进程)
按r修改优先级(NI) nice优先级 (-20 ---- 19) 值越小越优先
kill 根据PID结束进程 格式:kill 选项 PID
选项:
-9 强制结束进程
killall 根据名称结束进程 例子:killall -9 top
pkill 终止终端登录用户
w 查看哪些用户登录到系统中
ssh 对方用户@对方ip地址
前台启动:命令直接执行:ls
后台启动:命令放在后台执行 命令后面加上&符号
# 注意:执行时间长的命令可以放在后台执行
ctrl + z 将前台进程放置后台运行
fg 编号 将后台进程更改为前台进程
jobs 查看后台进程
date
选项:-s 修改时间
调度启动(计划任务)
(⭐⭐)at 一次性计划任务 格式:at + 时间
[root@localhost ~]# at 10:20
warning: commands will be executed using /bin/sh
at> touch /home/jtxy # 回车
at> <EOT> # ctrl+d
job 1 at Tue May 23 10:20:00 2023
atq 查看一次性计划任务
atrm 删除一次性计划任务
crontab 重复计划任务
服务:crond
全局配置文件,位于文件:/etc/crontab
# 内容:::
分钟:(0-59)
小时:(0-23)
日期:(1-31)
月份:(1-12)
星期:(0-7) 0和7都代表星期天
命令:
crontab -e [-u 用户名] 设置计划任务
命令输入内容格式:分钟 小时 日期 月份 星期 执行命令
crontab -l [-u 用户名] 查看计划任务
crontab -r [-u 用户名] 删除计划任务
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率用示例
0 17 * * 1-5 #周一到周五每天17:00
30 8 * * 1,3,5 #每周一、三、五的8点30分
0 8-18/2 * * * #8点到18点之间每隔2小时
0 0 */3* * #每隔3天
例子:
30 8-18/2 * * 1,3,5 touch aa
#星期一三五的8点半到18点半每隔两小时执行创建aa文件

软件安装

硬件平台:

x86、arm、aarch64(arm升级版)

rpm

格式: rpm 选项 软件包名称
选项
-i:安装一个新的rpm软件包
-U:升级某个rpm软件,若原本未装,则进行安装
-F:更新某个rpm软件,若原本未装,则放弃安装
-h:以"#"号显示安装的进度
-v:显示安装过程中的详细信息
--nodeps:安装、升级或卸载软件时,忽略依赖关系
例子:rpm -ivh 软件名
rpmfind 存放RPM软件包的网站
rpm -q 软件名查看软件是否安装
rpm -qa 查看所有已经安装的软件
rpm -qi 查看软件包的详细信息
rpm -ql 查看已经安装的rpm安装目录文件列表
rpm -qR 查看软件的依赖关系
rpm -qf 查询指定文件属于哪个RPM软件包
rpm -e 删除软件包
# rpm的问题:rpm只能记录依赖关系,无法解决依赖关系
wget 软件包的链接
安装openoffice
1、下载软件包
2、解压,打开
3、进入RPMs,安装软件rpm -ivhopenoffice-*
4、安装快捷方式,打开desktop,安装openoffice4.1.1-redhat-menus-4.1.1-9775.noarch.rpm

linux查看ip地址

# 方法一
ip addr
# 方法二
ifconfig

YUM

yum
# dnf 是yum 的升级版本,所以下面所有的yum命令都可以将yum字段替换成dnf
# 软件仓库,能够解决软件的依赖关系
# 使用yum的前提,配置yum源文件
yum clean all # 清除缓存
yum repolist -v # 查看yum源信息
yum install 软件名 # 安装软件
yum remove 软件名 # 卸载软件 可以加-y,无需确认
yum list # 列出所有已经安装的软件
yum info # 列出软件的详细信息
yum provides 命令 # 查看命令通过哪个软件实现
yum download 软件名 # 只下载不安装
yum update 软件名及版本 # 更新软件
yum grouplist # 查看软件包组
yum groupinstall 软件包名称 # 安装软件包组
yum install @软件包名称 # 安装软件包组
yum groupremove 软件包名称 # 卸载软件包组
yum remove @软件包名称 # 卸载软件包组
#注意:安装软件包组时名称必须加引号
# 使用yum的前提,配置yum源文件
yum源文件:/etc/yum.repos.d
yum源文件的后缀必须是repos.d
本地yum源(使用的是镜像的软件)
1、将右下角的光驱连接,挂载(将镜像中的内容和目录关联)
例子: mount/dev/ sr0/ aa
挂载成功的标志: mounted read-only.
2、编辑yum源文件
[] yum源的编号
name= yum源的名称
baseurl=yum源的链接(位置):file:///run/media/root/RHEL-8-2-0-BaseOS-x86_64
/AppStream
(⭐)gpgcheck=是否检查yum源,不检查设为0,检查设为1,如果为1,则需要设置密钥
(⭐)gpgkey=RPM-GPG-KEY-redhat-release
enable=是否使用该yum源,不使用设为0,使用设为1,默认是使用的
例子:
vim /etc/yum.repos.d/redhat.repo
[aa]
name=aa
baseurl=file:///run/media/root/RHEL-8-2-0-BaseOS-x86_64/AppStream
gpgcheck=0
[bb]
name=bb
baseurl=file:///run/media/root/RHEL-8-2-0-BaseOS-x86_64/BaseOS
gpgcheck=0
网络下载:
华为:
1、EPEL,打开地址
2、找到对应的版本
3、打开Everything,找到对应硬件平台,找到packages、repodata
4、复制链接到url中
例子:
[huawei]
name=huawei
baseurl=https://repo.huaweicloud.com/epel/8/Everything/x86_64/
gpgcheck=0
[aliyun]
name=aliyun
baseurl=https://mirrors.aliyun.com/centos/8/AppStream/x86_64/os/
gpgcheck=0
加解密:
如果gpgcheck=1,那么还需要加一个词条为密钥
gpgkey=RPM-GPG-KEY-redhat-release

网络与服务

windows/硬件设备:ipconfig 查看网卡信息

linux:ifconfig 查看网卡信息

ip route 查看网关地址

更改网卡信息:

  1. 更改配置文件(⭐)

    vim/etc/sysconfig/network-scripts/ ifcfg-ens160 配置文件位置

    B00TPROTO=网络类型
    dhcp自动分配
    static:静态配置
    none:自适配
    DEVICE=网卡名称
    IPADDR=IP地址
    NETMASK=掩码 或者PREFIX:前缀
    GETWAY=网关地址
    ONBOOT=重启是否激活网卡 值必须为yes,否则重启后网卡信息丢失
    例子:
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=static # 默认为dhcp
    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=4a566eb1-6776-4c00-a748-a4d8c4484d5f
    DEVICE=ens160
    ONBOOT=yes # 默认为yes
    IPADDR=10.178.187.128 # ip地址,注意,这是a类私网ip地址
    NETMASK=255.255.0.0 # a类ip地址的子网掩码
    GETWAY=10.178.255.254 # 网关,一般取地址池范围内的最后一位,即254,取1或者其他未被使用的地址也可
    systemctl restart NetworkManager # 重启网卡服务
    # 红帽7/ centos7重启网卡生效
    ifdown ens169 # 断开网卡
    ifup ens160 # 开启网卡
  2. 更改图形化界面

    hostname 主机名 更改主机名(重启即丢失)
    hostnamectl set-hostname 主机名 更改主机名(重启不丢失)
    # 注意:更改主机后需要重新登录生效
    nmtui 进入伪图形界面
    Edit a connection 编辑网卡信息
    # 注意:IP地址后需要加后缀
    Activate a connection 激活网卡信息
    # *号代表已激活网卡

    ![image.png](linux+324fb09d-dc83-4bee-a09a-c3b773fd6504/image 6.png)

    ![image.png](linux+324fb09d-dc83-4bee-a09a-c3b773fd6504/image 7.png)

    ![image.png](linux+324fb09d-dc83-4bee-a09a-c3b773fd6504/image 8.png)

  3. 通过命令行设置(numcli)

服务

服务是通过软件实现的功能

守护进程:systemd
systemctl 用于控制systemd 系统管理工具
(⭐)格式: systemctl 动作 服务
动作:
start 开启服务
stop 停止服务
status 查看服务的状态
is-enabled 查看服务是否开机自启
enbale 设为开机自启
disable 关闭开机自启
restart 重启服务
--reload重载服务 重新加载配置文件
systemctl list-units --type service 列出所有服务的状态
vim /etc/services 存放服务的端口号

服务的分类:

系统服务:防火墙(filewalld)

防火墙的服务管理工具
防火墙是基于区域保证安全
硬件防火墙区域:

local(本地):100

tnunst:信任区域:85

untrunst:非信任区域:5

DMZ:用来存放服务器的区域:50

通过接口区分区域,级别低的不可以访问级别高的

linux中的防火墙:

一共存在十种区域

firewall-cmd --list-all-zones # 查看防火墙的区域
firewall-cmd --list-all # 查看前区域的内容
firewall-cmd --add-service=http # 添加服务至当前区域
firewall-cmd --set-default-zone=# 更改默认区域
firewall-cmd --list-all-zone=public # 查看public区域的规则
firewall-cmd --permanent --add-service=http # 将服务永久添加到的当前区域
firewall-cmd --permanent --add-service=http --zone=drop # 为其他区域添加服务
firewall-cmd --reload # 重新启动防火墙
# 防火墙限制内容的级别:端口号>服务>协议
# 规则:
REJECT(拒绝):存在区域的就拒绝,不存在就允许
default(默认):存在当前区域的内容就允许,不存在就丢弃
DROP(丢弃):存在当前区域的就丢弃,不存在就允许
public 默认的区域 规则为default

网络服务:http、ftp、nfs、ntp

(1)安装软件
(2)开启服务、设置开启自启、修改配置文件、重启服务
systemctl start httpd # 开启服务
systemctl enable httpd # 设置开机自启
(systemctl is-enable httpd #查看是否开机自启)
systemctl status httpd # 查看当前状态
systemctl restart httpd # 重启服务
(3)允许服务通过防火墙
firewall-cmd --add-service=http # 允许http通过防火墙
(若要永久启动http通过防火墙,在--add前面加上--permanent,
即:firewall-cmd --permanent --add-service=http )
firewall-cmd --reload # 重载防火墙
浏览器:直接输入ip地址
/var/www/html/ # http网页文件存放位置
/etc/httpd/conf/httpd.bonf #http配置文件,可以更改端口号等
(1)安装软件
(2)开启服务、设置开启自启、修改配置文件、重启服务
systemctl start vsftpd # 开启服务
systemctl enable vsftpd # 设置开机自启
(systemctl is-enable vsftpd #查看是否开机自启)
systemctl status vsftpd # 查看当前状态
systemctl restart vsftpd # 重启服务
(3)允许服务通过防火墙
firewall-cmd --add-service=ftp # 允许ftp通过防火墙
(若要永久启动ftp通过防火墙,在--add前面加上--permanent,
即:firewall-cmd --permanent --add-service=ftp)
firewall-cmd --reload # 重载防火墙
文件管理器:ftp://10.178.187.128:22/
/var/ftp # 存放共享文件的位置
/etc/vsftpd/vsftpd.conf # ftp配置文件
anonymous_enable=YES # 允许匿名访问
anonymous # ftp匿名访问用户
# 两个linux操作系统,IP地址必须属于同一个网段
# 服务器将自己的内容共享给客户端使用
# 服务器端
(1)创建一个文件夹,用于共享文件
mkdir /jtxy
(2)将共享文件夹改为公告目录,权限为777
chmod 777 /jtxy
(3)服务:
systemctl start nfs-server # 开启nfs-server
systemctl enable nfs-server # 设置nfs-server
systemctl start rpcbind # 开启RPC服务
systemctl enable rpcbind # 设置RPC开机自启
(4)防火墙:
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload # 重载防火墙
(5)配置文件:
/etc/exports # nfs的配置文件
内容:
共享目录 允许谁访问(*或者ip地址) (权限,传输方式)
例子:/jtxy 10.178.187.136(rw,async)
传输方式:sync 同步传输
async 异步传输 传输的数据会先放到缓冲器(内存),因此速度快,数据易丢失
no_root_squash 客户端已root用户登录,赋予root权限
systemctl restart nfs-server.service # 重启服务
# 客户端
(1)创建目录(用于和服务器端目录进行连接)
(2)挂载
mount 服务器端ip地址:/共享目录 /本地目录
systemctl start chronyd # 开启时间同步
systemctl enbale chronyd
/etc/chrony.conf # ntp的配置文件
pool ntp.ntsc.ac.cn iburst # 指定一个ntp(国家授时中心服务器)服务器
chronyd sources # 查看ntp是否正常
chronyc makestep # 快速时间时间同步(重启服务)
timedatectl status # 查看时间信息
data -s # 修改时间

selinux安全

访问控制
DAC:自由访问控制
MAC:强制访问控制(selinux)

selinux:程序只能访问特定的文件,selinux基于程序和文件的安全类型上下文判断权限

ps -efZ # 查看程序的安全类型上下文
system_u: system_r: httpd_t:se # httpd进程
ls -Z # 查看文件的安全类型上下文
unconfined_u:object_r:httpd_sys_content_t:s0 # index.html文件
# 安全类型上下文:用户:角色:类型:等级
# selinux规定程序访问文件时,类型必须一致
# 临时修改安全类型上下文的内容(重启会丢失):
格式:chcon -t 类型 文件/目录名
选项:
-t 指定类型
-R 递归修改
例子:
chcon -R -t httpd_sys_content_t /root/aa # 修改目录aa以及目录aa下所有的文件和目录的安全类型上下文
httpd文件类型(背下来):httpd_sys_content_t
# 永久修改安全类型上下文内容
semanage fcontext
选项:
-a 添加/修改类型
-t 指定类型
-d 删除类型
-D 删除所有的类型
例子:
semanage fcontext -a -t httpd_sys_content_t23 # 永久修改23的类型
# semanage fcontext命令更改的是预设模版,不会立即生效
restorecon -v 文件或目录 # 预设模版立即生效
man semanage-fcontext # 查看命令手册
semanage fcontext -a -t httpd_sys_content_t "/目录名(/.*)?" # 更改目录的类型
# 当服务端口不是常见的端口
# http: 80 ftp: 20 21 ssh 22 Telnet 23
# selinux会拦截,导致服务无法实现
解决:将端口加入httpd的selinux的允许端口中
semanage port -l | grep http # 查看selinux允许那些端口访问
semanage port -a -t http_port_t -p tcp 82 # 允许82端口通过selinux

当一个文件被复制到了另外的文件夹,那么复制出的文件的安全类型上下文的类型会发送改变,但是当移动的话,安全类型上下文不变

selinux规则:

宽容(Permissive)--会判断安全类型上下文,如果不一样也不阻止

强制(enforcing)--默认--必须按照安全类型上下文,否则无权限

关闭(disabled)--DAC--不看安全类型上下文

getenforce # 查看当前selinux规则
# 前两种规则可以临时切换,但是前两种规则与关闭切换必须要重启才能生效
setenforce 0/1# 修改临时切换规则,如果后面是0就是宽容模式,如果是1就是强制
# 永久修改规则
vim /etc/selinux/config # selinux配置文件
SELINUX=enforcing
# 测试http服务
1.在root目录下创建一个文件root.html,移动到/var/www/html/index.html
2.使用ip地址/root.html访问,注意,主机ip和服务器ip地址应在同一网段!且服务器开启httpd服务并且关闭防火墙,可以在主机cmd上ping服务器ip地址来判断服务器是否在同一网段
3.观察宽容模式和强制模式的区别
posted @   别打扰我摸鱼  阅读(167)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起