基础命令
服务管理
systemctl redhat7
systemctl start foo.service
启动服务systemctl restart foo.service
重启服务systemctl stop foo.service
停止服务systemctl reload foo.service
不重启服务下重新加载配置文件systemctl status foo.service
查看服务状态systemctl enable foo.service
设置服务开机自动启systemctl disable foo.service
设置服务开机不启动systemctl is-ebabled foo.service
查看服务是否开机自启systemctl list-unit-files --type=service
查看各个界别下的服务的启动与禁用情况
常用命令
echo
echo 字符
输出字符echo $变量
输出变量
dete
date
查看系统当前时间date "+%Y-%m-%d %H:%M:%S"
按照年月日小时分钟秒格式date -s "20190101 8:30:00"
设置当前日期为2019年1月1日8:30分
reboot
reboot
重启
poweroff
poweroff
关机
ps
-a 显示所有进程,包括其他用户的进行
-u 用户以及其它详细信息
-x 显示没有控制终端的进程
top
top
动态监视进程活动与系统负载等信息,类似windows任务管理器
pidof
pidof [参数] [服务名]
查询服务进程的PID值
kill & killall
kill [参数] [进程ID]
终止某个pid的服务进程kiliall [参数] [服务名称]
终止某个指定名称的服务所对应的全部进程,类似windows任务管理器的结束进程树
alias
alias rm='rm -i'
定义一个命令的别名
系统状态检测命令
ifconfig
ifconfig [网络设备] [参数]
获取网卡配置与网络状态等信息
uname
uname [-a]
查看系统名称,系统内核,主机名,内核发型版本,节点名,系统时间,硬件名称,硬件平台,处理器类型,操作系统名称等
uptime
uptime
查看系统的负载信息
free
free [-h]
显示系统内存的使用量
who
who [参数]
查看当前登陆主机的用户终端信息
last
last [参数]
查看所有系统的登陆记录
history
history [参数]
显示历史执行过的命令 -c 删除历史命令记录
sosreport
sosreport
收集系统配置和架构信息并输出诊断文档
工作目录切换
pwd
pwd
显示用户当前所处的工作目录
cd
cd [目录名称] 切换工作路径
cd - 切换上一个目录
cd ~ 切换到家目录
cd ~username 切换到username的家目录
ls
ls [选项] [文件] 显示目录文件信息
ls -a 查看全部文件,包括隐藏文件
ls -d 查看目录属性
文本文件编辑命令
cat
cat [参数] [文件名] 查看内容较少的纯文本文件
cat -n 显示行号
more
more [选项] 文件
查看内容较多的纯文本文件
head
head [选项] [文件] 查看纯文本文档的前N行
head -n 20 [文件名] 查看前20行
tail
tail [选项] [文件] 查看纯文本文件的后N行
tail -n 20 文件名 查看后20行
tail -f 文件名 持续刷新文件内容
tr
tr [原始字符] [目标字符] 替换文本文件中的字符
cat 1.txt | tr a m 将1.txt中的a替换成m,实际文件中并没有改变,只在输出时改变
wc
wc [参数] 文本 统计指定文本的行数
wc -l 只显示行数
wc -w 只显示单词数
wc -c 只显示字节数
stat
stat 文件名
查看文件的具体存储信息和时间等信息
cut
cut [参数] 文本 按列提取文本字符
-d 分隔符
-f 取的列数
cut -d: -f1 /etc/passwd 提取passwd文件中的第一列(用户名)信息
diff
diff [参数] 文件... 比较多个文本文件的差异
--brief 比较两个文件是否相同
diff --brief 1.txt 2.txt
-c 详细比较多个文件的差异之处
diff -c 1.txt 2.txt
文件目录管理
touch
touch [选项] [文件...] 创建空白文件或设置文件时间
touch -a 修改文件读取时间(atime)
touch -m 修改文件修改时间(mtime)
touch -d "2019-09-01" 文件名 同时修改atime和mtime
mkdir
mkdir [选项] 目录名 创建空白目录
mkdir -p a/b/c 递归创建目录
cp
cp [选项] 源文件 目标文件 复制文件或目录
cp -p 保留原始文件的属性
cp -d 若对象为链接文件,保留链接文件的属性
cp -r 递归复制(用于目录)
cp -i 如果目标文件存在,则询问是否覆盖
cp -a 相当于-pdr
mv
mv [选项] [源文件] [目标路径|目标文件名] 剪切文件或者文件重命名
rm
rm [选项] 文件 删除文件或目录
rm -f 文件 强制删除,不显示确认信息
rm -r 目录名 删除目录和目录里的文件
dd
dd [参数] 按照指定大小和个数的数据块来复制文件或者转换文件
if 输入的文件名
of 保存的文件名
bs 设置每个块的大小
count 设置要复制块的个数
dd if=/ect/passwd of=newpass count 1 bs=560m 从passwd文件中取出一个560m的数据块,保存成newpass
dd if=/dev/cdrom of=redhat7.0.iso 将光驱设备中的光盘制作成iso格式的镜像文件
file
file [文件|目录]
查看文件类型
打包压缩与搜索
tar
tar [选项] [文件] 对文件压缩或解压
-c 创建压缩文件
-x 解压
-t 查看压缩包中文件
-z 用Gzip压缩或解压
-j 用bzip2压缩或解压
-v 显示压缩和解压过程
-f 目标文件名
-P 保留原始权限和属性
-p 使用绝对路径来压缩
-C 指定解压到目录
tar -czvf 文件名.gz 打包目录 将目录使用Gzip方式打包
tar -xzvf 压缩包 -C 解压目录 将压缩包解压到指定目录
grep
grep [选项] [文件] 在文本中执行关键词搜索并显示匹配的结果
-b 将可执行文件(binary)当作文本文件来搜索
-c 仅显示找到的行数
-i 忽略大小写
-n 显示行号
-v 反向选择--仅列出没有关键词的行
grep 1111 1.txt 在1.txt中搜索1111
find
find [查找路径] 寻找条件 操作 按照指定条件查找文件
-name 匹配名称
-perm 匹配权限(mode为完全匹配,-mode为包含即可)
-user 匹配所有者
-group 匹配所有组
-mtine -n +n 匹配修改内容的时间(-n是n天以内,+n是n天以前)
-atime -n +n 匹配访问文件的时间
-ctime -n +n 匹配修改文件权限的时间
-nouser 匹配无所有者的文件
-nogroup 匹配无所有组的文件
-newer f1 f2 匹配比文件f1新但是比f2旧的文件
--type b/d/v/p/l/f 匹配文件类型(块设备/目录/字符设备/管道/链接文件/文本文件)
-size 匹配文件大仙(+50k是查找超过50k的文件,-50k是查找小于50k的文件)
-prune 忽略某个目录
-exec …… {}\; 后面跟用于进一步处理搜索结果的命令
find /etc -name "host*" 搜索etc目录下所有以host开头的文件
find / -perm -4000 搜索整个系统中权限中包括SUID权限的所有文件
find / -user mrhonest -exec cp -a {} /root/findfile/ \; 在整个文件系统中找出所有归属于mrhonest用户的文件并复制到root/findfile目录,({}表示find命令搜索出的每一个文件)
管道符,重定向,环境变量
输入输出重定向
标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可以从其它文件或者命令中输入
标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕
错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕
- 输入重定向
命令 < 文件 将文件作为命令的标准输入
命令 << 分界符 从标准输入中读入,知道遇见分界符才停止
命令 < 文件1 > 文件2 将文件1作为命令的标准输入并将标准输出到文件2
wc -w < 1.txt 把1.txt中的内容交给wc统计
- 输出重定向
命令 > 文件 将标准输出重定向到一个文件中(清空原有的文件数据)
命令 2> 文件 将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件 将标准输出重定向到一个文件中(追加到原有的内容后面)
命令 2>> 文件 将错误输出重定向到一个文件中(追加到原有的内容后面)
命令 >> 文件 2>&1 将标准输出与错误输出共同写入到文件中(追加到原来的内容后面)
命令 &>> 文件 同上,将标准输出与错误输出共同写入到文件中(追加到原来的内容后面)
管道命令符
- | 将前一个命令原本要输出到屏幕的标准正常数据当作最后一个命令的标准输入
grep "/sbin/nologin" /etc/passwd | wc -l 统计被限制登陆用户的数量
ls -l /etc | more 用翻页的形式查看/etc下的文件列表信息
echo "111111" | passwd --stdin root 一条命令修改root用户密码
命令行的通配符
* 匹配多个字符
? 匹配单个字符
[0-9] 匹配0-9之间的单个数字字符
[abc] 匹配a,b,c单个字符
[a-z] 匹配a-z的单个字符
常用转义字符
\ 反斜杠:后面的变量变为单纯的字符串
'' 单引号:转义其中所有的变量为单纯的字符串
"" 双引号:保留其中的变量属性,不进行转义处理
`` 反引号:把其中的命令执行后返回给结果
mrhonest = 5 定义变量
echo "$mrhonest" 输出变量
echo '$mirhonest' 输出$mrhonest
重要的环境变量
HOME 用户的主目录
SHELL 用户在使用的shell解释器名称
HISTSIZE 输出的历史命令记录条数
HISTFILESIZE 保存的历史命令记录条数
MAIL 邮件保存路径
LANG 系统语言,语系名称
PANDOM 生成一个随机数字
PS1 Bash解释权的提示符
PATH 定义解释器搜索用户执行的命令路径
EDITOR 用户默认的文本编辑器
WORKDIR=/HOME/WORK 创建变量
export WORKDIR 提升为全局变量
VIM与Shell命令脚本
vim文本编辑器
- 命令模式
i 输入模式,光标当前位置
a 输入模式,光标后以为
o 输入模式,光标下面插入一个空行
ESC 退出写入模式
- 输入模式
dd 删除(剪切)光标所在的整行
5dd 删除(剪切)光标开始的5行
yy 复制光标所在的整行
5yy 复制光标处开始的5行
n 显示搜索命令定位到的下一个字符串
N 显示搜索命令定位到的上一个字符串
u 撤销上一步的操作
p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面
- 末行模式
:w 保存
:q 退出
:q! 强制退出(放弃对文档的修改内容)
:wq! 强制保存退出
:set nu 显示行号
:set nonu 不显示行号
:命令 执行该命令
:整数 跳转到该行
:s/one/two 将光标所在行的第一个one替换成two
:s/one/two/g 将光标所在行的所有one替换成two
:%s/one/two/g 将全文中的所有one替换成two
?字符串 在文本中从下至上搜索该字符串
/字符串 在文本中从上到下搜索该字符串
配置Yum软件仓库
编写Shell脚本
运行
bash shell.sh
执行sh脚本- 接收用户的参数
$0 当前shell脚本程序的名称
$# 参数的总数
$* 所有位置的参数值
%? 显示上一次命令的执行返回值
$N 第N个参数的值
判断用户的参数
测试语句格式 [ 条件表达式 ] 条件表达式两边均有一个空格
文件测试语句
-d 测试文件是否为目录类型 -e 测试文件是否存在 -f 判断是否为一般文件 -r 测试当前用户是否具有权限读取 -w 测试当前用户是否具有权限写入 -x 测试当前用户是否具有权限执行
逻辑测试语句
&& 与 || 或 ! 非
整数值比较语句
** 0 = true ** ** 非0的数字 = false **-eq 是否等于 -ne 是否不等于 -gt 是否大于 -lt 是否小于 -le 是否等于或小于 -ge 是否大于或等于
字符串比较语句
= 比较字符串内容是否相同 != 比较字符串内容是否不同 -z 判断字符串内容是否为空
流程控制语句
- if条件测试语句
if [ 表达式 ]
then
如果表达式成立,执行
fi
if [ 表达式 ]
then
如果表达式成立,执行
esle
表达式不成立时,执行
fi
if [ 表达式 ]
then
如果表达式成立,执行
elif [ 表达式 ]
表达式成立时,执行
else
以上两个表达式均不成立时,执行
fi
- for条件循环语句
for 变量名 in 取值列表
do
命令序列
done
- while条件循环语句
while 条件测试操作
do
命令序列
done
- case条件测试语句
case 变量值 in
模式1
命令序列1
;;
模式2
命令序列2
;;
……
*)
esac
计划任务服务程序
- 一次性计划任务:今晚23:30开启网站服务
at 23:30 设定任务时间
at>systemctl restart httpd 设定任务详情
at>Ctrl+D结束编写
at -l 查看任务
atrm 任务序号 删除任务
echo "systemctl reatart httpd" | at 23:30
一条命令建立任务
- 周期性计划任务:每周一03:25分把/home/wwwroot目录打包备份为bacaup.tar.gz
crontab -e 创建,编辑周期任务
crontab -l 查看任务
crontab -u 编辑他人的计划任务
分,时,日,月,星期,命令 任务格式
8,9,12 设置月份,表示8月,9月,12月
12-15 设置日期,表示12日到15日
/2 执行任务的间隔时间,每隔2分钟执行一次
计划任务中的"分"字段必须有数值,不能空或者是号,"日"和"星期"字段不能同时使用
usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
-s (selinux context)
*/2 * * * * echo
date>> $HOME>test.txt
每隔2分钟输出时间到文件
用户身份与文件权限
用户身份与能力
管理员UID为0
系统用户UID为1-999
普通用户UID从1000开始
用户组号码:GID
- useradd
useradd [选项] 用户名 创建新用户
-d 指定用户的家目录(默认为/home/username)
-e 账号到期时间,格式为:YYYY-MM-DD
-u 指定用户的默认UID
-g 指定一个初始的已存在的用户基本组
-G 指定一个或多个扩展用户组
-s 指定该用户默认的shell解释器
groupadd
groupadd [选项] 组名 创建用户组
- usermod
usermod [选项] 用户名 修改用户属性
-c 填写用户账户的备注信息
-d -m -d和-m连用,可重新指定用户的家目录并自动吧旧的数据转移过去
-e 账户到期时间,格式为:YYYY-MM-DD
-g 变更所属用户组
-G 变更扩展用户组
-L 锁定该用户禁止其登陆系统
-U 解锁用户,允许登陆系统
-s 变更默认终端
-u 修改用户的UID
- passwd
passwd [选项] [用户名] 修改用户密码,过期时间,认证信息等
-l 锁定用户,禁止登陆
-u 解锁用户,允许登陆
--stdin 允许通过标准输入修改用户密码,如 echo "newpassword" | passwd --stdin username
-d 用户可用空密码登陆系统
-e 强制用户在下次登录时修改密码
-S 显示用的密码是否呗锁定,以及密码所采用的加密算法名称
- userdel
userdel [选项] 用户名 删除用户
-f 强制删除用户
-r 同时删除用户及家目录
文件权限与归属
- : 普通文件
d : 目录文件
l : 链接文件
b : 块设备文件
c : 字符设备文件
p : 管道文件
权限分配 文件所有者 文件所属组 其他用户
r:4 读
w:2 写
x:1 执行SUID
SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)
SGID
让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置)
在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)SBIT
设置SBIT(粘滞位|保护位),可确保用户只能删除自己的文件
chmod -R o+t 文件|文件夹
设置SBIT特殊权限chmod
-R 递归
chmod [参数] 权限 文件或目录名 设置文件或目录权限
chmod -R o+t 文件|文件夹 设置SBIT特殊权限
chown
-R 递归
chown [参数] 所有者:所属组 文件或目录名
设置文件或目录的所有者和所属组文件的隐藏属性
- chattr
chattr [+|-][参数] 文件 设置文件的隐藏权限
i 无法对文件进行修改,若对美剧设置了该参数,则仅能修改其中的子文件内容,不能新建或删除文件
a 仅允许补充(追加)内容,无法覆盖/删除内容(Append Omy)
S 文件内容在变更后立即同步到硬盘(sync)
s 彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)
A 不再修改这个文件或目录的最后访问时间(atime)
b 不再修改文件或目录的存取时间
D 检查压缩文件中的错误
d 使用dump命令备份时忽略本文件/目录
c 默认将文件或目录进行压缩
u 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t 让文件系统支持尾部合并(tail-merging)
X 可以直接访问压缩文件中的内容
lsattr
lsattr [参数] 文件
显示文件的隐藏权限文件访问控制列表
setfacl
setfacl [参数] 文件名称 管理文件的ACL(访问控制权限)规则
-R 递归设置,针对目录
-m 针对普通文件
-b 删除ACL规则
setcacl -Rm u:mrhonest:rwx /root 设置mrhonest对root目录的rwx权限
dr-wrwx---+ +表示该文件已经设置了ACL
```getfacl
getfacl 文件名称
显示文件上设置的ACL信息su和sudo
- su
su [-] 用户名
切换用户身份,-代表把环境表里信息也变更为新用户的相应信息 - sudo
shell sudo [参数] 命令名称 给普通用户提供额外的权限来完成原本root管理员才能完成的任务 -h 列出帮助信息 -l 列出当前用户可执行的命令 -u用户名或UID值 以指定的用户身份执行命令 -k 情况密码的有效时间,下次执行sudo时需要再次进行密码认证 -b 在后台执行指定的命令 -p 更改询问密码的提示语
visudo
存储结构与磁盘划分
常见的目录名称以及相应内容
- FHS
- 绝对路径 以根目录开始
相对路径 以当前路径开始
/boot 开机所需文件--内核,开机菜单以及所需配置文件等
/dev 以文件形式存放任何设备与接口
/etc 配置文件
/home 用户家目录
/bin 存放单用户模式下还可以操作的命令
/lib 开机过程中需要的命令
/media 用于挂在设备文件的目录
/opt 防止第三方的软禁
/root 系统管理员的家目录
/srv 一些网络服务的数据文件目录
/tmp 任何人均可使用的"共享"临时目录
/proc 虚拟文件系统,列入系统内核,进程,外部设备及网络状态等
/usr/local 用户自行安装的软件
/usr/sbin linux系统开机时不会使用到的软件/命令/脚本
/usr/share 帮助与说明文件,也可以放置共享文件
/var 主要存放进场变化的文件,如日志等
/lost+found 当文件系统发生错误时,将一些丢失的文件片段存在在这里物理设备的命名规则
IDE设备 /dev/hd[a-d]
SCSI/STAT/U盘 /dev/sd/[a-p]
软驱 /dev/fd[0-1]
打印机 /dev/lp[0-15]
光驱 /dev/cdrom
鼠标 /dev/mouse
磁带机 /dev/st0或/dev/ht0- 主分区或扩展分区的编号从1开始到4结束
逻辑分区从编号5开始
文件系统与数据资料
Ext3 是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误
Ext4 Ext3的改进版本,支持的存数容量高达1EB,能够有无限多的子目录,Ext4文件系统能够批量分配block块,提高了读写效率
XFS 是一种高性能的日志文件系统,最大支持存储容量18EBsuper block 硬盘地图
挂载硬件设备
- mount
mount 文件系统 挂载目录 挂载文件系统
-a 挂载所有在/etc/fstab中定义的文件系统
-t 指定文件系统的类型
mount /dev/sdb2 /backup 把设备/dev/sdb2挂载到/backup目录
etc/fstab
** 设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检**
设备文件 一般为设备的路径+设备名称,也可以写唯一的识别码(UUID)
挂载目录 指定要挂载到的目录,需挂载前创建好
格式类型 指定文件系统的格式,如Ext3,Ext4,XFS,SWAP,iso9600(光盘设备)等
权限选项 若设备为defaults,则默认权限问:rw,suid,dev,exec,auto,mouser,async
是否备份 若为1则开机后使用dump进行磁盘备份,为0则不备份
是否自检 若为1则开机后自动进行紫盘自检,为0则不自检umount
umount [挂载点/设备文件]
撤销已挂载设备文件,如umount /dev/sdb2
添加硬盘设备
- fdisk
fdisk [磁盘名称] 管理磁盘分区
m 查看全部可用的参数
n 添加新的分区
d 删除某个分区信息
l 列出所有可用的分区类型
t 该表某个分区的类型
p 查看分区信息
w 保存并退出
q 不保存直接退出
mkfs.*
mkfs.* 磁盘名称
按照*的文件系统格式格式化磁盘- du
du [选项] [文件] 查看文件数据占用量
du -sh /* 查看系统根目录下所有文件占用多大的硬盘空间
添加交换分区
mkswap 目录名 格式化交换分区
swapon 目录名 将SWAP分区挂载到系统中
磁盘容量配额
quota
软限制 当达到软限制时会提示用户,但仍允许用户在限定的额度内继续使用
硬限制 当达到硬限制时会提示用户,并强制终止用户的操作- xfs_quota
xfs_quota [参数] 配额 文件系统
-c 以参数的形式设置要执行的命令
-x 专家模式
xfs_quota -x -c 'limit bsoft=3m bhard=6m isoft=2 ihard=6 tom' /boot 设置用户tom对/boot目录容量的配额:软限制3MB,硬限制6MB,创建文件数量的软限制3个,硬限制6个
- edquota
edquota [参数] [用户] 编辑用户的quota配额限制
-u 针对用户设置
-g 针对用户组设置
软链接 硬链接
硬链接(hard link) "指向源文件inode的指针",不能跨分区对目录文件进行链接
软链接(符号链接[symbolic link]) 仅包含链接文件的路径名,可跨文件系统进行链接+ inin [选项] 目标 链接文件 创建链接文件 -s 创建软链接"符号链接",不带-s参数默认创建硬链接 -f 强制创建文件或目录链接 -i 覆盖前询问 -v 显示创建链接的过程
使用RAID与LVM磁盘阵列技术
RAIL(独立冗余磁盘列阵)
RAID 0
RAIL 0技术能够有效的提升硬盘数据的吞吐速度,但不具备数据备份和错误修复能力
RAID 1
将数据同时写入到多块硬盘设备上(镜像或备份),当其中某一块应硬盘发生故障后,一般立即自动以热交换的方式来恢复数据的正常使用
RAID 5
把硬盘设备的数据奇偶校验信息保存到其它硬盘设备中
RAID 10
RAID 1 + RAID 0的"组合体",该技术至少需要4块硬盘
部署磁盘列阵
- mdadm
mdadm [模式] <RAID设备名称> [选项] [成员设备名称] 管理linux系统中的软件RAID硬盘列阵
-a 检测设备名称
-n 指定设备数量
-l 指定RAID级别
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止RAID磁盘列阵
mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde -C代表创建一个RAID阵列卡,-v显示创建过程,后面跟上设备名/dev/md0 ,-a yes代表自动创建设备文件,-n4 代表使用4块硬盘来部署这个RAID磁盘列阵,-l 10代表使用RAID 10方案,最后加上4块硬盘设备的名称
mkfs.ext4 /dev/md0 将制作好的RAID磁盘列阵格式化为ext4格式
mkdir /RAID 建立目录,创建挂载点
mount /dev/md0 /RAID 将硬盘设备进行挂载
mdadm -D /dev/md0 查看磁盘列阵的相信信息
echo "dev/md0 /RAID ext defaults 0 0" >> /etc/fatab 将挂载信息写入配置文件
损坏磁盘列阵及修复
mdadm /dev/md0 -f /dev/sdb
在磁盘阵列中移除/dev/sdb磁盘
磁盘列阵+备份盘
mdam -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde 创建RAID 5磁盘列阵+备份盘 ,-n 3代表创建这个列阵所需的硬盘数,-l 5代表列阵的级别,-x 1代表有一块备份盘
mlfs.ext4 /dev/md0 格式化
LVM(逻辑卷管理器)
部署逻辑卷
常用LVM部署命令
|功能/命令|物理卷管理|卷组管理|逻辑卷管理|
|----|----|----|----|
|扫描|pvscan|vgscan|lvscan|
|建立|pvcreate|vgcreate|lvcreate|
|显示|pvdisplay|vgdisplay|lvdisplay|
|删除|pvremove|vgremove|lvremove|
|扩展| |vgextend|lvextend|
|缩小||vgreduce|lvreduce|
pvcreate /dev/sdb /dev/sdc 让新添加的凉快硬盘设备支持LVM技术
vgcreate storage /dev/sdb /dev/sdc 把两块硬盘设备加入到storage卷组中
lvcreate -n -vo -l 37 storage 切割出一个约为150MB的逻辑卷设备 -l 37等于-L 150M
msfs.ext4 /dev/storage/vo 把生成好的逻辑卷格式化
mount /dev/storage/vo 目录名 挂载
扩容逻辑卷
扩容前记得卸载设备和挂载点的关联
umount 目录名 卸载挂载
lvextend -L 290M /dev/storage/vo 将vo扩展至290MB
e2fsck -f /dev/storage/vo 检查硬盘完整性
resize2fs /dev/storage/vo 重置硬盘容量
mount -a 重新挂载即可
缩小逻辑卷
umount 目录名 卸载挂载
e2fsck -f /dev/storage/vo 检查硬盘完整性
resize2fs /dev/storage/vo 128M 把逻辑卷vo的容量减小到128MB
mount -a 挂载
逻辑卷快照
快照的容量必须等于逻辑卷的容量
快照仅一次有效,一旦执行怀远操作后则会立即自动删除
vgdisplay 查看卷组的信息
lvcreate -L 120M -s -n SNAP /dev/storage/vo -s参数生产快照,-L指定大小
umount 目录名 先卸载挂载,此部是为了验证是否能恢复
lvconvert --merge /dev/storage/SNAP 恢复vo的快照
monut -a 重新挂载
删除逻辑卷
umonut 目录名 卸载挂载
vim /etc/fstab 编辑fatab文件,删除配置文件中永久生效的设备参数(挂载的设备)
lvremove /dev/storage/vo 删除逻辑卷设备,需要输入y来确认操作
vgremove storage 删除卷组,此处只写卷组名称即可,不需要设备的绝对路径
pvremove /dev/sdb /dev/sdc 删除物理卷设备
iptables与firewalld防火墙
iptables
策略与规则链
在进行路由选择前处理数据包(PRERPUTING)
处理流入的数据包(INPUT)
处理流出的数据包(OUTPUT)
处理转发的数据包(FORWARD)
在进行路由选择后处理数据包(POSTROUTING)
- ACCEPT 允许流量通过
- REJECT 拒绝流量通过,在拒绝流量后在回复一条"您的信息收到,但是被扔掉",发送方会看到端口不可达的响应
- LOG 记录日志信息
DROP 拒绝流量通过(将流量直接丢弃,并不响应它),发送方显示响应超时,默认规则链的拒绝动作只能是这个
iptables中的基本命令参数
-P 设置默认策略
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如TCP,UDP,ICMP
--dport num 匹配目标端口号
--sport num 匹配来源端口号
iptables -L 查看防洪墙规则链
iptables -F 清空已有的防火墙规则链
iptables -P INPUT DROP 把INPUT规则链的默认策略设置为拒绝
iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT 将INPUT规则链设置为只允许指定网段的主机访问本机的22端口,在INPUT默认规则上添加
iptables -I INPUT -p tcp --dport 12345 -j REJECT 禁止所有人通过tcp协议访问本机12345端口
iptables -I INPUT -p udp --dport 12345 -j REJECT 禁止所有人通过udp协议访问本机12345端口
iptables -A INPUT -p tcp --dport 1000:102 -j REJECT 向INPUT规则链中添加拒绝所有主机访问本机1000-1024端口的策略
service iptables save 防火墙规则永久生效(重启后也不失效)
firewalld
firewalld中常用的区域名称及策略规则
|区域|默认策略规则|
|--|--|
|trusted|允许所有的数据包|
|home|拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh,mdns,ipp-client,amba-client与dhcpv6-client服务相关,则允许流量|
|internal|等同于home区域|
|work|拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh,ipp-client,dhcpv6-client服务相关,则允许流量|
|public|拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh,dhcpv6-client服务相关,则允许流量|
|external|拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh服务相关,则允许流量|
|dmz|拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh服务相关,则允许流量|
|block|拒绝流入的流量,除非与流出的流量相关|
|drop|拒绝流入的流量,除非与流出的流量相关|
终端管理工具
firewalld-cmd命令中使用的参数以及作用
|参数|作用|
|-|-|
|--get-default-zone|查询默认的区域名称|
|--get-default-zone=|设置默认的区域,使其永久生效|
|--get-zones|显示可用的区域|
|--ger-services|显示预先定义的服务|
|--get-active-zones|显示当前正在使用的区域与网卡名称|
|--add-source=|将源自此IP或子网的流量导向指定区域|
|--add-interface=|将源自该忘啦的所有流量都导向某个指定区域|
|--remove-source=|不再将源自此IP或子网的流量导向某个指定区域|
|--change-interface=|将某个网卡与区域进行关联|
|--list-all|显示当前区域的网卡配置参数,资源,端口以及服务等信息|
|--list-all-zones|显示所有区域的网卡怕配置参数,资源,端口以及服务等信息|
|--add-service=|设置默认区域允许该服务的流量|
|--add-port=|设置默认区域允许该端口的流量|
|--remove-service=|设置默认区域不再允许该服务的流量|
|--remove-port=|设置默认区域不再允许该端口的流量|
|--reload|让"永久生效"的配置规则立即生效,并覆盖当前的配置规则|
|--panic-on|开启应急状况模式|
|--panic-off|关闭应急状况模式|
firewalld-cmd --get-default-zone 查看firewalld服务当前所使用的区域
firewalld-cmd --get-zone-of-interface=eno16777728 查看eno16777728网卡在firewalld服务中的区域
firewalld-cmd --permanent --zone=external --change-interface=eno16777728 把friewalld服务中的eno16777728网卡的默认区域修改成external,并在系统重启后剩下
图形管理工具
iptables不错
服务的访问控制列表
TCPWrappers
使用ssh服务管理远程主机
配置网络服务
配置网络参数
nmtui
创建网络会话
nmcli
绑定两块网卡
远程控制服务
配置sshd服务
基于口令的验证
基于密钥的验证
sshd服务配置文件中包含的参数以及作用/etc/ssh/sshd_config
|参数|作用|
|-----|-----|
|port 22|默认的sshd服务端口|
|listenAddress 0.0.0.0|设置sshd服务器监听的ip地址|
|protocol 2|ssh协议的版本号|
|HostKey /etc/ssh/ssh_host_key|ssh协议版本为1时,DES私钥存放的位置|
|HostKey /etc/ssh/ssh_host_res_key|ssh协议版本为2时,RSA私钥存放的位置|
|HostKey /etc/ssh/ssh_host_dsa_key|ssh协议版本为2时,DEA私钥存放的位置|
|PermitRootLogin yes|是否允许root管理员直接登陆|
|StrictModes yes|当远程用户的私钥改变时直接拒绝连接|
|MaxAuthTries 6|嘴打密码尝试次数|
|MaxSessions 10|最大终端数|
|PasswordAuthentication yes|是否允许密码验证|
|PermitEmptyPasswords no|是否允许空密码登陆|ssh [参数] ip地址
ssh连接安全密钥验证
ssh-keygen 在客户端生成"密钥树"
ssh-copy-id 服务器ip 把客户端主机中生产的公钥文件传送至远程主机
远程传输命令
- scp
scp [参数] 本地文件 远程账户@远程IP地址:远程目录
|参数|作用|
|---|---|
|-v|显示详细的连接进度|
|-p|指定远程主机的sshd端口|
|-r|用于传输文件夹|
|-6|使用IPV6协议|
scp /root/q.txt 192.168.1.1:/home 将本地q.txt传到192.168.1.1的home目录,使用远程的root账号
scp 192.168.1.1:/etc/passwd /root 将远程的passwd文件下载到本机root目录下
不间断会话服务
screen
|参数|作用|
|--|--|
|-S|新建会话|
|-d|将会话"离线"|
|-r|恢复指定会话|
|-x|恢复所有会话|
|-ls|查看所有会话|
|-wipe|删除无法使用的会话|
|exit|退出会话|Apache服务部署静态网站
配置服务文件参数
配置文件的名称 存放位置 服务目录 /etc/httpd 主配置文件 /etc/httpd/conf/httpd.conf 网站数据目录 /var/www/httml 访问日志 /var/log/httpd/access_log 错误日志 /var/log/httpd/error_log 注释行信息
全局配置
区域配置
|参数|用途|
|----|----|
|ServerRoot|服务目录|
|ServerAdmin|管理员邮箱|
|User|运行服务的用户|
|Group|运行服务的用户组|
|ServerName|网站服务器的域名|
|DocumentRoot|网站数据目录|
|Directory|网站数据目录的权限|
|Listen|监听的ip地址与端口|
|DirectoryIndex|默认的索引页页面|
|ErrorLog|错误的日志文件|
|Customlog|访问日志文件|
|Timeout|网页超市时间,默认为300秒|个人用户主页功能
htpasswd -c /etc/httpd/passwd mrhonest 生成范文mrhonest个人主页所需要的密码
配置401认证 见书228页
虚拟主机功能
vim /etc/httpd/conf/httpd.conf
编辑配置文件,添加虚拟主机,格式如下:
<VirtualHost 192.168.1.1:80>
DocumentRoot /home/wwwrorr/www1
ServerName www.mrhonest.com
<Directory /home/wwwroot/www1>
AllowOVerride None
Require all granted
</VirtualHost>
基于主机域名
基于端口号
Apache的访问控制
使用vsftpd服务传输文件
文件传输协议
主动模式:ftp服务主动向客户端发起连接请求
被动模式:ftp服务器等待客户端发起连接请求(ftp的默认工作模式)
vsftpd服务程序常用的参数以及作用
|参数|作用|
|----|----|
|listen=[YSE|NO]|是否以独立运行的方式监听服务|
|listen_address=IP|设置要监听的IP地址|
|listen_port=21|设置ftp服务的监听端口|
|download_enable=[YES|NO|是否允许下载文件|
|userlist_enable=[YES|NO] userlist_deny=[YES|NO]|设置用户列表为"允许"还是"禁止"操作|
|max_clients=0|最大客户端连接数,0为不限制|
|max_per_ip=0|同一IP地址的最大连接数,0为不限制|
|anonymous_enable=[YES|NO]|是否允许匿名用户上传文件|
|anon_upload_enable=[YES|NO]|是否允许匿名用户上传文件|
|anon_umask=022|匿名用户上传文件的umask值|
|anon_root=/var/ftp|匿名用户的ftp根目录|
|anon_mkdir_write_enable=[YES|NO]|是否允许匿名用户创建目录|
|anon_other_write_enable=[YES|NO]|是否开放匿名用户的其它写入权限(包括重命名,删除等操作权限)|
|anon_max_rate=0|匿名用户的最大传输速率(字节/秒),0为不限制|
|local_enable=[YES|NO]|是否允许本地用户登陆|
|local_umask=022|本地用户上传文件的umask值|
|locao_root=/var/ftp|本地用户的ftp目录|
|chroot_local_user=[YES|NO]|是否将用户权限禁锢在ftp目录,以确保安全|
|local_max_rate=0|本地用户最大的传输速率(字节/秒),0为不限制|
vsftpd服务
匿名开放模式
本地用户模式
虚拟用户模式
匿名开放模式
默认目录就/var/ftp目录
245页
本地用户模式
/etc/vsftpd/user_list 和 /etc/vsftpd/ftpusers 里存放着禁止登陆的用户名
默认目录是用户家目录
249页
虚拟用户模式
虚拟用户数据文件需要创建 奇数行为用户名,偶数行为密码
252页
vim /etc/vsftpd/user.txt
db_load -T -t hash -f user.txt user.db 将用户文件内容hash加密
useradd -d 虚拟用户ftp目录 -s /sbin.nologin 虚拟用户名 创建一个禁止登陆的用户,指定其家目录(ftp目录)
简单文件传输协议
tftp
UDP协议 无需认证
tftp ip
建立tftp连接
|命令|作用|
|----|---|
|?|帮助信息|
|put|上传文件|
|get|下载文件|
|verbose|显示详细的处理信息|
|status|显示当前的状态信息|
|binary|使用二进制进行传输|
|ascii|使用ASCII码进行传输|
|timeout|设置重传的超时时间|
|quit|退出|
256页使用samba或NFS实现文件共享
Samba文件共享服务
不同操作系统之间文件共享
Samba服务程序中的参数以及作用
|[global]|参数|作用|
|----|----|----|
||workgroup=MYGROUP|工作组名称|
||server string = Samba Server Version %v|服务器介绍信息,参数%v为显示SMB版本号|
||log file=/var/log/samba/log.%m|定义日志文件的存放位置与名称,参数%m为来访的主机名|
||max log size=50|定义日志文件的最大容量为50KB|
||security=user|安全验证的方式,总共分4种, :
share:来访主机无需验证口令
user:需验证来访主机提供的口令后才可以访问
server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
domain:使用域控制器进行身份验证|
||passdb backed=tdbsan|定义用户后台的类型,共3种:
smbpasswd:使用smbpasswd命令为系统用户设置samba服务程序的密码
tdbsam:穿件数据库文件并使用pdbedit命令建立samba服务程序的密码
ldapsam:基于LDAP服务进行账户验证|
||load printers=yes|设置在samba服务启动时是否共享打印机设备|
||cups options=raw|打印机的选项|
|[homes]||共享参数|
||comment=Home Directories|描述信息|
||browseable=no|指定共享信息是否在"网上邻居"中可见|
||writable=yse|定义是否可以执行写入操作,与"read only"相反|
|[printers]||打印机共享参数|配置共享资源
用于设置Samba服务程序的参数以及作用:/etc/samba/smb.conf
|参数|作用|
|--|--|
|[database]|共享名称为database|
|comment = Do not arbitrarily modify the database file|警告用户不要随意修改数据库|
|path = /home/database|共享目录为/home/database|
|public = no|关闭"所有人可见"|
|writable = yes|允许写入操作|
pdbedit [选项] 账户 管理SMB服务程序的账户信息数据库
-a 用户名 建立Samba账户
-x 用户名 删除samba账户
-L 列出账户列表
-Lv 列出账户详细信息的列表
pdbedit -a -u mrhonest 为系统账号mrhonest创建smb账号
mkdir /home/database 创建用于共享资源的文件目录
chown -Rf mrhonest:mrhonest /home/database 设置共享资源的文件目录的所有者和所有组
264页
windows访问文件共享服务
\\ip
连接文件共享服务器
linux访问文件共享服务
268页
yum install cifs-utils 安装cifs-utils
vim auth.smb 编辑配置文件
username=mrhonest 目标用户名
password=222222 目标密码
domain=MUGROUP 目标所在组
chmod 600 auth.smb 由于密码明文,将文件设置只有root可以读写
mkdir /localdatabae 本机建立用于挂载目标的目录
vim /etc/fstab 编辑配置文件
//目标ip/databse /localdatabase cifs credenttials=root/auth.smb 0 0 写入自动挂载信息
NFS(网络文件系统)
linux之间文件共享
yum install nfs-utils
安装NFS服务
NFS配置文件参数:/etc/exports,格式"共享目录的路径 允许放的NFS客户端(默认权限参数)"
|参数|作用|
|----|----|
|ro|只读|
|rw|读写|
|root_squash|当NFS客户端以root管理员访问时,映射为NFS服务的的匿名用户|
|no_root_squash|当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员|
|all_squash|无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名文虎|
|sync|同时将数据写入到内存与硬盘中,保证不丢失数据|
|async|优先将数据保存到内存,然后在写入硬盘,这样效率更高,但可能会丢失数据|
vim /etc/exports
/nfsfile 192.168.1.*(rw,sync,root_squash) //IP地址与权限之间没有空格
systemctl restart rpcbind //nfs需要RPC服务,用于将NFS服务器的ip地址和端口等信息发送给客户端
systemctl enable rpcbind 将rpc(远程过程调用)服务加入开机自启
systemctl start nfs-server 启动nfs服务
systemctl enable nsf-server 加入开机自启
客户端showmount命令可用的参数和作用
|参数|作用|
|----|----|
|-e|显示NFS服务器的共享列表|
|-a|显示本机挂载的文件资源情况|
|-v|显示版本号|
|-t|指定挂载的文件系统类型|shell showmount -e 192.168.10.10 显示目标ip的共享列表 mkdir /nfsfile 建立用于挂载目标共享文件的目录 mount -t nfs 192.168.10.10:/nfsfile /nfsfile 将目标ip的共享目录nfsfile挂载到本地nfsfile目录 ## autofs自动挂载服务 挂载配置文件:/etc/auto.master格式: "挂载目录 子配置文件" 详见273页
shell
yum install autofs
vim /etc/auto.master 编辑配置文件
/media /etc/iso.misc 编辑内容
vim /etc/iso/misc 编辑子配置文件
iso -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom 编辑内容
systemctl enable sutofs 加入开机自启
``# 使用BIND提供域名解析服务 ## DNS域名解析服务 279页 > 主服务器 > 从服务器 > 缓存服务器 ## 安装bind服务程序 **bind服务配置文件** |文件|文件名|作用| |----|----|---| |主配置文件|/etc/named.conf|定义bind服务程序的运行| |区域配置文件|/etc/named.rfc1912.zones|保存域名和IP地址对应关系的所在位置| |数据配置文件目录|/var/named|保存域名和IP地址真是对应关系的数据配置文件|
yum install bind-chroot` 安装bind和chroot扩展包
正向解析实验
281页
反向解析实验
283页
部署从服务器
285页
安全的加密传输
286页
部署缓存服务器
290页
分离解析技术
293页
使用DHCP动态管理主机地址
动态主机配置协议
299页