2025年linux基础

linux基础linux 基础 一 基本命令及文件管理 1 查看网卡配置 激活网卡 关闭防火墙和 SElinux 设置运行级别为 3 命令行模式 systemctl set default multi user targer Linux 系统启动流程 1 加载内核 boot 下的内核文件

大家好,我是讯享网,很高兴认识大家。

linux基础

一、基本命令及文件管理

1.查看网卡配置,激活网卡,关闭防火墙和SElinux
设置运行级别为3(命令行模式) systemctl set-default multi-user.targer Linux系统启动流程: 1.加载内核(/boot下的内核文件) 2.启动初始化进程(init) 3.确定运行级别 4.加载开机启动程序(/etc/init.d) 5.用户登录 shell脚本: shell就是一个用户跟操作系统之间交互的命令解释器,位于操作系统和应用程序之间,负责将应用程序输入的命令信息解释给操作系统,分为图形界面shell和命令行shell 脚本:本质是一个文件,文件里面存放的是特定格式的指令,系统可以使用脚本解释器解析指令并执行 shell脚本:就是Linux命令的组合 & 表示任务在后台执行,如要在后台运行redis-server,则有 redis-server & && 表示前一条命令执行成功时,才执行后一条命令 ,如 echo '1‘ && echo '2' | 表示管道,上一条命令的输出,作为下一条命令参数,如 echo 'yes' | wc -l || 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo "fail" 查看Linux内核版本: cat /proc/version uname -r uname -a 查看Linux系统版本: cat /etc/issue lsb_release -a 四层负载均衡和七层负载均衡的区别: 四层负载,说的是基于IP+端口的负载均衡;七层负载,说的是基于WEB请求,URL等应用信息的负载均衡。 四层常见软件是haproxy,LVS,七层常见软件是nginx。 Nginx优缺点: 优点:开源软件,简单易部署;功能强大,七层负载基本可以满足所有需求。 缺点:仅支持http,https,Email协议;对后端服务器的检测,仅通过IP+端口来检查,不可以通过URL来检查;不支持会话session保持的一致行,但可以通过IP+HASH来解决。 LVS优缺点: 优点:工作在4层,仅做分发作用,没有流量产生,因此。负载性能最强,对内存和cpu消耗率更低; 缺点:不支持正则表达式,不支持动静分离。 haproxy优缺点 优点:支持session会话保持一致,四层和七层都支持;支持通过URL来检测后端服务器的状态。 缺点:在七层转发支持上,不如nginx强大。 查看网卡配置 ip addr show 激活网卡 nmcli connection up ens33 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 关闭selinux setenforce 0 vim /etc/systemctl/ SELINUX=disabled 设置文本3 [root@local ~]# systemctl set-default multi-user.target  查看 [root@local ~]# systemctl get-default  补齐 [root@local ~]# yum -y install bash-doc.x86_64  

讯享网
2.终端操作
讯享网切换终端: ctrl+alt+F2-F6 tty2-6 alt+F1 终端配置: 编辑 --->配置首选项 --->字体 编辑--->配置首选项---->颜色 终端快捷键: shift+ctrl + 放大 ctrl - 缩小 shift+ctrl n 开启新终端 alt F4 关闭终端 shift+ctrl t 开启终端标签 alt 1-- 切换标签 shift+ctrl w 关闭标签 shift+ctrl c 复制 shift+ctrl v 粘贴 
3.基本命令
ls list 列表 cp copy 复制 cp 源文件地址 目标地址 cp /root/cc.txt / cp /root/cc.txt /tmp/kk.txt 拷贝的过程中重命名 cp -r /root/x/ /tmp/ 拷贝目录 mv move 移动或者重命名 mv 源文件地址 目标地址 mv /root/aa.txt /tmp/ mv /root/tt.txt /tmp/ll.txt mv /root/a/ /tmp/ 剪切目录 mv c3.txt nnnn.txt 当前目录下重命名 cd change directory 切换目录 mkdir make directory 创建目录 mkdir aa mkdir cc tt mkdir abc{ 
   1..5} mkdir { 
   x,y,z}{ 
   ..5} mkdir -p /root/x/y/z mkdir -pv /root/a/b/c -p 第归 -v 显示创建过程 touch 创建文件 touch aa.txt touch cc.txt tt.txt touch abc{ 
   1..5}.txt touch { 
   a,b,c}{ 
   1..3}.txt 删除: rmdir /root/c/ 只能删除空目录 rm /root/a1.txt rm -f /root/cc.txt rm -f *.txt *表示所有文件名 rm -rf /root/tt/ 删除目录 rm -rf /root/abc* 命令组成 命令 [-选项(参数)] [对象(file)] 基本命令: ls -l 显示文件详细信息 -a 显示所有文件(包括隐藏文件) .filename ----->隐藏文件 . 当前目录 .. 上层目录 -A 显示所有文件(包括隐藏文件,不包含.和..) -d 显示目录信息 -h 按最大单位显示: -t 按时间排序: -r 逆序输出: -S 按大小排序: -R 递归显示: [root@localhost ~]# ls -l anaconda-ks.cfg  -#rw-------#. #1 #root #root# 1527 #5月 15 2017# anaconda-ks.cfg 第一段: 文件类型 第二段: 基本权限 第三段: 是否在开启selinux的状态创建 第四段: 硬链接数 第五段: 拥有者 第六段: 所属组 第七段: 大小(字节) 第八段: 最后一次修改时间 第九段: 文件名 文件类型:(7) - 普通文件 file d 目录文件 directory c 字符设备文件 character b 块设备文件 block s 套接字文件 socket p 管道文件 pipe l 符号链接文件(软链接) symbolic 
4.获取帮助
讯享网help: ls --help info: info ls man手册: man ls man 1 用户命令 * man 2 系统调用 man 3 库调用 man 4 特殊文件 man 5 配置文件 * man 6 游戏 man 7 杂项 mna 8 系统命令 * man -f passwd 显示passwd 在那些章节有描述 man -k pass 模糊查询 
5.目录
pwd 查看当前家目录位置 cd 切换目录 cd /usr/local cd . 刷新目录 cd .. 回到上层目录 cd ../.. 上层的上层 cd ~ 和 cd 回到家 cd - 上次工作目录 绝对路径: 从/开始的路径 相对路径: 从当前目录开始路径 /目录下每个目录的作用: bin 用户可执行目录(命令 root 和 普通) sbin 系统可执行目录(命令 root) lib 库文件目录(32) lib64 库文件目录(64) dev 设备文件目录 usr 应用程序目录 var 服务器数据目录(数据 日志) srv 服务器数据目录 etc 配置文件目录 tmp 临时文件目录 boot 服务器启动目录(内核和启动文件) media 媒介目录(u盘,cdrom) mnt 其他挂在点 opt 第三方应用程序目录 proc 伪文件系统(内核参数,进程信息,硬件信息) sys 伪文件系统(内核参数,进程信息,硬件信息) run 进程锁目录 root root管理员家目录 home 普通用户家目录 
6.文件管理
讯享网查看文件内容: more: more /root/anaconda-ks.cfg 显示文件的百分比 空格 下一页 b 上一页 回车 下一行 less: less /root/anaconda-ks.cfg 上键 上一行 下键 下一行 pageup 上一页 pagedown 下一页 head: head /root/anaconda-ks.cfg 默认文件前10行 head -n 20 /root/anaconda-ks.cfg head -20 /root/anaconda-ks.cfg tail: tail /root/anaconda-ks.cfg 默认文件后10行 tail -n 20 /root/anaconda-ks.cfg tail -20 /root/anaconda-ks.cfg tail -f /var/log/messages 动态监控日志文件 cat: cat /root/anaconda-ks.cfg cat -n /root/anaconda-ks.cfg cat -n /root/anaconda-ks.cfg |less 
7.练习
1.说出ls指令参数的作用? -a 显示所有文件(包括隐藏文件) -l 显示文件详细信息 -d 显示目录信息 -t 按时间排序 -S 按文件大小排序 -h 按最大单位展示 -R 递归显示 -r 逆序输出 2.文件的类型有几种?分别是什么? 7种 - 普通文件 d 目录文件 c 字符设备文件 b 块设备文件 s 套接字文件 p 管道文件 l 符号链接文件(软链接) 3.ls -l /etc/passwd说出每个字段的含义? -rw-r--r--. 1 root root 2283 Oct 13 2020 /etc/passwd 第一段: 文件类型 第二段: 基本权限 第三段: 是否在开启selinux的状态创建 第四段: 硬链接数 第五段: 拥有者 第六段: 所属组 第七段: 大小(字节) 第八段: 最后一次修改时间 第九段: 文件名 4.说出下列参数的功能? cd ../.. 返回上层目录的上层目录 cd . 当前目录 cd ~ 返回家目录 cd - 返回上次工作的目录 5.列举查看文件的指令有那些?监控日志应该怎么操作? 如何查看一个文件的前25行内容,如何查看文件的后25行内容 more less head tail cat 动态监控日志 tail -f /var/log/messages head -25 /etc/passwd tail -25 /etc/passwd 6.查看/etc/passwd文件的10-25行如何操作? head -25 /etc/passwd | tail -15 7.说出一下目录的作用? /etc /root /var /usr /bin /sbin /home /boot /bin 用户可执行目录(命令 root 和 普通) /sbin 系统可执行目录(命令 root) /usr 应用程序目录 /var 服务器数据目录(数据 日志) /etc 配置文件目录 /boot 服务器启动目录(内核和启动文件) /root root管理员家目录 /home 普通用户家目录 8.创建文件使用什么指令?如何在/tmp下创建abc1.txt-abc100.txt这100个文件? touch touch /tmp/abc{ 
   1..100}.txt 9.如何递归创建目录 如:/tmp/aa/cc/tt mkdir -p /tmp/aa/cc/tt 10.拷贝/tmp/abc1-abc100这100个文件到/root/下 cp /tmp/abc*.txt /root/ 11.如何删除/root/abc1-abc100 这100个文件 rm -f /root/abc*.txt tree显示目录的树形结构 yum install tree tree /aa -L 显示几层目录 tree -L 1 / tree -L 2 / 练习: 1.建立以下目录结构: /aa / \ ba/ bb/ / \ \ ca/ cb/ cc/ 可否一条命令创建? mkdir -p /aa/b{ 
   a/c{ 
   a,b},b/cc} tree /aa 2.将系统中/etc/hosts 拷贝到/aa/ba/ca目录?使用2种方法(当前目录为/)相对路径和绝对路径 cp /etc/hosts /aa/ba/ca 3.将/aa/ba/ca/hosts文件移动到/aa/bb/cc/目录下并且重命名位test.txt,2种方法(当前目录为ca) mv hosts /aa/bb/cc/test.txt mv hosts /aa/bb/cc/ mv /aa/bb/cc/hosts /aa/bb/cc/test.txt 

二、vim文本编辑器

1.vim编辑器创建/打开文件
讯享网[root@localhost ~]# vim /root/aa.txt 可以打开已有的或者新创建一个文件 
2.输入模式(编辑模式)
进入vim编辑器默认是命令模式 命令模式进入输入模式方法: a 当前字符后输入 A 当前行行尾输入 i 当前字符前输入 I 当前行行首输入 o 当前行下一行输入 O 当前行上一行输入 s 删除当前字符后输入 S 删除当前行后输入 HOME键 行首 END键 行尾 
3.命令模式(一般模式)
讯享网命令模式下的基本操作: yy复制 p(当前行下一行) P(当前行的上一行) 50yy dd剪切 p P 100dd dd删除 p 粘贴 ^ 行首 $ 行尾 d^ 删除当前字符到行首(不包含当前字符) d$ 删除当前字符到行尾(包含当前字符) y^ 复制当前字符到行首(不包含当前字符) y$ 复制当前字符到行尾(包含当前字符) 35G 定位到35行 gg 首行 G 最后一行 dgg 从当前行删除到首行(包含当前行) dG 删除当前行到尾行(不包含当前行) u 撤销一部操作 ctrl+r 重做 
4.末行模式(命令行模式)
进入输入模式:shift+: 输入模式下的基本操作: :wq 保存退出 :q 退出 :w! 强制保存 :q! 强制退出 :wq! 强制保存退出 :w /tmp/cc.txt 另存 :1,3w /tmp/new.txt 另存1-3行 :e /root/aa.txt 打开一个文件 :e! 重新打开当前文件 :X 加密文件 :set nu 显示行号 :set nonu 去掉行号 :set list 显示空格或者制表符 :set nolist 去掉空格或者制表符 文件中所有的制表符都设置为16个空格长度 :set tabstop=16 只更改设置之后的制表符长度 :set softtabstop=16 自动缩进 :set autoindent :set noautoindent 搜索忽略大小写 :set ignorecase smartcase w下一个单词的首字符 dw yw J 合并行 vim配置文件: 永久开启行号功能 vim /etc/vimrc set nu 查找 /关键字 n 下一个 N 上一个 ?关键字 n 上一个 N 下一个 替换 :s /要替换的字符串/替换后的字符串/ :s/ab/xx/ 替换当前行第一个匹配字符串 :s/ab/xx/g 替换当前行所有匹配字符串 :%s/ab/xx/g 替换所有行中所有匹配字符串 :%s/ab/xx/gc 交互式替换所有行中所有匹配字符串 s 替换 g 全局 % 所有行 c交互式 :3,5s/ab/xx/gc 3到5行 替换练习: abcdefg 1231hi jklmnab abc defghij klmn/ab abc123 1def ghijk122/3lmnab abc/defg hijk/l234mnab abcdefghi234jklmnab abcdefgh ijkl/mnab 练习: 1.替换文件中所有的a为 X :%s/a/X/g 2.删除文件中所有开头的空格 :%s/^ *// 3.删除文件中所有的空格 :%s/ *//g 4.删除空行 :5d :3,5d :g/^$/d 5.删除只含有空格或者制表符的行 :g/^\s*$/d #\s表示空白符  6,在每一行开头家一个#表示注释这些行 :%s/^/#/ 7.将文件中所有/换成- :%s/\//-/g :%s#/#-#g 8.删除文件中所有的数字 :%s/[0-9]//g 
5.vim其他模式
讯享网可视化模式:v 选中操作内容 y 复制 d删除 可视化块模式:ctrl+v 注释某几行: ctrl+v选中-->shift+i---->输入#----->两下ESC 多文件操作: 创建多个文件进行操作 vim aa.txt cc.txt tt.txt :next 下一个文件 :prev 上一个文件 :last 最后一个 :first 第一个 ctrl+^ 在上一次打开的文件和当前打开的文件之间进行切换 :wqa 保存所有的文件退出 vimdiff aa.txt cc.txt tt.txt ctrl+w+w :wqa 横向排序 vim -O aa.txt cc.txt tt.txt 竖向排列 vim -o aa.txt cc.txt tt.txt 格式转换:将Linux里的文件格式转换成与Windows中一样 yum install unix2dos unix2dos anaconda-ks.cfg file命令:显示文件的类型 [root@localhost ~]# file test test: ASCII text [root@localhost ~]# file a1  a1: empty [root@localhost ~]# file data  data: data Linux和Windows传文件使用(通过Xshell) yum install lrzsz [root@localhost ~]# yum -y install lrzsz  rz 从windos到linux sz 从linux到windows 
6.练习
1.列举vim的三种常用模式 输入模式,命令模式,末行模式 2.由命令模式进入输入模式时a i o O 分别代表什么意思? a 当前字符后输入 i 当前字符前输入 o 当前行的下一行输入 O 当前行的上一行输入 3.在命令模式下如何复制100行 如何删除50行 如何粘贴? 100yy 50dd p当前行的下一行粘贴 P当前行的上一行粘贴 4.在命令模式下如何定位到第75行 75G 5.在命令模式下如何删除当前行到首行,如何删除当前行到尾行? d^删除当前行到首行 d$删除当前行到尾行 6.末行模式如何保存? 如何强制保存退出? :w 保存 :wq!强制保存退出 7.末行模式下如何将100-200行另存一个新文件? :100,200w 文件名 8.末行模式下如何开启行号?如何开启忽略大小写设置? :set nu :set ignorecase smartcase 9.vim的配置文件是哪个文件? /etc/vimrc 10.vim如何查找在一个文件中查找abc字段? /abc ?abc 11.在vim中如何同屏内查看多个文件? vimdiff 要查看的文件的文件名 vim -o 横向排列 vim -O 纵向排列 12.通过vimtutor查看vim的手册 [root@localhost ~]# vimtutor  13.按要求完成以下题目 文本: abcdefg 1231hi jklmnab abc defghij klmn/ab abc123 1def ghijk122/3lmnab abc/defg hijk/l234mnab abcdefghi234jklmnab abcdefgh ijkl/mnab 题目: 1.替换文件中所有的a为 X :%s/a/X/g 2.删除文件中所有开头的空格 :%s/^ *// 3.删除文件中所有的空格 :%s/ *//g 4.删除空行 :g/^$/d 5.删除只含有空格或者制表符的行 :g/^\s*$/d 6,在每一行开头家一个#表示注释这些行 :%s/^/#/ 7.将文件中所有/换成- :%s/\//-/g :%s#/#-#g 8.删除文件中所有的数字 :%s/[0-9]//g 

三、用户管理

1.账号管理

uid (0-60000)

管理员账号 root 0

系统账号 1-999

普通账号 1000-60000

讯享网添加账号 [root@localhost ~]# useradd robin [root@localhost ~]# id robin uid=1001(robin) gid=1001(robin) groups=1001(robin) 用户信息文件 [root@localhost ~]# vim /etc/passwd robin:x:1001:1001:robin:/home/robin:/bin/bash 第一段: 用户名 第二段: 密码占位符 去掉则无密码 第三段: uid 第四段: gid 第五段: 描述 第六段: 家目录 第七段: shell 创建用户时的选项 -u uid 指定UID -g gid 指定GID -c (comment)描述信息 -d home 指定家目录 -s shell 指定shell种类 修改用户信息: usermod usermod -u 2500 jack usermod -g upup jack usermod -c 'test user' jack usermod -s /bin/tcsh jack 修改家目录: 方法1: usermod -d /tmp/jack jack mv /home/jack/ /tmp/ 方法2: usermod -m -d /home/jack jack -m 移动用户主页的内容目录到新位置 锁定帐号 usermod -L robin usermod -U robin 锁定密码 passwd -l robin passwd -S robin 报告指定帐户的密码状态(仅限root用户) passwd -u robin 解锁指定帐户的密码(仅限root用户) 删除用户: userdel -r king -r 连同家目录一起删除 再创建一个管理员 [root@localhost ~]# useradd -o -u 0 admin 
2.组管理

组ID(0-60000)

管理员组 root 0

系统组 1-999


讯享网

普通组 1000-60000

添加组 [root@localhost ~]# groupadd -g 5000 haha 创建用户hehe,组为haha [root@localhost ~]# useradd -u 5000 -g 5000 -c 'ceshi' -d /tmp -s /bin/tcsh hehe 组信息文件 [root@localhost ~]# vim /etc/group upup:x:2006: 第一段: 组名 第二段: 组密码占位符号 第三段: gid 第四段: 用户列表 修改组信息 groupmod groupmod -g 3500 uplooking groupmod -n newuplooking uplooking 删除组: groupdel uplooking 组里面有用户则无法删除 附加组: 附加组用于权限匹配 主组: 主组用于确定用户创建的文件所属组 -G 指定附属组 -a 将用户添加到补充组(追加),仅与-G选项一起使用 usermod -a -G upup robin 组密码: groupadd yw groupadd kf useradd wg usermod -a -G yw,kf wg groupadd boss gpasswd boss su - wg sg boss 临时切换组 
3.密码管理
讯享网添加密码 交互式修改密码 [root@localhost ~]# passwd hehe Changing password for user hehe. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully. 非交互式修改密码 [root@localhost ~]# echo 123 | passwd --stdin hehe 密码保存文件 [root@localhost ~]# vim /etc/shadow hehe1:!!:18549:0:99999:7::: 第一列: 用户名 第二列: 密码(有密码状态,无密码状态,!!帐号锁定,* 该帐号永久不能登陆系统) 第三列: 密码的最后一次修改时间 第四列: 密码的最小时间(密码修改相隔时间) 第五列: 密码的最大时间(密码有效期) 99999表示永久不过期 第六列: 密码过期前警告时间 第七列: 密码过期后帐号过期 第八列: 帐号有效期 第九列: 保留列 练习: 创建两个帐号 tom jerry 密码都设置为123 锁定tom的帐号 锁定jerry的密码 登陆tom和jerry 查看返回信息是否相同? 相同 查看shadow找到tom和jerry密码位有什么不同? ! 锁定帐号 !! 锁定密码 [root@localhost ~]# useradd tom [root@localhost ~]# useradd jerry [root@localhost ~]# for i in tom jerry;do echo 123 |passwd --stdin $i;done  Changing password for user tom. passwd: all authentication tokens updated successfully. Changing password for user jerry. passwd: all authentication tokens updated successfully. [root@localhost ~]# usermod -L tom [root@localhost ~]# passwd -l jerry [root@localhost ~]# vim /etc/shadow 配置文件: /etc/login.defs (uid,gid范围) /etc/default/useradd 修改添加用户有关的配置文件 HOME=/home SHELL=/bin/bash SKEL=/etc/skel (环境变量模板目录) 
4.手动管理账号
直接修改配置文件进行创建 groupadd redhat vim /etc/group redhat:x:9999: useradd -g redhat rose vim /etc/passwd rose:x:9999:9999:test user:/home/rose:/bin/bash mkdir /home/rose 将家目录中需要的几个隐藏文件cp过来 cp /etc/skel/.bash* /home/rose/ passwd rose 设置密码,只能通过命令,不能直接修改配置文件 vim /etc/shadow rose::17303:0:99999:7::: echo 123 | passwd --stdin rose 
5.修改root密码
讯享网物理机 重起系统 按e编辑 找到linux那一行(删除ro后的东西)加rd.break consol=tty0 ctrl+x启动系统 mount -o remount,rw /sysroot chroot /sysroot 切换根目录 echo 密码 | passwd --stdin root 修改密码 touch /.autorelabel sync 两次exit重起正常进入系统 
6.练习
1.普通用户uid范围是多少?gid范围是多少? 1000-60000 0-60000 2.如何添加一个账号tom? [root@localhost ~]# useradd tom 还可以进行手动创建(修改配置文件) 3.说出一下添加账号时参数的含义?-u -g -c -d -s -u uid 指定UID -g gid 指定GID -c (comment)描述信息 -d home 指定家目录 -s shell 指定shell种类 4.如何添加一个组redhat?指定gid为3000? [root@localhost ~]# groupadd -g 3000 redhat 5.当passwd文件的第二列为空时登录系统是否需要密码? 不需要 6.写出保存用户信息,组信息,密码信息的文件分别是什么? 用户信息/etc/passwd 组信息/etc/group 密码信息/etc/shadow 7.修改用户信息的指令是什么?修改组信息的指令是什么? usermod groupmod 8.删除组upup时失败,可能是什么原因造成的?写出你的想法 组中有其他用户 组不存在 9.锁定账号robin应该怎么操作?锁定密码应该怎么操作? [root@localhost ~]# usermod -L robin [root@localhost ~]# passwd -l robin 10.手动添加组upup 手动添加账号ben,属于upup组 使账号ben可以登上系统 [root@localhost ~]# vim /etc/group upup:x:9999: [root@localhost ~]# vim /etc/passwd ben:x:1001:9999:upup:/home/ben:/bin/bash [root@localhost ~]# mkdir /home/ben [root@localhost ~]# cp /etc/skel/.bash* /home/ben/ [root@localhost ~]# echo 123 |passwd --stdin ben  11.修改uid默认范围应该修改哪个文件? [root@localhost ~]# vim /etc/login.defs  12.修改默认家目录,默认shell应该修改哪个文件? [root@localhost ~]# vim /etc/default/useradd  13.修改用户的附加组应该怎么操作?如: 用户king 主组king 附加组king 添加新的附加组blue [root@localhost ~]# groupadd blue [root@localhost ~]# usermod -G blue king  14.简述在root密码丢失时,修改root密码的过程 重起系统 按e编辑 找到linux那一行删除ro后的东西加rd.break ctrl+x启动系统 mount -o remount,rw /sysroot chroot /sysroot 切换根目录 echo 密码 | passwd --stdin root 修改密码 touch /.autorelabel sync 两次exit重起正常进入系统 

四、基本权限

1.权限
讯享网[root@localhost ~]# ll aa.txt  -rw-r--r--. 1 root root 226 Oct 14 19:37 aa.txt 权限位: r 读 w 写 x执行 前3位:拥有者的权限 中间3位:所属组的权限 后面3位:其他人的权限 
2.权限操作
修改文件或者目录的权限 chmod u表示拥有者 g表示所属组 o表示其他人(组外成员) a表示所有成员 +赋予权限 -去除权限 =给权限 [root@localhost ~]# chmod u+x aa.txt  [root@localhost ~]# chmod u-rw aa.txt  [root@localhost ~]# chmod u+r,g+w,o+x aa.txt  [root@localhost ~]# chmod ug+rw aa.txt  [root@localhost ~]# chmod ugo+rwx aa.txt  [root@localhost ~]# chmod a-rwx aa.txt  [root@localhost ~]# chmod u=r aa.txt  [root@localhost ~]# chmod g=rw aa.txt  [root@localhost ~]# chmod g=rw,o=r aa.txt  [root@localhost ~]# chmod g-rw,o=r aa.txt  练习: 1.创建文件/tmp/aa.txt 要求: 拥有者没权限 所属组读写权限 其他人执行权限 chmod u-rw,g+w,o-r,o+x /tmp/aa.txt chmod u=-,g=rw,o=x /tmp/aa.txt 2.创建目录/tmp/test 要求: 拥有者可以查看文件名 所属组可以创建删除文件 其他人无权限 chmod u-wx,g-r,g+w,o-rx /tmp/test/ chmod u=r,g=wx,o=- /tmp/test 3.有文件/tmp/kkk/aa.txt 权限为rwxrwxrwx 问robin用户能不能删除?为什么? 看kkk有什么权限,一个文件能否被删除取决于上层目录的权限 4./tmp/test/ rwxr-xr-x /tmp/test/dir rwxr-xr-- /tmp/test/dir/aa/ rwxrwxrwx /tmp/test/dir/aa/tt.txt rwxrwxrwx robin能不能删除 /tmp/test/dir/aa/tt.txt 不能 
3.权限的数字转换
讯享网查看以下目录或者文件权限: /etc/passwd rw-r--r-- 644 /etc/shadow --------- 000 /tmp rwxrwxrwt 1777 /root r-xr-x--- 550 /home/robin rwx------ 700 / r-xr-xr-x 555 /etc rwxr-xr-x 755 root用户创建文件默认权限 rw-r--r-- 644 root用户创建目录默认权限 rwxr-xr-x 755 普通用户创建文件默认权限 rw-rw-r-- 664 普通用户创建目录默认权限 rwxrwxr-x 775 数字表示权限: 对应关系  rwxrwxrwx 用2进制数字表示,有权限则为1,无权限则为0,每3位转一个十进制数 r -------- 4 w -------- 2 x -------- 1 rw 4+2 6 wx 2+1 3 rwx 4+2+1 =7 321 -wx-w---x 456 r--r-xrw- 
4.umask
umask是权限反掩码 设置umask umask 0022 文件权限 666-022=644 做减不太准 目录权限 777-022=755 umask 0023 666-023=643 ll kk.txt -rw-r--r--. 1 root root 0 517 15:30 kk.txt 023 000 010 011 111 101 100 --取反 666 110 110 110 做与运算 111 101 100 110 100 100 6 4 4 练习: 创建文件 642 umask=? 做同或运算 666 110 110 110 642 110 100 010 110 110 110 111 101 011 ----> 000 010 100 ---> 024 110 100 010 umask=0024 
5.时间
讯享网查看时间,修改时间,同步时间 [root@localhost ~]# date +%Y 2020 [root@localhost ~]# date +%Y-%M 2020-35 [root@localhost ~]# date +%Y-%m 2020-10 [root@localhost ~]# date +%Y-%m-%d 2020-10-19 [root@localhost ~]# date +'%Y-%m-%d %h' 2020-10-19 Oct [root@localhost ~]# date +'%Y-%m-%d %H' 2020-10-19 10 [root@localhost ~]# date +'%Y-%m-%d %H:%M' 2020-10-19 10:36 [root@localhost ~]# date +'%Y-%m-%d %H:%M:%S' 2020-10-19 10:36:40 [root@localhost ~]# date +'%Y-%m-%d %H:%M:%s' 2020-10-19 10:36: [root@localhost tmp]# date 2017年 05月 17日 星期三 23:55:07 CST [root@localhost tmp]# date -s ' 16:02:40' 2017年 05月 17日 星期三 16:02:40 CST [root@localhost ~]# hwclock  Mon 19 Oct 2020 10:33:27 AM CST -0. seconds [root@localhost ~]# date Mon Oct 19 10:33:36 CST 2020 [root@localhost ~]# hwclock -s 从硬件时间写到系统 [root@localhost ~]# hwclock  Mon 19 Oct 2020 10:34:24 AM CST -0. seconds [root@localhost ~]# hwclock -w 从系统写到硬件时间 [root@localhost ~]# hwclock  Mon 19 Oct 2020 10:34:38 AM CST -0. seconds 查看时间信息 [root@localhost ~]# timedatectl 修改时区 [root@localhost ~]# timedatectl set-timezone Asia/Shanghai  
6.修改拥有者和所属组
使用chown命令 格式:chown 新拥有者:新组 文件或者目录 查看/tmp/test.txt的信息,修改拥有者,所属组 /tmp/test.txt rw-r--r-- robin root robin robin ---> other chown robin /tmp/test.txt chgrp upup /tmp/test.txt chown .upup /tmp/test.txt chown :upup /tmp/test.txt chown robin.upup /tmp/test.txt chown robin.upup /tmp/dir/ chown -R robin.upup /tmp/dir chmod -R 777 /tmp/dir -R递归修改 
7.练习
讯享网1.基本权限的操作对象有几个?分别是什么? 三个 拥有者,所属组,其他人 2.给文件拥有者添加rwx权限时,应该如何操作? chmod u+rwx 文件名 chmod u=rwx 文件名 3.目录的拥有者读写权限, 所属组读权限,其他人无权限应该怎么操作? chmod u=rw,g=r,o=- 目录名 4.创建文件/tmp/aa.txt 要求: 拥有者没权限 所属组读写权限 其他人执行权限 [root@localhost ~]# touch /tmp/aa.txt [root@localhost ~]# chmod u=-,g=rw,o=x /tmp/aa.txt  [root@localhost ~]# ll /tmp/aa.txt  ----rw---x. 1 root root 0 Oct 19 14:11 /tmp/aa.txt 5.创建目录/tmp/test 要求: 拥有者可以查看文件名 所属组可以创建删除文件 其他人无权限 [root@localhost ~]# chmod u=r,g=wx,o=- /tmp/test/ 6.有文件/tmp/kkk/aa.txt 权限为rwxrwxrwx 问robin用户能不能删除?为什么? 不能,一个文件能否被删除取决于上层目录的权限 [root@localhost ~]# mkdir /tmp/kkk/ [root@localhost ~]# touch /tmp/kkk/aa.txt [root@localhost ~]# chmod 777 /tmp/kkk/aa.txt  [robin@localhost ~]$ rm -f /tmp/kkk/aa.txt rm: cannot remove ‘/tmp/kkk/aa.txt’: Permission denied 7./tmp/test/ rwxr-xr-x /tmp/test/dir rwxr-xr-- /tmp/test/dir/aa/ rwxrwxrwx /tmp/test/dir/aa/tt.txt rwxrwxrwx robin能不能删除 /tmp/test/dir/aa/tt.txt? 为什么? 不能,robin对dir目录没有执行权限 8.写出如下数字对应的权限 123 --x-w--wx 456 r--r-xrw- 735 rwx-wxr-x 9.写出如下权限对应的数字 r---wx--x 531 rwxr---w- 742 r-xrw-r-- 564 10.按要求完成权限配置 有文件test.txt 要求: boss不可读写,所有员工都可以读写 [root@localhost ~]# chmod 066 test.txt  11.在/root目录下创建文件abc.txt(root目录拥有者不可以改动) 同时完成以下要求: robin用户可以读写abc.txt 但是不可以删除 zorro用户只可以读abc.txt,但是不可以删除 king用户不可以读写abc.txt,但是可以删除 /root root root r-xrwxr-x /root/abc.txt robin zorro rw-r----- robin zorro king chown robin /root/abc.txt chown .zorro /root/abc.txt chmod o= /root/abc.txt chmod o=rx /root chmod g=rwx /root usermod -a -G root king 12.附加题 要求robin用户创建的默认文件权限都是624,求umask值是多少? 042 

五、高级权限

1.SUID( set user id )

作用:任何用户在运行拥有suid权限的命令(二进制可执行文件)时,都以该命令拥有者的身份执行
作用位置:user
作用对象:文件(二进制可执行文件)

添加SUID权限: chmod u+s 文件名 实验: 添加用户robin su - robin cat /etc/shadow 能不能看到内容? 不能 使用suid权限,怎么看到? 添加SUID权限 chmod u+s /bin/cat 查看二进制文件所在的位置 [root@localhost ~]# which useradd /usr/sbin/useradd 
2.SGID(set group id)

作用:任何用户在拥有sgid权限的目录下,创建的文件都要继承目录的组

讯享网添加SGID权限: chmod g+s 目录名 实验: 1.添加帐号robin robin组 创建目录/tmp/test 权限设置为777 目录拥有者root 所属组root robin帐号在/tmp/test下创建 aa.txt 问:所属组是谁? robin [root@localhost ~]# useradd robin [root@localhost ~]# mkdir /tmp/test/ [root@localhost ~]# chmod 777 /tmp/test/ [root@localhost ~]# su - robin  [robin@localhost ~]$ touch /tmp/test/aa.txt [robin@localhost ~]$ ll /tmp/test/ total 0 -rw-rw-r--. 1 robin robin 0 Oct 19 11:50 aa.txt 2.给/tmp/test目录添加sgid权限 robin帐号在/tmp/test下创建 cc.txt 问:所属组是谁? root [root@localhost ~]# chmod g+s /tmp/test/ [root@localhost ~]# su - robin Last login: Mon Oct 19 11:50:45 CST 2020 on pts/2 [robin@localhost ~]$ touch /tmp/test/cc.txt [robin@localhost ~]$ ll /tmp/test/ total 0 -rw-rw-r--. 1 robin robin 0 Oct 19 11:50 aa.txt -rw-rw-r--. 1 robin root 0 Oct 19 11:53 cc.txt 3.添加组upup 修改/tmp/test目录的所属组为upup chown .upup /tmp/test robin帐号在/tmp/test下创建 tt.txt 问:所属组是谁? cc.txt所属组会不会变化? upup 没变 root帐号在/tmp/test下创建 abc.txt 所属组是谁? root受不受sgid限制? upup 受限 [root@localhost ~]# groupadd upup [root@localhost ~]# chown :upup /tmp/test/ [root@localhost ~]# su - robin Last login: Mon Oct 19 11:52:51 CST 2020 on pts/2 [robin@localhost ~]$ touch /tmp/test/tt.txt [robin@localhost ~]$ ll /tmp/test/ total 0 -rw-rw-r--. 1 robin robin 0 Oct 19 11:50 aa.txt -rw-rw-r--. 1 robin root 0 Oct 19 11:53 cc.txt -rw-rw-r--. 1 robin upup 0 Oct 19 11:54 tt.txt [root@localhost ~]# touch /tmp/test/abc.txt [root@localhost ~]# ll /tmp/test/ total 0 -rw-rw-r--. 1 robin robin 0 Oct 19 11:50 aa.txt -rw-r--r--. 1 root upup 0 Oct 19 11:55 abc.txt -rw-rw-r--. 1 robin root 0 Oct 19 11:53 cc.txt -rw-rw-r--. 1 robin upup 0 Oct 19 11:54 tt.txt 
3.STICKY

作用:任何用户在拥有t权限目录下创建的文件,只能自己删除,其他人无权删除

添加sticky权限: chmod o+t 目录名 实验: 1.添加帐号robin 和 zorro 创建目录/tmp/test 权限设置为 777 robin在/tmp/test/目录下创建文件 aa.txt zorro帐号能不能删除aa.txt? 可以 [root@localhost ~]# mkdir /tmp/test [root@localhost ~]# chmod 777 /tmp/test/ [robin@localhost ~]$ touch /tmp/test/aa.txt [zorro@localhost ~]$ rm -f /tmp/test/aa.txt 2.在/tmp/test目录上添加t权限 robin在/tmp/test/目录下创建文件 aa.txt zorro帐号能不能删除aa.txt? 不能 t权限 [root@localhost ~]# chmod o+t /tmp/test/ [robin@localhost ~]$ touch /tmp/test/aa.txt [zorro@localhost ~]$ rm -f /tmp/test/aa.txt rm: cannot remove ‘/tmp/test/aa.txt’: Operation not permitted 3.root帐号能不能删除/tmp/test/目录下的文件? 可以 root不受约束 [root@localhost ~]# rm -f /tmp/test/aa.txt  4.添加帐号king 设置/tmp/test目录的拥有者为king chown king /tmp/test king帐号能不能删除/tmp/test/目录下的文件? 可以 [root@localhost ~]# useradd king [root@localhost ~]# chown king /tmp/test/ [robin@localhost ~]$ touch /tmp/test/aa.txt [king@localhost ~]$ rm -f /tmp/test/aa.txt 
4.高级权限数字表示
讯享网高级权限的数字表示是第一个十进制数 例如 /tmp 1777 1 前3位是高级权限,后面9为是ugo的权限 高级权限大小写区分是否具有x权限:如果没有x权限,则高级权限在x权限位显示为大写 
5.练习
1.列举高级权限都有哪些?并解释每个权限的功能 SUID:任何用户在运行拥有suid权限的命令(二进制可执行文件)时,都以该命令拥有者的身份执行 SGID:任何用户在拥有sgid权限的目录下,创建的文件都要继承目录的组 STICKY:任何用户在拥有t权限目录下创建的文件,只能自己删除,其他人无权删除 2.哪个高级权限可以限制root账号? SGID 3.分别写出每个高级权限的数字表示方法 SUID 4 SGID 2 STICKY 1 4.写出以下数字表示的权限 1777 rwxrwxrwt 2777 rwxrwsrwx 4777 rwsrwxrwx 3777 rwxrwsrwt 5.当高级权限位显示为大写时表示什么含义? 高级权限大小写区分是否具有x权限:如果没有x权限,则高级权限在x权限位显示为大写 

六、软件包管理

1.rpm包安装
讯享网挂载镜像文件 [root@localhost Packages]# mount -t iso9660 /dev/sr0 /mnt/ mount -t iso9660 /var/ftp/CentOS7-2.iso /mnt mount /var/ftp/CentOS7-2.iso /mnt 卸载 umount /mnt mount /var/ftp/CentOS7-2.iso /mnt umount /var/ftp/CentOS7-2.iso umount -l /mnt 强制卸载 mount 查看挂在信息 nmap-6.40-7.el7.x86_64.rpm 包名-版本.平台.系统版本.rpm 安装软件: rpm -ivh /mnt/Packages/nmap-6.40-7.el7.x86_64.rpm -i 安装 -v 显示过程 -h 显示% 查询是否安装 rpm -q nmap 查询包的信息 rpm -qi nmap 查询安装位置 rpm -ql nmap 查看配置文件 rpm -qc nmap 查看帮助文档的位置 rpm -qd nmap 查询文件对应的软件包 which tcpdump rpm -qf /usr/sbin/tcpdump 或者 rpm -qf `which tcpdump` 查询和vim相关软件 rpm -qa | grep vim 卸载 rpm -e nmap 查看未安装的软件 rpm -qpi httpd-2.4.6-40.el7.centos.x86_64.rpm rpm -qpl httpd-2.4.6-40.el7.centos.x86_64.rpm 手动解决依赖关系 [root@localhost Packages]# rpm -ivh httpd-2.4.6-90.el7.centos.x86_64.rpm  warning: httpd-2.4.6-90.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY error: Failed dependencies: /etc/mime.types is needed by httpd-2.4.6-90.el7.centos.x86_64 httpd-tools = 2.4.6-90.el7.centos is needed by httpd-2.4.6-90.el7.centos.x86_64 libapr-1.so.0()(64bit) is needed by httpd-2.4.6-90.el7.centos.x86_64 libaprutil-1.so.0()(64bit) is needed by httpd-2.4.6-90.el7.centos.x86_64 [root@localhost Packages]# rpm -ivh httpd-tools-2.4.6-90.el7.centos.x86_64.rpm  warning: httpd-tools-2.4.6-90.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY error: Failed dependencies: libapr-1.so.0()(64bit) is needed by httpd-tools-2.4.6-90.el7.centos.x86_64 libaprutil-1.so.0()(64bit) is needed by httpd-tools-2.4.6-90.el7.centos.x86_64 [root@localhost Packages]# rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm  warning: apr-util-1.5.2-6.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY error: Failed dependencies: libapr-1.so.0()(64bit) is needed by apr-util-1.5.2-6.el7.x86_64 [root@localhost Packages]# rpm -ivh apr-1.4.8-5.el7.x86_64.rpm  warning: apr-1.4.8-5.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing...  [100%] Updating / installing... 1:apr-1.4.8-5.el7  [100%] [root@localhost Packages]# rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm  warning: apr-util-1.5.2-6.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing...  [100%] Updating / installing... 1:apr-util-1.5.2-6.el7  [100%] [root@localhost Packages]# rpm -ivh mailcap-2.1.41-2.el7.noarch.rpm  warning: mailcap-2.1.41-2.el7.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing...  [100%] Updating / installing... 1:mailcap-2.1.41-2.el7  [100%] [root@localhost Packages]# rpm -ivh httpd-tools-2.4.6-90.el7.centos.x86_64.rpm  warning: httpd-tools-2.4.6-90.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing...  [100%] Updating / installing... 1:httpd-tools-2.4.6-90.el7.centos  [100%] [root@localhost Packages]# rpm -ivh httpd-2.4.6-90.el7.centos.x86_64.rpm  warning: httpd-2.4.6-90.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing...  [100%] Updating / installing... 1:httpd-2.4.6-90.el7.centos  [100%] 强制安装:现有的文件不动,补充缺失的文件 rpm -ivh httpd-2.4.6-40.el7.centos.x86_64.rpm --force 不检查依赖关系卸载 rpm -e httpd-tools --nodeps yum库,主要解决rpm的依赖关系 查看提供文件的包 [root@localhost test]# yum provides /etc/mime.types 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile mailcap-2.1.41-2.el7.noarch : Helper application and MIME type associations : for file types 源 :CentOS7-2 匹配来源: 文件名 :/etc/mime.types yum库的使用 从光盘导入key rpm -import /mnt/RPM-GPG-KEY-Centos7 1.进入到yum库的配置文件目录: /etc/yum.repos.d/ [root@localhost yum.repos.d]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# mkdir old [root@localhost yum.repos.d]# mv *.repo old/ 将原来的repo放入old [root@localhost yum.repos.d]# vim local.repo 重新创建一个 2.配置 [root@localhost ~]# mount /dev/cdrom /mnt/ [root@localhost yum.repos.d]# vim /etc/yum.repos.d/local.repo [local] yum库的名字 name=local 描述信息 baseurl=file:///mnt 路径(本地file 网络http) enabled=1 1开启,0不开启 gpgcheck=0 1校验,0不校验 校验key 3.测试 清空yum缓存 [root@localhost yum.repos.d]# yum clean all Loaded plugins: fastestmirror, langpacks Cleaning repos: local Cleaning up list of fastest mirrors Other repos take up 630 M of disk space (use --verbose for details) (快速)建立缓存 [root@localhost yum.repos.d]# yum makecache fast Loaded plugins: fastestmirror, langpacks Determining fastest mirrors local | 3.6 kB 00:00 (1/2): local/group_gz | 165 kB 00:00 (2/2): local/primary_db | 3.2 MB 00:00 Metadata Cache Created [root@localhost yum.repos.d]# yum repolist Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile repo id repo name status local local 4,067 repolist: 4,067 安装 yum install httpd-devel yum -y install httpd-devel 覆盖安装的包 yum reinstall httpd-devel 搜素相关的软件包 yum search vim 查找文件相关的软件包 yum provides /etc/mime.types 卸载软件包 yum remove httpd 查看yum历史 yum history 检查库 yum check 3 分组列出/集组安装 yum grouplist yum groupinstall "开发工具" yum可支持多库安装(库文件必须正确,有一个错误则全错) yum 本地源,自建库,网络源(互联网,局域网) 同一个配置文件中配置多库 [root@localhost yum.repos.d]# cat iso.repo  [CentOS7.2] name=centos7.2 baseurl=file:///yum enabled=1 gpgcheck=0 [test] name=test baseurl=ftp://172.16.8.100/rhel7u2 enabled=1 gpgcheck=0 多个配置文件配置多库 [root@localhost yum.repos.d]# ls iso.repo test test.repo [root@localhost yum.repos.d]# cat iso.repo  [CentOS7.2] name=centos7.2 baseurl=file:///yum enabled=1 gpgcheck=0 [root@localhost yum.repos.d]# cat test.repo [test] name=test baseurl=ftp://172.16.8.100/rhel7u2 enabled=1 gpgcheck=0 手动建立yum库 [root@localhost yum.repos.d]# mkdir /zijian [root@localhost yum.repos.d]# cp /mnt/Packages/* /zijian/ [root@localhost yum.repos.d]# rpm -qf `which createrepo` [root@localhost yum.repos.d]# yum -y install createrepo [root@localhost yum.repos.d]# createrepo /zijian/ [root@localhost yum.repos.d]# vim zijian.repo [zijian] name=zijian baseurl=file:///zijian enabled=1 gpgcheck=0 [root@localhost yum.repos.d]# yum clean all Loaded plugins: fastestmirror, langpacks Cleaning repos: local zijian Cleaning up list of fastest mirrors Other repos take up 630 M of disk space (use --verbose for details) [root@localhost yum.repos.d]# yum makecache fast Loaded plugins: fastestmirror, langpacks Determining fastest mirrors local | 3.6 kB 00:00 zijian | 2.9 kB 00:00 (1/3): local/group_gz | 165 kB 00:00 (2/3): zijian/primary_db | 509 kB 00:00 (3/3): local/primary_db | 3.2 MB 00:00 Metadata Cache Created [root@localhost yum.repos.d]# yum repolist  Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile repo id repo name status local local 4,067 zijian zijian 691 repolist: 4,758 默认的是网络源 如果要换源,百度阿里/华为源,进行替换即可 练习: 1.写出挂载光盘或者镜像时的完整命令 mount -t iso9660 /dev/sr0 /mnt/ 2.解释以下安装软件时参数的功能 -ivh i安装 v显示安装过程 h显示安装进度 -q 查看是否安装 -qi 查看包的信息 -ql 查看安装的位置 -qf 查看文件对应的软件包 -qa 查看相应的软件包 -qc 查看配置文件 -qd 查看帮助文档位置 -e 卸载 3.写出配置光盘或者镜像作为安装源的yum库配置过程 挂载镜像 [root@localhost ~]# mount /dev/cdrom /mnt/ 配置yum库 [root@localhost yum.repos.d]# vim /etc/yum.repos.d/local.repo [local] yum库的名字 name=local 描述信息 baseurl=file:///mnt 路径(本地file 网络http) enabled=1 1开启,0不开启 gpgcheck=0 1校验,0不校验 校验key 清空yum缓存 [root@localhost yum.repos.d]# yum clean all 建立缓存 [root@localhost yum.repos.d]# yum makecache fast 4.解释以下yum的参数分别代表什么含义 install 安装软件包 reinstall 覆盖安装的软件包 provides 查找文件对应的软件包 remove 卸载软件包 grouplist 按分组列出软件包 groupinstall 按分组安装软件包 5.手动建库时需要哪个命令支持? createrepo 
2.压缩打包
视屏,音频,图片,已经压缩过的文件不能压缩 压缩(只针对文件) dd制作大文件 [root@localhost tmp]# dd if=/dev/zero of=/tmp/data bs=1M count=200 du命令 du /tmp/data du -sh /etc/ -h最大单位显示 -sh查看总大小 gzip gzip data gunzip data.gz bzip2 bzip2 data bunzip2 data.bz2 打包 1.可以将琐碎文件,打包成一个文件.方便管理 2.可以提升传输速度 tar 打包 tar -cvf boot.tar /boot/ c打包 v显示过程 f文件 查看包的内容 tar -tvf boot.tar 追加打包 tar -rvf boot.tar /tmp/data 解包 tar -xvf boot.tar 指定包的存储路径 tar -cvf /home/boot.tar /boot/ 解包指定路径 tar -xvf boot.tar -C /home/ 压缩打包gzip: tar -zcvf /tmp/boot.tar.gz /boot/ 查看 tar -ztvf /tmp/boot.tar.gz 解压缩包 tar -zxvf /tmp/boot.tar.gz -C /home/ 压缩打包bzip2: tar -jcvf /tmp/boot.tar.bzip2 /boot/ 查看 tar -jtvf /tmp/boot.tar.bzip2 解压缩包 tar -jxvf /tmp/boot.tar.bzip2 -C /home/ test.tgz test.tbz 练习: 1.压缩命令有哪些?分别对应的扩展名是什么? gzip gz bzip2 bz2 2.使用tar命令打包时的这些参数分别什么含义 -c创建 -v显示过程 -f文件 -t查看 -r追加打包 -x解包 3.指定解包目录用什么参数? -C 4.写出将/boot 打包使用gzip 压缩,并将压缩包放在/tmp下的完整命令(包的名字为test.tar.gz) tar -zcvf /tmp/test.tar.gz /boot 5.将/tmp/test.tar.gz解压缩到/opt下 tar -zxvf /tmp/test.tar.gz -C /opt 
3.源码包安装
讯享网解压源码包 解压后的源码包放在/usr/local/src/ tar -xvf lftp-4.7.7.tar.gz -C /usr/local/src/ 安装前配置和检测: 指定目录 [root@localhost lftp-4.7.7]# ./configure --prefix=/usr/local/lftp 编译: [root@localhost lftp-4.7.7]# make 编译安装: [root@localhost lftp-4.7.7]# make install 清除编译痕迹 [root@localhost lftp-4.7.7]# make clean 报错: configure: error: no acceptable C compiler found in $PATH 解决: yum install gcc gcc-c++ 报错: configure: error: No terminfo, termcap or curses library found. Install ncurses-devel 解决 yum install termcap ncurses-devel 报错: configure: error: cannot find readline library, install readline-devel package 解决 yum install readline-devel 报错: configure: error: Package requirements (gnutls >= 1.0.0) were not met: 解决: yum install gnutls-devel 测试: rpm -e lftp [root@localhost ~]# /usr/local/lftp/bin/lftp 172.16.110.1 lftp 172.16.110.1:/> get biji.txt 下载文件 lftp 172.16.110.1:/> mirror video 下载目录 [root@localhost /]# /usr/local/lftp/bin/lftp 172.16.110.1 lftp 172.16.110.1:~> lcd /root/ lcd 成功, 本地目录=/root lftp 172.16.110.1:~> lcd /tmp lcd 成功, 本地目录=/tmp lftp 172.16.110.1:~> lftp 172.16.110.1:/> mirror video/ -O /tmp/ 指定路径下载 修改环境配置文件: [root@localhost /]# vim /etc/bashrc  PATH=$PATH:/usr/local/lftp/bin export PATH 卸载 rm -rf /usr/local/lftp 练习: 1.简述源码包编译过程,并解释每个步骤的功能? 解压源码包 解压后的源码包放在/usr/local/src/ tar -xvf lftp-4.7.7.tar.gz -C /usr/local/src/ 安装前配置和检测: [root@localhost lftp-4.7.7]# ./configure --prefix=/usr/local/lftp 根据检测结果安装相应的软件包 编译: [root@localhost lftp-4.7.7]# make 编译安装: [root@localhost lftp-4.7.7]# make install 清除编译痕迹 [root@localhost lftp-4.7.7]# make clean 2.解释源码包和rpm包的区别是什么? RPM包是二进制包,源码包是C语言文件 RPM包的安装位置是多个位置,是由RPM包的作者指定 RPM包安装后访问效率较低,源码包访问效率高 3.删除lftp软件,重新编译lftp软件并安装到/tmp下 
4.其他类型软件包
二进制bin包: [root@localhost software]# ./RealPlayer\&reg\;\ 11\ for\ Linux\ RealPlayer11GOLD.bin [root@localhost software]# yum install glibc-2.17-157.el7_3.1.i686 [root@localhost software]# yum remove libstdc++-4.8.5-4.el7.x86_64 [root@localhost software]# yum install libstdc++-4.8.5-11.el7.i686 [root@localhost software]# realplay 解决运行前需要的软件包: [root@localhost software]# yum install libgdk-x11-2.0.so.0 [root@localhost software]# yum install gtk2-2.24.28-8.el7.i686 [root@localhost ~]# rpm -ivh pangox-compat-0.0.2-2.el7.i686.rpm [root@localhost software]# yum install libcanberra-gtk2-0.30-5.el7.i686 半源码半rpm [root@localhost ~]# rm -rf /usr/local/lftp/ lftp-3.5.1-2.fc6.src.rpm 安装: [root@localhost software]# rpm -ivh lftp-3.5.1-2.fc6.src.rpm 生成: [root@localhost ~]# ls -d /root/rpmbuild/ SOURCES 源代码和补丁 SPECS/lftp.spec 制作rpm包的配置文件 编译成rpm包 [root@localhost rpmbuild]# rpmbuild -bb /root/rpmbuild/SPECS/lftp.spec  [root@localhost rpmbuild]# ls /root/rpmbuild/RPMS/x86_64/lftp-* /root/rpmbuild/RPMS/x86_64/lftp-3.5.1-2.el7.centos.x86_64.rpm /root/rpmbuild/RPMS/x86_64/lftp-debuginfo-3.5.1-2.el7.centos.x86_64.rpm [root@localhost rpmbuild]# rpm -ivh /root/rpmbuild/RPMS/x86_64/lftp-3.5.1-2.el7.centos.x86_64.rpm [root@localhost rpmbuild]# yum install perl-String-CRC32 [root@localhost ftp]# rpm -ivh /var/ftp/perl-String-CRC32-1.4-19.el7.x86_64.rpm [root@localhost rpmbuild]# yum install perl-Digest-MD5 打补丁 patch 源文件 补丁包 

七、进程管理

1.守护进程
讯享网[root@localhost ~]# ps PID TTY TIME CMD 2857 pts/0 00:00:00 bash 3753 pts/0 00:00:00 ps PID 进程编号 TTY 占用的终端 TIME 占用CPU的时间 CMD 执行命令 ps -e 系统中所有的进程 -f 详细信息 [root@localhost ~]# ps -ef | head UID PID PPID C STIME TTY TIME CMD UID 进程拥有者 PID 进程编号 PPID 父进程 C 占用cpu的百分比 STIME 进程启动时间 TTY 在那个终端上运行的 TIME 占用CPU的时间 CMD 执行命令 BSD ps a 所有在终端运行进程 u 详细信息 x 所有进程 [root@localhost ~]# ps aux | head USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND USER 进程拥有者 PID 进程编号 %CPU 占用CPU的百分比 %MEM 占用物理内存的百分比 VSZ 预设内存(虚拟内存) RSS 真实内存 TTY 运行终端 STAT 进程状态 START 进程启动时间 TIME 占用CPU时间 COMMAND 进程名称 top 动态查看进程信息 top - 14:20:12 up 42 min, 4 users, load average: 0.30, 0.27, 0.25 当前系统时间 运行了多久 登录用户 CPU平均负载 Tasks: 419 total, 2 running, 417 sleeping, 0 stopped, 0 zombie 进程总数 运行进程 417个休眠 停止 僵尸 %Cpu(s): 9.8 us, 3.0 sy, 0.0 ni, 83.5 id, 3.5 wa, 0.0 hi, 0.1 si, 0.0 st 用户态 内核泰 调整nice 空闲 等待io 硬中断 软中断 虚拟化偷取 KiB Mem :  total,  free,  used,  buff/cache KiB Swap:  total,  free, 0 used.  avail Mem 杀进程: kill -15 4302 正常结束 kill -9 4349 强制结束 pkill httpd killall httpd xkill 前后台切换 [root@localhost ~]# yum install xclock 前台 [root@localhost ~]# xclock -update 1 后台 [root@localhost ~]# xclock -update 1 & 脱离终端运行 [root@localhost ~]# nohup xclock -update 1 & [root@localhost ~]# xclock -update 1 ctrl+z 停止前台运行,在后台挂起 [root@localhost ~]# jobs 查看后台挂起进程 [1]+ 已停止 xclock -update 1 [root@localhost ~]# bg 1 后台运行挂起进程 [root@localhost ~]# fg 1 前台运行挂起进程 杀后台进程:kill % 
2.进程状态
PROCESS STATE CODES D uninterruptible sleep (usually IO) 不可中断休眠状态(通常IO) R running or runnable (on run queue) 运行状态 S interruptible sleep (waiting for an event to complete) 可中断的休眠状态 T stopped by job control signal 切换后台 t stopped by debugger during the tracing W paging (not valid since the 2.6.xx kernel) X dead (should never be seen) Z defunct ("zombie") process, terminated but not reaped by its parent < high-priority (not nice to other users) 高优先级 N low-priority (nice to other users) 低优先级 L has pages locked into memory (for real-time and custom IO) 被锁 s is a session leader 会话领导者 l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do) 多线程 + is in the foreground process group 位于前台进程组 nice调整 nice范围 -20~19 越低优先级越高 [root@localhost ~]# nice -n -20 xclock -update 1 [root@localhost ~]# renice 15 -p 5858 proc目录 进程 cat /proc/cpuinfo cpu文件 lm ---> 64位系统 vmx|svm ----> 虚拟化 
3.练习
讯享网1.什么是守护进程? 2.ps -ef 解释每个字段的含义 -e 系统中所有进程 -f 详细信息 3.ps aux解释每个字段的含义 a 所有在终端运行的进程 u 详细信息 x 所有进程 4.top每个字段的含义 top - 14:20:12 up 42 min, 4 users, load average: 0.30, 0.27, 0.25 当前系统时间 运行了多久 登录用户 CPU平均负载 Tasks: 419 total, 2 running, 417 sleeping, 0 stopped, 0 zombie 进程总数 运行进程 417个休眠 停止 僵尸 %Cpu(s): 9.8 us, 3.0 sy, 0.0 ni, 83.5 id, 3.5 wa, 0.0 hi, 0.1 si, 0.0 st 用户态 内核泰 调整nice 空闲 等待io 硬中断 软中断 虚拟化偷取 KiB Mem :  total,  free,  used,  buff/cache KiB Swap:  total,  free, 0 used.  avail Mem 5.解释前后台切换时这些指令的功能 ctrl+z 停止前台进程,在后台挂起 jobs 查看挂起进程 bg 后台运行挂起进程 fg 前台运行挂起进程 kill %1 杀死挂起进程 6.解释以下字符代表什么状态? D 不可中断休眠状态 R 运行状态 S 可中断休眠状态 T 切换后台 t W X Z < 高优先级 N 低优先级 L 被锁 s 会话领导者 l 多线程 + 位于前台进程组 7.nice值得范围是多少?启动进程时如何定义nice值?如何重置nice值? -20~19 nice -n -nice值 进程 renice nice值 -p 进程号 

八、高级命令

1.wc计数
wc -l 统计行数 -c 统计字符 -w 统计单词数(连续的字符串) [root@localhost ~]# wc -l test.txt 1 test.txt [root@localhost ~]# wc -c test.txt  21 test.txt [root@localhost ~]# wc -w test.txt  1 test.txt [root@localhost ~]# cat -n /etc/passwd | head -20 |tail -2 |rev rev 左右颠倒 [root@localhost ~]# cat -n /etc/passwd | head -20 |tail -2 | tac tac 上下颠倒 
2.cut截取
讯享网-d 分割符 -f 取字段 -c 取字符 [root@localhost ~]# head -1 /etc/passwd |cut -d: -f 1-3 root:x:0 [root@localhost ~]# head -1 /etc/passwd |cut -d: -f 1,3 root:0 [root@localhost ~]# head -1 /etc/passwd |cut -d: -f 1 root [root@localhost ~]# head -1 /etc/passwd |cut -c 10 第10个 0 [root@localhost ~]# head -1 /etc/passwd |cut -c 1-10 第1个到第10个 root:x:0:0 [root@localhost ~]# head -1 /etc/passwd |cut -c 1,10 第1个和第10个 r0 
3.grep过滤
[root@localhost ~]# grep 'root' /etc/passwd 含有root的行 [root@localhost ~]# cat -n /etc/passwd | grep 'root' [root@localhost ~]# grep -n 'root' /etc/passwd 显示行号 [root@localhost ~]# grep -v 'root' /etc/passwd 取反 [root@localhost ~]# grep ^'root' /etc/passwd [root@localhost ~]# grep 'halt'$ /etc/passwd -A 3 找到匹配行向后显示3行 -B 3 找到匹配行向前显示3行 -C 3 找到匹配行前后各显示3行 -i 忽略大小写 -x 完全匹配 
4.stat查看文件变动
讯享网[root@localhost ~]# stat aa.txt  文件:"aa.txt" 大小:4 块:8 IO 块:4096 普通文件 设备:802h/2050d Inode: 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 最近访问:2017-05-22 11:43:11. +0800 最近更改:2017-05-22 11:43:09. +0800 最近改动:2017-05-22 11:43:09. +0800 创建时间:- 
5.sort排序
[root@localhost ~]# sort aa.txt 默认按首字符排序 [root@localhost ~]# sort -n aa.txt 按整个数字排序 [root@localhost ~]# sort -n -u aa.txt -u 去掉重复行 [root@localhost ~]# sort -n -u -r aa.txt -r 逆序输出 -t 分隔符 -k 排序列 -d 只考虑空白和字母数字字符 
6.uniq去掉重复行
讯享网[root@localhost ~]# uniq aa.txt 默认去掉连续重复行 [root@localhost ~]# uniq -d aa.txt 显示重复行 [root@localhost ~]# uniq -d -c aa.txt -c 显示重复次数 -u 显示没有连续重复的行 
7.练习
1.统计你当前系统中可登录用户的数量 [root@localhost ~]# grep bash$ /etc/passwd | wc -l 6 [root@localhost ~]# grep -c bash$ /etc/passwd  6 [root@localhost ~]# cat /etc/passwd | cut -d: -f 7| sort | uniq -c 2.[root@localhost ~]# ifconfig eno | awk -F' +' '/broadcast/{print $3}' 172.16.110.247 制作别名myip 显示ip地址 [root@localhost ~]# ifconfig ens33 |head -2|tail -1 |cut -d' ' -f 10 192.168.33.130 [root@localhost ~]# ifconfig eno |grep broadcast| cut -d' ' -f 10 172.16.110.247 [root@localhost ~]# alias myip="ifconfig ens33 |head -2|tail -1 |cut -d' ' -f 10" [root@localhost ~]# myip 192.168.33.130 3. [root@localhost ~]# stat aa.txt  文件:"aa.txt" 大小:4 块:8 IO 块:4096 普通文件 设备:802h/2050d Inode: 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 最近访问:2017-05-22 11:43:11. +0800 最近更改:2017-05-22 11:43:09. +0800 最近改动:2017-05-22 11:43:09. +0800 创建时间:- 取出 11:43:11 11:43:09 11:43:09 [root@localhost ~]# stat aa.txt | grep +0800 |cut -d' ' -f 3|cut -d'.' -f 1 13:49:43 13:49:43 13:49:43 [root@localhost ~]# stat aa.txt |awk -F' |[.]' '/+0800/{print $2}' 13:48:17 13:48:16 13:48:16 1.求passwd文件中uid最大用户的名字 [root@localhost ~]# sort -t':' -k 3 -n /etc/passwd | tail -1 |cut -d: -f 1 nfsnobody 2.求group文件中gid最小的组名和gid [root@localhost ~]# sort -t':' -k 3 -n /etc/group | head -1 |cut -d: -f 1,3 root:0 3.求出系统中所有网卡的ip地址 (ifconfig获取所有网卡信息) [root@localhost ~]# ifconfig |grep netmask| cut -d' ' -f 10 192.168.33.130 127.0.0.1 192.168.122.1 

九、环境变量配置文件

1.环境变量
讯享网环境变量 env 查环境变量 HISTSIZE=1000 历史命名保存的数量 USER=root PWD=/home/robin HOME=/root OLDPWD=/root set 环境变量和非环境变量(自定义变量) 环境变量:父进程定义的环境变量,子进程可以继承 export 自定义变量:父进程定义的自定义变量,子进程不可以继承 bash .bashrc 保存用户定义的别名和函数 .bash_profile 保存用户搜索命令的路径 PATH .bash_history 保存历史命令文件(当用户退出时记录) .bash_logout 保存用户退出时执行的命令 vim .bash_logout echo "byebye" 当用户退出时清除执行过的历史命令 rm -rf ~/.bash_history 重新加载 [root@localhost ~]# source /etc/profile 实验: mkdir /home/robin/test/ vim /home/robin/test/test.sh \#!/bin/bash echo "hello world" chmod +x /home/robin/test/test.sh vim /home/robin/.bash_profile PATH=$PATH:/home/robin/test export PATH 测试 su - robin test.sh .bashrc shell级别环境变量配置文件 .bash_profile 登录级别环境变量配置文件 /etc/bashrc 全局shell级别环境配置文件 /etc/profile 全局登录级别环境配置文件 登录用户时环境配置文件加载顺序 /etc/profile .bash_profile .bashrc /etc/bashrc su robin 和 su - robin的区别: su robin shell级别的切换,只加载两个shell级别的文件 .bashrc /etc/bashrc su - robin 登录级别的切换,4个文件都加载 /etc/profile .bash_profile .bashrc /etc/bashrc 
2.练习
1.当用户退出时,清除自己的操作痕迹 [root@localhost ~]# vim /home/robin/.bash_logout  history -c rm -rf ~/.bash_history 2.将lftp软件加入到搜索路径,对所有用户生效 [root@localhost ~]# vim /etc/profile PATH=$PATH:/usr/local/lftp/bin export PATH [root@localhost ~]# source /etc/profile 3.定义别名la相当于ls -alh 只针对tom用户 [root@localhost ~]# vim /home/tom/.bashrc  alias la="ls -alh" [root@localhost ~]# su - tom  [tom@localhost ~]$ la 1.环境变量和非环境变量如何查询? env set 2.如何定义环境变量和非环境变量? export bash 3.环境变量和非环境变量的区别是什么? 环境变量:父进程定义的环境变量,子进程可以继承 自定义变量:父进程定义的自定义变量,子进程不可以继承 4.解释一下文件的功能? .bash_history 保存历史命令文件 .bash_logout 保存用户退出时执行的命令 .bashrc 保存用户定义的别名和函数 shell级别 .bash_profile 保存用户搜索命令的路径 登录级别 /etc/bashrc 全局定义的别名和函数 shell级别 /etc/profile 全局定义搜索命令的路径 登录级别 5.将源码包安装的lftp软件命令的搜索路径添加到所有用户可以执行的环境配置文件 在/etc/profile中添加 PATH=$PATH:/usr/local/lftp/bin export PATH [root@localhost ~]# source /etc/profile 6.将高级命令作业中,查看所有网卡的命令,做成别名放到root的环境配置中 [root@localhost ~]# vim /etc/bashrc  alias zkq='ifconfig' [root@localhost ~]# source /etc/bashrc  [root@localhost ~]# zkq 

十、shell基础

1.bash特性
讯享网yum -y install bash-com* tab制表符的补齐功能:补齐命令 | 补齐文件名 [root@localhost ~]# systemctl restart vsftpd history 查看执行过的历史命令 [root@localhost ~]# !1039 在执行一次第1039条命令 [root@localhost ~]# !! 在执行一次上一条命令 [root@localhost ~]# !sys 在执行一次以sys开头的命令 [root@localhost ~]# ls /etc/sysconfig/network-scripts/ifcfg-eno  /etc/sysconfig/network-scripts/ifcfg-eno [root@localhost ~]# vim !$ 上一条最后一个参数 vim /etc/sysconfig/network-scripts/ifcfg-eno 
2.shell坏境变量
env 查看环境 [root@localhost ~]# echo $HOME /root [root@localhost ~]# echo $USER root [root@localhost ~]# echo $SHELL [root@localhost ~]# set 环境与非环境变量 环境变量:子进程可以继承父进程定义的环境变量,非环境变量不可以进程 环境变量:export x=100 自定义:x=100 环境变量的配置文件: 用户自己的环境变量配置文件: ~/.bashrc shell级别环境变量配置文件 ~/.bash_profile 登录级别环境变量配置文件 全局环境变量配置文件: /etc/bashrc 全局shell级别环境变量配置文件 /etc/profile 全局登录级别环境变量配置文件 
3.定向符
讯享网> : 表示覆盖写入 1> >>: 表示追加写入 1>> 1,2文件描述符号: 1 : 标准正确输出 2 : 标准错误输出 1>: 标准正确输出,如果文件存在则覆盖,如果文件不存在则创建 1>>: 标准正确输出,如果文件存在则追加,如果文件不存在则创建 2>: 标准错误输出,如果文件存在则覆盖,如果文件不存在则创建 2>>: 标准错误输出,如果文件存在则追加,如果文件不存在则创建 &> 标准正确和标准错误 2>&1 标准错误定向到表正确输出 afdas 1>/tmp/aa.txt 2>&1 
4.shell脚本
判断语法: [root@localhost ~]# cat if.sh  #!/bin/bash 声明命令解释器 # the scripts is test!! if [ -f /tmp/kk.txt ] then echo "文件存在,显示详细信息.稍等......" sleep 1 ls -l '/tmp/kk.txt' else echo "文件不存在,创建文件,稍等......" sleep 1 touch /tmp/kk.txt echo "创建成功" fi 循环语法: #!/bin/bash #查找未使用的ip地址 for i in { 
   1..254} do ( if ping -c 1 172.16.110.$i &> /dev/null then echo "172.16.110.$i is used" else echo "172.16.110.$i is free" fi ) & done 
5.练习
讯享网1.解释以下名词 1> 1>> 2> 2>> &> 2.1 2什么名字? >什么名字? 

十一、磁盘管理

1.主/扩展/逻辑分区
查看磁盘 [root@localhost ~]# fdisk -l [root@localhost ~]# df -Th  分区: [root@localhost ~]# fdisk /dev/sda 命令(输入 m 获取帮助):m d delete a partition 删除分区 l list known partition types 列出 m print this menu 获取帮助 n add a new partition 添加 p print the partition table 打印分区表 q quit without saving changes 退出 w write table to disk and exit 保存退出 t change a partition's system id 修改类型 分区: 命令(输入 m 获取帮助):n Partition type: p primary (3 primary, 0 extended, 1 free) e extended Select (default e): p 已选择分区 4 起始 扇区 (-,默认为 ): 将使用默认值  Last 扇区, +扇区 or +size{ 
   K,M,G} (-,默认为 ):+1G 分区 4 已设置为 Linux 类型,大小设为 1 GiB 命令(输入 m 获取帮助):w 同步分区表,产生新的分区对应的文件 [root@localhost ~]# ls /dev/sda* /dev/sda /dev/sda1 /dev/sda2 /dev/sda3 [root@localhost ~]# partx -a /dev/sda partx: /dev/sda: error adding partitions 1-3 [root@localhost ~]# ls /dev/sda* /dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 格式化: [root@localhost ~]# mkfs.xfs /dev/sda4 挂载使用: [root@localhost ~]# mount /dev/sda4 /mnt/ 删除分区: 卸载分区: [root@localhost ~]# umount /mnt [root@localhost ~]# fdisk /dev/sda 命令(输入 m 获取帮助):d 分区号 (1-4,默认 4):4 分区 4 已删除 命令(输入 m 获取帮助):p 磁盘 /dev/sda:21.5 GB,  字节, 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/**):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000f1b58 设备 Boot Start End Blocks Id System /dev/sda1 * 2048   83 Linux /dev/sda2    83 Linux /dev/sda3    82 Linux swap / Solaris 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: 设备或资源忙. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) 正在同步磁盘。 [root@localhost ~]# ls /dev/sda* /dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 [root@localhost ~]# partx -d /dev/sda partx: /dev/sda: error deleting partitions 1-3 [root@localhost ~]# ls /dev/sda* /dev/sda /dev/sda1 /dev/sda2 /dev/sda3 划分扩展和逻辑分区 命令(输入 m 获取帮助):n Partition type: p primary (3 primary, 0 extended, 1 free) e extended Select (default e): e 已选择分区 4 起始 扇区 (-,默认为 ): 将使用默认值  Last 扇区, +扇区 or +size{ 
   K,M,G} (-,默认为 ): 将使用默认值  分区 4 已设置为 Extended 类型,大小设为 2 GiB 命令(输入 m 获取帮助):p 磁盘 /dev/sda:21.5 GB,  字节, 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/**):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000f1b58 设备 Boot Start End Blocks Id System /dev/sda1 * 2048   83 Linux /dev/sda2    83 Linux /dev/sda3    82 Linux swap / Solaris /dev/sda4    5 Extended 划分逻辑分区 命令(输入 m 获取帮助):n All primary partitions are in use 添加逻辑分区 5 起始 扇区 (-,默认为 ): 将使用默认值  Last 扇区, +扇区 or +size{ 
   K,M,G} (-,默认为 ):+1G 分区 5 已设置为 Linux 类型,大小设为 1 GiB 命令(输入 m 获取帮助):p 磁盘 /dev/sda:21.5 GB,  字节, 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/**):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000f1b58 设备 Boot Start End Blocks Id System /dev/sda1 * 2048   83 Linux /dev/sda2    83 Linux /dev/sda3    82 Linux swap / Solaris /dev/sda4    5 Extended /dev/sda5    83 Linux 命令(输入 m 获取帮助): 命令(输入 m 获取帮助):w [root@localhost ~]# partx -a /dev/sda partx: /dev/sda: error adding partitions 1-3 [root@localhost ~]# ls /dev/sda* /dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5 练习: 1.划分分区 3主分区 每个大小200M 1扩展分区,所有剩余空间 划分4个逻辑分区100M [root@localhost ~]# fdisk /dev/sdb 2.将sdb5 和 sdb6格式化为xfs文件系统 [root@localhost ~]# mkfs.xfs /dev/sdb5 [root@localhost ~]# mkfs.xfs /dev/sdb6 挂载sdb5到/mnt目录 在/mnt目录下创建文件test.txt [root@localhost ~]# touch /mnt/test.txt 挂载sdb6到/mnt目录 问能不能挂载? 如果可以,还能不能看到test.txt文件? 能,看不到 [root@localhost ~]# mount /dev/sdb6 /mnt/ [root@localhost ~]# ls /mnt/ 挂载在sdb5到/mnt目录 再将sdb5挂载到/opt目录 是否可以? 在/mnt和/opt下是不是都可以看到test.txt文件? 都可以 [root@localhost ~]# mount /dev/sdb5 /mnt/ [root@localhost ~]# ls /mnt/ test.txt [root@localhost ~]# mount /dev/sdb5 /opt/ [root@localhost ~]# ls /opt/ test.txt 3.删除逻辑分区sdb7 查看哪个分区消失了?想想为什么? sdb8消失,sdb8的编号变成了sdb7 1.理解磁盘的各种关键字扇区,磁道,柱面 2.理解什么是主分区,扩展分区,逻辑分区 msdos 3.简述划分主分区的过程 用fdisk进行创建,fdisk /dev/sdb p打印 n创建 p选主分区 配置大小 w保存退出 4.简述划分扩展分区的过程 用fdisk进行创建,fdisk /dev/sdb p打印 n创建 e选主分区 配置大小 w保存退出 5.简述划分逻辑分区的过程 用fdisk进行创建,fdisk /dev/sdb p打印 n创建 配置大小 w保存退出 6.将sdb划分为 3个主分区 一个扩展分区 3个逻辑分区 用fdisk创建即可 
2.自动挂载
讯享网mount 命令格式 mount -t 文件系统类型 被挂载的设备 挂载点 [root@localhost ~]# mount /dev/sda5 /mnt/ [root@localhost ~]# umount /dev/sda5 [root@localhost ~]# umount /mnt [root@localhost ~]# umount -l /opt/ [root@localhost ~]# mount -o rw,remount /opt/ 重新挂载 [root@localhost ~]# mount -o bind /root/ /tmp/ 将一个目录挂载到另外的目录 mount -t tmpfs size=500M /mnt/ 挂载内存 mount -t sysfs sys /mnt/ 挂载服务 mount -t procfs sys /mnt/ 自动挂载: 1./etc/rc.local(进入系统前,最后一个启动脚本) mount -t xfs /dev/sda5 /mnt mount -t iso9660 /var/ftp/CentOS7-2.iso /yum 添加执行权限 chmod a+x /etc/rc.d/rc.local 重启测试 2./etc/fstab /dev/sda5 /mnt xfs defaults 0 0 /var/ftp/CentOS7-2.iso /yum/ iso9660 defaults 0 0 被挂载的设备 挂载点 文件系统 参数 dump备份 fsck检查 测试mount -a 3.autofs(按需挂载服务) 安装软件: [root@localhost etc]# yum install autofs 创建目录 [root@localhost ~]# mkdir /test 主配置文件(定义按需挂载目录,定义对该目录挂载设备的文件) [root@localhost etc]# vim /etc/auto.master /test /etc/auto.test 目录 配置文件 [root@localhost etc]# vim /etc/auto.test disk-5 -fstype=xfs,rw :/dev/sda5 触发目录 文件系统类型 被挂载设备 重启autofs服务 [root@localhost etc]# systemctl restart autofs 测试 [root@localhost ~]# cd /test [root@localhost test]# ls  [root@localhost test]# ls iso CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI images Packages RPM-GPG-KEY-CentOS-Testing-7 EULA isolinux repodata TRANS.TBL [root@localhost test]# ls iso 自动卸载: [root@localhost etc]# vim /etc/autofs.conf timeout = 300 自定义卸载时间 vim /etc/auto.master /test /etc/auto.test --timeout=10 每隔1妙执行一次mount命令 [root@localhost /]# watch -n 1 mount  作业: 使用autofs+yum结合使用 配置autofs auto实现镜像 按需挂载 /test/iso [root@localhost ~]# mkdir /test [root@localhost ~]# vim /etc/auto.master /test /etc/auto.test [root@localhost ~]# vim /etc/auto.test iso -fstype=iso9660,ro :/dev/cdrom [root@localhost ~]# systemctl restart autofs [root@localhost ~]# cd /test/ [root@localhost test]# ls iso CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI images Packages RPM-GPG-KEY-CentOS-Testing-7 EULA isolinux repodata TRANS.TBL [root@localhost test]# ls iso 配置yum [root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# vim yum.repo [yum] name=autofs_yum baseurl=file:///test/iso enabled=1 gpgcheck=0 [root@localhost ~]# yum makecache 练习:(sdb5和sdb6 一定有文件系统) 将分区sdb5通过rc.local文件实现自动挂载,挂载到/opt目录 将分区sdb6通过fstab文件实现自动挂载,挂载到/mnt目录 重启系统测试是否成功? [root@localhost ~]# vim /etc/rc.local  mount -t xfs /dev/sdb5 /opt [root@localhost ~]# vim /etc/fstab  /dev/sdb6 /mnt xfs defaults 0 0 [root@localhost ~]# mount -a 练习: 1.将上一章5,6,7这个三个逻辑分区,使用不同的方法实现自动挂载 如: 格式化sdb5,6,7为xfs格式 sdb5 rc.local方式 [root@localhost ~]# vim /etc/rc.local  mount -t xfs /dev/sdb5 /mnt [root@localhost ~]# chmod a+x /etc/rc.d/rc.local  重启生效 sdb6 fstab方式 [root@localhost ~]# vim /etc/fstab  /dev/sdb6 /opt xfs defaults 0 0 [root@localhost ~]# mount -a sdb7 autofs方式 [root@localhost ~]# yum -y install autofs [root@localhost ~]# mkdir /lj7 [root@localhost ~]# vim /etc/auto.master /lj7 /etc/auto.lj7 [root@localhost ~]# vim /etc/auto.lj7 luoji7 -fstype=xfs,rw :/dev/sdb7 [root@localhost ~]# systemctl restart autofs [root@localhost ~]# cd /lj7/ [root@localhost lj7]# ls luoji7 [root@localhost lj7]# ls luoji7 
3.交换分区扩大缩小
扩大交换分区: 1.分区 2.格式化 [root@localhost ~]# mkswap /dev/sda6 正在设置交换空间版本 1,大小 =  KiB 无标签,UUID=266ce265-7659-4e77-971e-44de60c5ab2d 3.激活新的交换分区 [root@localhost ~]# free total used free shared buff/cache available Mem:    12016   Swap:  0  [root@localhost ~]# swapon /dev/sda6 [root@localhost ~]# free total used free shared buff/cache available Mem:    12068   Swap:  0  [root@localhost ~]# swapon -s 文件名 类型 大小 已用 权限 /dev/sda3 partition  0 -1 /dev/sda6 partition  0 -2 新交换分区永久生效 方法1: vim /etc/rc.local swapon /dev/sda6 方法2: UUID blkid /dev/sda6 查UUID vim /etc/fstab /dev/sda6 swap swap defaults 0 0 修改分区编号: [root@localhost ~]# fdisk /dev/sda 命令(输入 m 获取帮助):t 分区号 (1-6,默认 6):6 Hex 代码(输入 L 列出所有代码):82 已将分区“Linux”的类型更改为“Linux swap / Solaris” 命令(输入 m 获取帮助):w 命令(输入 m 获取帮助):p 缩小交换分区: 1. [root@localhost ~]# swapoff /dev/sda6 取消激活交换分区 2. 删除永久激活设置 3.删除分区 练习: 1.查看你当前的交换分区大小 free -m [root@localhost test]# free -m total used free shared buff/cache available Mem: 972 394 143 10 434 422 Swap: 1023 0 1023 2.将交换分区扩大1G,并保证重启后依然有效 [root@localhost ~]# fdisk /dev/sdb 创建一个1G的分区,类型为82 [root@localhost ~]# mkswap /dev/sdb1 Setting up swapspace version 1, size =  KiB no label, UUID=e640d0a9-4401-4bfc-9ddf-155c91d749f8 [root@localhost ~]# swapon /dev/sdb1 [root@localhost ~]# swapon NAME TYPE SIZE USED PRIO /dev/dm-1 partition 1024M 0B -2 /dev/sdb1 partition 200M 0B -3 [root@localhost ~]# vim /etc/fstab  /dev/sdb1 swap swap defaults 0 0 3.将交换分区还原 [root@localhost ~]# swapoff /dev/sdb1 删除永久激活设置 删除分区 1.什么是交换分区?它的作用是什么? linux交换分区即是linux的SWAP分区 SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用 2.将你当前的交换分区扩大到2GB,在缩小到1GB [root@localhost ~]# fdisk /dev/sdb 创建一个1G的分区,类型为82 [root@localhost ~]# mkswap /dev/sdb1 [root@localhost ~]# swapon /dev/sdb1 [root@localhost ~]# vim /etc/fstab  /dev/sdb1 swap swap defaults 0 0 [root@localhost ~]# swapoff /dev/sdb1 
4.raid磁盘阵列
讯享网多块硬盘做raid 磁盘阵列: 1.数据冗余 2.读写加速 raid的级别 level 0 #速度 作用: 条带化 数量: 2(最少) size:500G 1T 2n level 1 作用: 镜像 #冗余 数量: 2(最少) size: 500G 500G n/2 level 5 作用: 带奇偶数校验的条带化 数量: 3(最少) size:500G n-1 1T level 10 作用: raid1+raid0 数量: 4(最少) size:500G 1T n/2 软raid(使用软件模拟) 创建raid 0 mdadm -C -n 2 -l 0 /dev/md0 /dev/sda5 /dev/sda6 创建 数量 级别 名称 磁盘 查询 mdadm -D /dev/md0 显示扫描信息 mdadm -Ds 永久化软raid [root@localhost ~]# vim /etc/mdadm.conf DEVICE /dev/sdb5 /dev/sdb6 [root@localhost ~]# mdadm -Ds >> /etc/mdadm.conf #详细见后面 [root@localhost ~]# vim /etc/mdadm.conf DEVICE /dev/sdb5 /dev/sdb6 ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=4554cd1e:17c73a67:9bcf5739:c921f89c 停止 mdadm -S /dev/md0 激活阵列 mdadm -A /dev/md0 /dev/sda5 /dev/sda6 删除: mdadm -S /dev/md0 rm -rf /dev/md0 rm -rf /etc/mdadm.conf 清除超级块信息 mdadm --zero-superblock /dev/sda5 /dev/sda6 raid1: mdadm -C -n 2 -l 1 /dev/md1 /dev/sda5 /dev/sda6 raid5: mdadm -C -n 3 -l 5 /dev/md5 /dev/sda5 /dev/sda6 /dev/sda7 rai10: mdadm -C -n 4 -l 10 /dev/md5 /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8 模拟损坏: 创建 mdadm -C -n 3 -l 5 /dev/md5 /dev/sda{ 
   5,6,7} 格式化,挂载,使用磁盘后模拟 mkfs.xfs /dev/md5 mount /dev/md5 /mnt 损坏 mdadm -f /dev/md5 /dev/sda5 查询 mdadm -D /dev/md5 移除 mdadm -r /dev/md5 /dev/sda5 添加 mdadm -a /dev/md5 /dev/sda8 备用盘: mdadm -C -n 3 -l 5 /dev/md5 /dev/sda{ 
   5,6,7} -x 1 /dev/sda8 mdadm -D /dev/md5 永久生效: mdadm -C -n 3 -l 5 /dev/md5 /dev/sda{ 
   5,6,7} -x 1 /dev/sda8 [root@localhost ~]# vim /etc/mdadm.conf DEVICE /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8 [root@localhost ~]# mdadm -Ds >> /etc/mdadm.conf [root@localhost ~]# cat /etc/mdadm.conf DEVICE /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8 #手动添加 ARRAY /dev/md5 metadata=1.2 spares=1 name=localhost:5 UUID=5249b8cf:c2a5b49f:405a4a2c:2247d8c9 [root@localhost ~]#  1.卸载 2.停止 3.删除 4.清除超级块 练习 1.简述raid0 raid1 raid5 raid10 各有什么功能? 2.分别做raid0 raid1 raid5 raid10 实验, 并模拟损坏 
5.lvm管理
逻辑卷 lvm功能: 1.整合磁盘空间 2.在线扩容 操作 pv 物理卷 1.创建pv pvcreate /dev/sda6 pvcreate /dev/sda7 2.查询pv pvs pvdisplay vg 卷组 1.创建vg vgcreate vg0 /dev/sda6 /dev/sda7 -s 指定pe大小,4的倍数 2.查询vg vgs vgdisplay lv 逻辑卷 1.创建 lvcreate -L 700M -n lv0 vg0 -L size -l pe块个数 -n name 2.查询 lvs lvdisplay 格式化 mkfs.xfs /dev/vg0/lv0 挂载 mount /dev/vg0/lv0 /mnt/ 在线扩容lv 1.lvm块设备在线扩容 2.文件系统的在线扩容 lvm块设备在线扩容 前提vg是有可用空间 lvextend -L +200M /dev/vg0/lv0 文件系统的在线扩容 xfs_growfs /dev/vg0/lv0 在线扩容vg 1.有额外分区或者磁盘 2.创建成pv 3.扩容 vgextend vg0 /dev/sda8 数据迁移(必须在一个vg下) 1.指定设备移动数据 pvmove /dev/sda6 /dev/sdb 2.不指定设备移动数据 pvmove /dev/sda7 vg移除pv vgreduce vg0 /dev/sda{ 
   6,7,8} 删除lv 1.umount /dev/vg0/lv0 2.lvremove /dev/vg0/lv0 3.vgremove vg0 4.pvremove /dev/sda{ 
   6,7,8} lvm快照snapshot vgcreate vg0 /dev/sdb lvcreate -L 500M -n /dev/vg0/lv0 vg0 mkfs.xfs /dev/vg0/lv0 mount /dev/vg0/lv0 /mnt/ 创建快照 COW(copy on write) lvcreate -L 52M -s -n /dev/vg0/lv0-s0 lv0 -s 快照 1.只使用快照,源lv不动 快照内文件修改,不影响源lv数据,快照空间使用100%,快照自动损坏 创建lv0,挂载,添加数据 创建快照 挂载快照 在快照内添加数据,达到%100,快照损毁 2.只使用源lv,快照作为备份 只适合临时备份 随着源lv的变动,快照也随着变大,但是快照中只显示源数据,而不会变动 快照作为备份,空间最好大于数据大小,还要注意选择服务器最空闲时间 多用备份 创建lv0,挂载,添加数据 创建快照,作为备份 删除原lv0内的内容 使用快照恢复数据 注意 再备份过程中,如原lv有大量数据写入,可能造成快照使用率达到100%,损毁 快照大小,要大于备份数据大小 快照大小要足够大... EXT4文件系统(centos) pvcreate /dev/sda6 /dev/sda7 vgcreate vg0 /dev/sda{ 
   6,7} lvcreate -L 500M -n lv0 vg0 mkfs.ext4 /dev/vg0/lv0 mount /dev/vg0/lv0 /mnt/ lvextend -L +200M /dev/vg0/lv0 在线扩容 lvextend -L +200M /dev/vg0/lv0 resize2fs /dev/vg0/lv0 600M 指定大小 resize2fs /dev/vg0/lv0 扩大lv的空间 离线缩小 umount /mnt/ e2fsck -f /dev/vg0/lv0 resize2fs /dev/vg0/lv0 200M lvresize -L 200M /dev/vg0/lv0 快照同时挂载 lvcreate -L 50M -s -n /dev/vg0/lv0-s0 /dev/vg0/lv0 mount /dev/vg0/lv0 /mnt/ mount /dev/vg0/lv0-s0 /opt/ 练习 1.简述lvm的功能和作用 整合磁盘空间 在线扩容 2.使用硬盘sdb sdc sdd创建lvm,并实现在线扩容lv 和 在线扩容vg 准备分区5快,每块200M 用fdisk创建5个磁盘 创建raid 5 [root@localhost ~]# mdadm -C -n 3 -l 5 /dev/md5 /dev/sdb{1,2,3} 创建raid 1 [root@localhost ~]# mdadm -C -n 2 -l 1 /dev/md1 /dev/sdb{5,6} [root@localhost ~]# mdadm -S /dev/md1 mdadm: stopped /dev/md1 [root@localhost ~]# mdadm -S /dev/md5 mdadm: stopped /dev/md5 [root@localhost ~]# rm -rf /dev/md1 [root@localhost ~]# rm -rf /dev/md5 [root@localhost ~]# mdadm --zero-superblock /dev/sdb{1,2,3,5,6} 做成lv0 300M [root@localhost ~]# pvcreate /dev/sdb{1,2,3} [root@localhost ~]# vgcreate vg0 /dev/sdb{1,2,3} [root@localhost ~]# lvcreate -L 300M -n lv0 vg0 格式化,挂载 [root@localhost ~]# mkfs.xfs /dev/vg0/lv0  [root@localhost ~]# mount /dev/vg0/lv0 /mnt/ 在线扩容到500M [root@localhost ~]# lvextend -L +200M /dev/vg0/lv0  [root@localhost ~]# xfs_growfs /dev/vg0/lv0  做快照52M [root@localhost ~]# lvcreate -L 52M -s -n /dev/vg0/lv0-s0 lv0 还原 [root@localhost ~]# lvremove /dev/vg0/lv0-s0  [root@localhost ~]# umount /mnt  [root@localhost ~]# lvremove /dev/vg0/lv0 [root@localhost ~]# vgremove vg0 [root@localhost ~]# pvremove /dev/sdb{1,2,3} 
6.facl使用方法
讯享网文件系统属性 i 不允许对文件做以下操作: 不能删除 不能修改 不能剪切 不能重命名 如果是目录: 不能创建新文件 chattr +i file/dir lsattr file/dir a 不允许对文件做以下操作: 不能删除 不能修改 不能剪切 不能重命名 可以追加新内容 如果是目录: 可以创建新文件 chattr +a file/dir facl(文件访问控制列表) xfs的facl(xfs默认支持facl) + 表示设置facl权限了 getfacl 获取facl信息 setfacl 设置facl信息 setfacl -m u:robin:rw aa.txt 设置用户 setfacl -m u:zorro:rw aa.txt setfacl -m g:upup:rw aa.txt 设置组 setfacl -m m:r aa.txt 设置mask setfacl -x robin aa.txt 删除某个用户额外的权限 setfacl -x g:upup aa.txt 删除组的额外权限 setfacl -b aa.txt 删除所有额外权限及取消+标记 练习: 建立三个普通用户 seker,zorro,shrek.用 root 用户在/root 目录中建立一个文件 abc.txt使 seker 用户既能读又能写 abc.txt 文件,但不能删除 使 zorro 用户只能读取,不能写也不能删这个文件 使 shrek 用户只能删除,不能读写这个文件. 以上三个条件同时成立 /root r-xrwxr-x root root /root/abc.txt rw-r----- seker zorro seker seker zorro zorro shrek shrek chown seker /root/abc.txt chown .zorro /root/abc.txt chmod 640 /root/abc.txt chmod g+w /root usermod -a -G root shrek chmod o+rx /root 用facl完成上题: [root@localhost ~]# setfacl -m u:seker:rw /root/abc.txt  [root@localhost ~]# setfacl -m u:seker:rx /root/ [root@localhost ~]# setfacl -m u:zorro:r /root/abc.txt  [root@localhost ~]# setfacl -m u:zorro:rx /root/ [root@localhost ~]# setfacl -m u:shrek:- /root/abc.txt  [root@localhost ~]# setfacl -m u:shrek:rwx /root/ 继承权限:(设置两次先普通,在加-d或者d:) setfacl -m u:robin:rwx dir setfacl -m d:u:robin:rwx dir ---------------------- ext4文件facl(centos5.x ) mount -o facl /dev/sda5 /mnt 练习 1.简述setfacl能解决什么问题? 进行文件访问控制 2.在/tmp目录下创建文件aa.txt,拥有者root 所属组root 权限600 要求: robin用户可以读写/tmp/aa.txt zorro用户可以读写/tmp/aa.txt upup组的tom和jerry只可以读aa.txt文件 [root@localhost ~]# setfacl -m u:robin:rw /tmp/aa.txt  [root@localhost ~]# setfacl -m u:zorro:rw /tmp/aa.txt  [root@localhost ~]# setfacl -m g:upup:r /tmp/aa.txt  3.在/tmp目录下创建目录test, 要求: robin用户可以读写删除/tmp/test下的所有新建文件 [root@localhost ~]# mkdir /tmp/test [root@localhost ~]# ll /tmp/ drwxr-xr-x. 2 root root 6 Oct 28 17:28 test [root@localhost ~]# setfacl -m u:robin:rwx /tmp/test 
7.quota磁盘配额的使用
quota磁盘配额(user) 1.开启配额功能: [root@localhost /]# mount -o usrquota /dev/sda5 /mnt/ 2.设置用户配额: [root@localhost /]# edquota -u robin /mnt Disk quotas for user robin (uid 1000): Filesystem blocks soft hard inodes soft hard /dev/sda5 0 50M 100M 0 10 20 3.查询配额的使用情况 [root@localhost /]# repquota -u /mnt 4.启动配额: [root@localhost mnt]# quotaon /mnt/ 测试: 测试空间配额 su - robin dd if=/dev/zero of=/mnt/data bs=120M count=1 dd: 写入"/mnt/data" 出错: 超出磁盘限额 测试文件个数配额 touch /mnt/abc{ 
   1..25}.txt group配额: group upup useradd -g upup king useradd -g upup zorro 1.开启组配额 [root@localhost /]# mount -o grpquota /dev/sda5 /mnt/ 2.配置组配额 [root@localhost /]# edquota -g upup Disk quotas for group upup (gid 1002): Filesystem blocks soft hard inodes soft hard /dev/sda5 0 51200  0 10 20 3.查询配额的使用情况 [root@localhost /]# repquota -g /mnt 4.激活组配额 [root@localhost /]# quotaon -g /mnt/ 测试: [root@localhost ~]# su - king [king@localhost mnt]$ dd if=/dev/zero of=/mnt/data1 bs=80M count=1 [root@localhost ~]# su - zorro [zorro@localhost ~]$ dd if=/dev/zero of=/mnt/data2 bs=80M count=1 测试配额空间为共用 组和用户一起挂: [root@localhost ~]# mount -o usrquota,grpquota /dev/sdb5 /mnt/ 设置宽限时间 [root@localhost ~]# edquota -t Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/sda5 30seconds 7days 测试: 1.开启配额功能: [root@localhost /]# mount -o usrquota /dev/sda5 /mnt/ 2.设置用户配额: [root@localhost /]# edquota -u robin /mnt Disk quotas for user robin (uid 1000): Filesystem blocks soft hard inodes soft hard /dev/sda5 0 50M 100M 0 10 20 3.查询配额的使用情况 [root@localhost /]# repquota -u /mnt 4.启动配额: [root@localhost mnt]# quotaon /mnt/ 测试: 测试空间配额 su - robin 激活软限 dd if=/dev/zero of=/mnt/data1 bs=60M count=1 repquota 去查看quota的信息 grace时间变成none repquota /mnt 查看配额情况 改宽限时间 edquota -t 剩余40M 不可用 删除文件到软限以下 恢复可用空间 复制配额:-p edquota -gqu -p robin zorro 练习: 准备组easthome 用户robin zorro 都属于easthome组 robin用户在/mnt下配额为40M,60M 10,20 zorro用户在/mnt下配额为40M,60M 10,20 拷贝robin的配额 要求easthome组在/mnt下大小配额为80M,100M 10,20 用户配的宽限时间修改为3小时 [root@localhost ~]# mount -o usrquota,grpquota /dev/sdb5 /mnt/ [root@localhost ~]# edquota -u robin /mnt/ [root@localhost ~]# edquota -u -p robin zorro [root@localhost ~]# edquota -u zorro /mnt/ [root@localhost ~]# edquota -g easthome  [root@localhost ~]# edquota -t [root@localhost ~]# quotaon /mnt/ 练习 1.解释磁盘配额的功能?可以对什么进行限制? 对用户和组进行限制,限制创建的文件总大小和数量 2.对分区sdb1进行配额 robin用户最多可以使用100M空间,软限制自定义 zorro用户最多可以创建100个文件,软限制自定义 [root@localhost ~]# mount -o usrquota /dev/sdb1 /mnt/ [root@localhost ~]# edquota -u robin /mnt/ Disk quotas for user robin (uid 1001): Filesystem blocks soft hard inodes soft hard /dev/sdb1 0 51200  0 0 0 [root@localhost ~]# edquota -u zorro /mnt/ Disk quotas for user zorro (uid 1002): Filesystem blocks soft hard inodes soft hard /dev/sdb1 0 0 0 0 80 100 [root@localhost ~]# quotaon /mnt/ 切换到robin用户和zorro用户下进行测试 
8.GPT分区
讯享网[root@localhost /]# parted /dev/sdb ---------------------------------分区命令 GNU Parted 3.1 使用 /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) mklabel ------------------------------------------------选择分区表类型 新的磁盘标签类型? gpt (parted) print ------------------------------------------打印分区表信息 Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 2147MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name 标志 (parted) mkpart 分区名称? []? sdb1 文件系统类型? [ext2]? xfs 起始点? 1 结束点? 500M (parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 2147MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name 标志 1 1049kB 500MB 499MB xfs sdb1 (parted) mkpart 分区名称? []? sdb2 文件系统类型? [ext2]? xfs 起始点? 500M 结束点? 1000M (parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 2147MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name 标志 1 1049kB 500MB 499MB xfs sdb1 2 500MB 1000MB 500MB sdb2 mkfs.xfs -f /dev/sdb1 mount /dev/sdb1 /mnt/ umount /dev/sdb1 删除 [root@localhost /]# parted /dev/sdb GNU Parted 3.1 使用 /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) help align-check TYPE N check partition N for TYPE(min|opt) alignment help [COMMAND] print general help, or help on COMMAND mklabel,mktable LABEL-TYPE create a new disklabel (partition table) mkpart PART-TYPE [FS-TYPE] START END make a partition name NUMBER NAME name partition NUMBER as NAME print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partition quit exit program rescue START END rescue a lost partition near START and END rm NUMBER delete partition NUMBER select DEVICE choose the device to edit disk_set FLAG STATE change the FLAG on selected device disk_toggle [FLAG] toggle the state of FLAG on selected device set NUMBER FLAG STATE change the FLAG on partition NUMBER toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER unit UNIT set the default unit to UNIT version display the version number and copyright information of GNU Parted (parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 2147MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name 标志 1 1049kB 500MB 499MB xfs sdb1 2 500MB 1000MB 500MB sdb2 (parted) rm 2 (parted) rm 1 (parted) print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 2147MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name 标志 (parted) [root@localhost /]# ls /dev/sdb* /dev/sdb 
9.ext4和xfs文件系统
ext4文件系统 查看超级块信息 tune2fs -l /dev/vg0/lv0 e2label /dev/vg0/lv0 test mount LABEL=test /opt 最大挂载次数 tune2fs -c 20 /dev/vg0/lv0 当前挂载次数 tune2fs -C 1 /dev/vg0/lv0 更改卷标 tune2fs -L xxxx /dev/vg0/lv0 添加支持acl功能 tune2fs -o acl /dev/vg0/lv0 取消acl tune2fs -o ^acl /dev/vg0/lv0 dumpe2fs /dev/sda8 xfs EXT家族对文件格式化时预先规划出所有的inode/block及中介数据等,未来系统就可以直接取用,不需再分配。早期的磁盘容量不太大的时候这就可以,但随着时代的发展,数据量越来越大,磁盘容量越来越大。现在都已经说到PB,EB的数据了,那么TB以上等级的传统ext 家族文件系统在格式化的时候就得废掉好多时间。。 另外一个原因,虚拟化的应用现在越来越广泛,作为虚拟化磁盘来源的巨型文件(单一文件好几个G及以上)也就越来越常见。这种巨型文件在处理上需要考虑到效能的问题,否则虚拟磁盘的效率就会不太好看。 所以,从centos开始,预设的文件系统由EXT4变成了xfs这个较适合高容 量磁盘与巨型文件效能较佳的文件系统了。 XFS文件系统的配置 基本上XFS就是一个日志式文件系统,之所以现在把它当预设的文件系统 是因为它原本就是被开发用于高容量磁盘以及高性能文件系统之用的,相当适合于现在的环境。此外,几乎所有EXT4文件系统具有的功能,xfs都具备。 xfs文件系统在资料的分布上,主要规划为三个部分:资料区(data section),文件系统活动登录区(log section),实时运作(realtime section)。具体如下: 1资料区(data section) 这个区域基本上与之前说的EXT家族一样,包括inode、block、superblock等数据都放在这个区块。这个数据区与ext家族的block group类似,分多个储存区群组(allocation groups)。每个储存区群组中都包含了整个文件系统的superblock,剩余空间的管理机制,inode的分配与追踪。此外,inode,block都是系统需要用到时才会动态配置产生,所以格式化动作较EXT家族快了很多。 其实,只需要把这个数据区的储存区群组当成ext的block群组就可以了,只是inode与block是动态产生的,并非一开始于格式化就完成配置的。 2文件系统活动登录区(log section) 这个区域主要被用来记录文件系统的变化,具体原理和之前说的相同。 因为系统所有的动作都会在这个区域做个记录所以这个区域的磁盘活动是相当频繁的,xfs的设计在这里有一个巧妙之处,你可以指定外部的磁盘来作为xfs文件系统的日志管理区块。例如,你可以将SSD磁盘作为xfs的文件系统活动登录区,这样,当系统需要进行任何活动时,就可以更迅速的工作。 3实时运作区(realtime section) 当有文件要被建立时,xfs会在这个区段里找一个到数个extent区块,将文件放置在这个区块中,等到分配完毕后,再写入到data section的inode和block中。这个extent区块的大小得要在格式化的时候就先指定,最小值为4K最大可到1G。一般非磁盘阵列的磁盘默认为64K容量,而具有类似磁盘阵列的stripe情况下,则建议extent设定为与stripe一样大较佳。这个extent最好不要乱动,因为可能会影响到实体磁盘的效能。 下面解释一下以上输出的信息: isize : inode的容量,这里为256bytes。 agcount:储存区群组的个数,这里有4个。 agsize : 每个储存区群组里的block个数,这里为32000个。 sectsz:逻辑扇区(sector)的容量,这里为512bytes。 bsize:每个block的容量为4 k。 blocks:共有个block在这个文件系统内。 sunit,swidth:与磁盘阵列的stripe相关性较高,这里暂时不说明。 internal,指这个登录区的位置在文件系统内,而不是外部系统的意思,占用了4K * 853空间。 第9行:realtime区域,extent容量为4k,none=>不过目前没有使用。 xfs有个写入屏障,在有缓存的情况下开启barrier功能,保证数据安全,如果没有缓存可以关闭这个参数 mount -o nobarrier /dev/device /mount/point xfs支持的配额: xfs_quota usrquota groupquota project 用户,组配额 [root@localhost ~]# mount -o usrquota,grpquota /dev/sda3 /mnt/ [root@localhost ~]# xfs_quota -x -c 'report' /mnt/ User quota on /mnt (/dev/sda3) Blocks User ID Used Soft Hard Warn/Grace ---------- -------------------------------------------------- root 4 0 0 00 [--------] Group quota on /mnt (/dev/sda3) Blocks Group ID Used Soft Hard Warn/Grace ---------- -------------------------------------------------- root 4 0 0 00 [--------] [root@localhost ~]# xfs_quota -x -c 'limit bsoft=50K bhard=100K robin' /mnt [root@localhost ~]# xfs_quota -x -c 'report' /mnt/ User quota on /mnt (/dev/sda3) Blocks User ID Used Soft Hard Warn/Grace ---------- -------------------------------------------------- root 4 0 0 00 [--------] robin 0 52 100 00 [--------] Group quota on /mnt (/dev/sda3) Blocks Group ID Used Soft Hard Warn/Grace ---------- -------------------------------------------------- root 4 0 0 00 [--------] xfs_quota -x -c 'limit -g bsoft=1000m bhard=1200m accounting' /target/path prject配额(对目录配额) mkdir /quota #创建配额目录 mount -o prjquota /dev/sda8 /quota #挂载设备,开启支持目录配额 mkdir /quota/test #创建测试目录 mount /dev/sda8 on /quota type xfs (rw,relatime,attr2,inode64,prjquota) [root@localhost ~]# echo 50:/quota/test >> /etc/projects #配置project的id和对应的目录 [root@localhost ~]# echo test:50 >> /etc/projid #项目名称和对应的id [root@localhost ~]# cat /etc/projects 50:/quota/test [root@localhost ~]# cat /etc/projid test:50 xfs_quota -x -c 'project -s -p /quota/test 50' #项目名称 xfs_quota -x -c 'limit -p bhard=100M 50' /quota #限制目录大小 查询 xfs_quota -x -c 'report' /quot #查询 xfs局限性 1.XFS是一个单节点文件系统,如果需要多节点同时访问需要考虑使用GFS2文件系统 2.XFS支持16EB文件系统,而redhat仅支持100TB文件系统 3.XFS较少的适用在单线程元数据密集的工作负荷,在单线程创建删除巨大数量的小文件的工作负荷下,其他文件系统(ext4)表现的会更好一些 4.xfs文件在操作元数据时可能会使用2倍的CPU资源,在CPU资源有限制的情况下可以研究使用不同文件系统 5.xfs更多适用的特大文件的系统快速存储,ext4在小文件的系统或系统存储带宽有限的情况下表现的更好 [root@node6 ~]# yum install xfsprogs -y [root@node6 ~]# mkfs.xfs /dev/vdb1 meta-data=/dev/vdb1 isize=256 agcount=4, agsize=6016 blks = sectsz=512 attr=2, projid32bit=0 data = bsize=4096 blocks=24064, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=1200, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 日志分离 [root@node6 ~]# mkfs.xfs -l logdev=/dev/vdb2 /dev/vdb1 -f meta-data=/dev/vdb1 isize=256 agcount=4, agsize=6016 blks = sectsz=512 attr=2, projid32bit=0 data = bsize=4096 blocks=24064, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =/dev/vdb2 bsize=4096 blocks=24576, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@node6 ~]# mount -o logdev=/dev/vdb2 /dev/vdb1 /xfs/ lvm在线扩容和文件系统扩容 [root@node6 ~]# pvcreate /dev/vdb1 /dev/vdb2  [root@node6 ~]# vgcreate vgxfs /dev/vdb2 /dev/vdb1 [root@node6 ~]# lvcreate -l 25 -n lvxfs vgxfs Logical volume "lvxfs" created [root@node6 ~]# mkfs.xfs /dev/vgxfs/lvxfs  meta-data=/dev/vgxfs/lvxfs isize=256 agcount=4, agsize=6400 blks = sectsz=512 attr=2, projid32bit=0 data = bsize=4096 blocks=25600, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=1200, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@node6 ~]# mount /dev/vgxfs/lvxfs /xfs/ [root@node6 ~]# lvextend -l +100%FREE /dev/vgxfs/lvxfs  [root@node6 ~]# xfs_growfs /xfs/ meta-data=/dev/mapper/vgxfs-lvxfs isize=256 agcount=4, agsize=6400 blks = sectsz=512 attr=2, projid32bit=0 data = bsize=4096 blocks=25600, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=1200, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 25600 to 47104 修复文件系统 [root@node6 ~]# umount /xfs [root@node6 ~]# xfs_repair /dev/vgxfs/lvxfs  做日志分离后 [root@node6 ~]# xfs_repair -l /dev/sdb6 /dev/vgxfs/lvxfs  磁盘碎片整理 [root@node6 ~]# mkfs.xfs -l logdev=/dev/vdb2 /dev/vdb1 [root@node6 ~]# mount -o logdev=/dev/vdb2 /dev/vdb1 /xfs [root@node6 ~]# for FILE in file{0..3} ; do dd if=/dev/zero of=/xfs/${FILE} bs=4M count=100 & done [root@node6 ~]# filefrag /xfs/file* xfs_db -c frag -r /dev/sda2 磁盘碎片当前状态 [root@node6 ~]# xfs_fsr -v [root@node6 ~]# umount /xfs [root@node6 ~]# xfs_repair -n -l /dev/vdb2 /dev/vdb1  Phase 1 - find and verify superblock... Phase 2 - using external log on /dev/vdb2 - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan (but don't clear) agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 - agno = 1 - agno = 2 - agno = 3 No modify flag set, skipping phase 5 Phase 6 - check inode connectivity... - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify link counts... No modify flag set, skipping filesystem flush and exiting. [root@node6 ~]#  [root@node6 ~]# xfs_repair -l /dev/vdb2 /dev/vdb1  Phase 1 - find and verify superblock... Phase 2 - using external log on /dev/vdb2 - zero log... - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 - agno = 1 - agno = 2 - agno = 3 Phase 5 - rebuild AG headers and trees... - reset superblock... Phase 6 - check inode connectivity... - resetting contents of realtime bitmap and summary inodes - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify and correct link counts... done 备份 物理备份 逻辑备份 离线备份 在线备份 冷备份 热备份 完全备份 增量备份 差异备份 [root@localhost ~]# mount -o logdev=/dev/vdb2 /dev/vdb1 /xfs [root@localhost ~]# yum install xfsdump [root@localhost ~]# xfsdump -L all -M dumpfile -l 0 - /mnt | xz > /tmp/xfs.$(date +%Y%m%d).all0.xz xfsdump: using file dump (drive_simple) strategy xfsdump: version 3.1.7 (dump format 3.0) xfsdump: level 0 dump of localhost.localdomain:/mnt xfsdump: dump date: Thu Oct 29 10:57:34 2020 xfsdump: session id: 74b04de2-c87d-432b-9c7d-2fcb7e xfsdump: session label: "all" xfsdump: ino map phase 1: constructing initial dump list xfsdump: ino map phase 2: skipping (no pruning necessary) xfsdump: ino map phase 3: skipping (only one dump stream) xfsdump: ino map construction complete xfsdump: estimated dump size: 25216 bytes xfsdump: /var/lib/xfsdump/inventory created xfsdump: creating dump session media file 0 (media 0, file 0) xfsdump: dumping ino map xfsdump: dumping directories xfsdump: dumping non-directory files xfsdump: ending media file xfsdump: media file size 22208 bytes xfsdump: dump size (non-dir files) : 544 bytes xfsdump: dump complete: 0 seconds elapsed xfsdump: Dump Status: SUCCESS [root@localhost ~]# xfsdump -I #查看备份记录 file system 0: fs id: ae09270a-4ad3-42e5-96f7-ae276e65ef9b session 0: mount point: localhost.localdomain:/mnt device: localhost.localdomain:/dev/sdb1 time: Thu Oct 29 10:57:34 2020 session label: "all" session id: 74b04de2-c87d-432b-9c7d-2fcb7e level: 0 resumed: NO subtree: NO streams: 1 stream 0: pathname: stdio start: ino 67 offset 0 end: ino 68 offset 0 interrupted: NO media files: 1 media file 0: mfile index: 0 mfile type: data mfile size: 22208 mfile start: ino 67 offset 0 mfile end: ino 68 offset 0 media label: "dumpfile" media id: 02cee739-d33c-4951-8980-27d xfsdump: Dump Status: SUCCESS [root@localhost mnt]# rm -rf * [root@localhost mnt]# xzcat /tmp/xfs..all0.xz | xfsrestore - /mnt/ #完全恢复 xfsrestore: using file dump (drive_simple) strategy xfsrestore: version 3.1.7 (dump format 3.0) xfsrestore: searching media for dump xfsrestore: examining media file 0 xfsrestore: dump description: xfsrestore: hostname: localhost.localdomain xfsrestore: mount point: /mnt xfsrestore: volume: /dev/sdb1 xfsrestore: session time: Thu Oct 29 10:57:34 2020 xfsrestore: level: 0 xfsrestore: session label: "all" xfsrestore: media label: "dumpfile" xfsrestore: file system id: ae09270a-4ad3-42e5-96f7-ae276e65ef9b xfsrestore: session id: 74b04de2-c87d-432b-9c7d-2fcb7e xfsrestore: media id: 02cee739-d33c-4951-8980-27d xfsrestore: searching media for directory dump xfsrestore: reading directories xfsrestore: 1 directories and 1 entries processed xfsrestore: directory post-processing xfsrestore: restoring non-directory files xfsrestore: restore complete: 0 seconds elapsed xfsrestore: Restore Status: SUCCESS 全备份 [root@localhost mnt]# echo aaa >> a.txt [root@localhost ~]# xfsdump -L all -M dumpfile -l 0 - /mnt | xz > /tmp/xfs.$(date +%Y%m%d).all0.xz [root@localhost mnt]# xzcat /tmp/xfs..all0.xz | xfsrestore - /mnt/ 增量 [root@localhost mnt]# echo bbb > b.txt [root@localhost mnt]# xfsdump -L add -M dumpfile -l 1 - /mnt | xz > /tmp/xfs.$(date +%Y%m%d).add1.xz  [root@localhost mnt]# xzcat /tmp/xfs..all0.xz | xfsrestore - /mnt/ [root@localhost mnt]# xzcat /tmp/xfs..add1.xz | xfsrestore - /mnt/ [root@localhost mnt]# echo cccc > c.txt [root@localhost mnt]# xfsdump -L add -M dumpfile -l 2 - /mnt | xz > /tmp/xfs.$(date +%Y%m%d).add2.xz  [root@localhost mnt]# xzcat /tmp/xfs..add2.xz | xfsrestore - /mnt/ [root@localhost mnt]# echo ddd > d.txt [root@localhost mnt]# xfsdump -L add -M dumpfile -l 3 - /mnt | xz > /tmp/xfs.$(date +%Y%m%d).add3.xz  [root@localhost mnt]# xzcat /tmp/xfs..add3.xz | xfsrestore - /mnt/ 差异 [root@localhost mnt]# xfsdump -L cha -M dumpfile -l 1 - /mnt | xz > /tmp/xfs.$(date +%Y%m%d).cha1.xz  [root@localhost mnt]# xzcat /tmp/xfs..cha1.xz | xfsrestore - /mnt/ 完全恢复+增量恢复 xzcat /home/xfs..all0.xz | xfsrestore - /mnt/ ls xzcat /home/xfs..add1.xz | xfsrestore - /mnt/ ls xzcat /home/xfs..add2.xz | xfsrestore - /mnt/ ls xzcat /home/xfs..add3.xz | xfsrestore - /mnt/ ls 完全恢复+差异恢复 [root@localhost mnt]# xzcat /tmp/xfs..all0.xz | xfsrestore - /mnt/ [root@localhost mnt]# ls a.txt b.txt [root@localhost mnt]# xzcat /tmp/xfs..cha1.xz | xfsrestore - /mnt/ [root@localhost mnt]# ls a.txt b.txt c.txt d.txt 清楚备份记录 rm -rf /var/lib/xfsdump/inventory/* 练习 将/dev/sdb硬盘数据做完全备份 添加新文件1.txt 做增量备份 添加新文件2.txt 做增量备份 添加新文件3.txt 做增量备份 做差异备份 删除所有数据 方法1 恢复数据 全备+增量 方法2 恢复数据 全备+差异 
10.符号链接和硬链接
讯享网文件链接方式 : 符号连接(软链接) ln -s /tmp/passwd /home/ 硬链接 ln /tmp/passwd /tmp/passwd.link 区别: 1.命令相同 参数不同 软链接在创建必须绝对路径 硬链接都可以 2.硬链接的权限和源文件完全一致 软链接的链接文件权限永远是777 和源文件权限不同 3.硬链接可以删除,移动源文件 软链接不可以删除,移动源文件 4.软链接inode和源文件不同 硬链接的inode的源文件相同 5.软链接可以对目录生效 硬链接只可以对文件操作 6.软链接可以跨文件系统 硬链接不可以跨文件系统 unlink 链接文件名 取消链接 练习 1.简述 软连接和硬链接区别. 如何操作 

十二、网络管理

1.配置文件配置网络
ifconfig ip addr show route -n 查看路由 ping ping -c 1 traceroute www.sina.com arping -I eno 192.168.200.54 查看ip地址是否冲突 arp -n vim /etc/sysconfig/network-scripts/ifcfg-eno NAME="eno" DEVICE="eno" ONBOOT=yes ---------------------------->是否在开机或重起时启动网卡 NETBOOT=yes UUID="4dcebd9d-42ec-4f10-87c1-ac5708adee2d" IPV6INIT=yes BOOTPROTO=none -----------------------------> dhcp static none TYPE=Ethernet IPADDR=192.168.200.222 -------------------------------> ip地址 NETMASK=255.255.255.0(PREFIX=24) -----------------------> 子网掩码 GATEWAY=192.168.200.1 ------------------------------> 网关 重起网卡,重新加载配置文件 systemctl restart network 配置临时别名 ifconfig eno:0 10.10.10.10/24 永久别名 systemctl stop NetworkManager cd /etc/sysconfig/network-scripts/ cp ifcfg-eno ifcfg-eno:0 [root@localhost network-scripts]# vim ifcfg-eno:0 NAME="eno:0" DEVICE="eno:0" ONBOOT=yes NETBOOT=yes IPV6INIT=yes BOOTPROTO=none TYPE=Ethernet IPADDR=10.10.10.10 NETMASK=255.255.255.0 
2.NetworkManager使用
讯享网Red Hat Enterprise Linux 7 与 CentOS 7 中默认的网络服务由 NetworkManager 提供,这是动态控制及配置网络的守护进程,它用于保持当前网络设备及连接处于工作状态,同时也支持传统的 ifcfg 类型的配置文件 可以用命令行工具 nmcli 来控制 NetworkManager。 nmcli[ OPTIONS ] OBJECT { 
    COMMAND | help } OBJECT和COMMAND可以用全称也可以用简称,最少可以只用一个字母,建议用头三个字母。OBJECT里面我们平时用的最多的就是connection和device,这里需要简单区分一下connection和device。 device叫网络接口,是物理设备 nmcli device help connection是连接,偏重于逻辑设置 nmcli connection help 多个connection可以应用到同一个device,但同一时间只能启用其中一个connection。这样的好处是针对一个网络接口,我们可以设置多个网络连接,比如静态IP和动态IP,再根据需要up相应connection nmcli dev status 列出所有设备 nmcli con show 列出所有链接 nmcli con up "id" 激活一个链接 nmcli con down "id" 取消激活链接 nmcli dev dis "dev" down一个网卡和临时关闭一个链接 nmcli net off 关闭所有管理接口 nmcli con add 添加一个新的链接 nmcli con mod 修改一个链接 nmcli con del "id" 删除一个链接 修改配置文件执行生效: systemctl restart network 或 nmcli con reload nmcli命令生效:nmcli con down eth0 ; nmcli con up eth0 显示所有包括不活动连接 nmcli con show 显示所有活动连接 nmcli con show –active 显示设备状态 nmcli dev status 显示网络接口属性 nmcli dev show eno 示例 添加静态ip [root@localhost ~]# nmcli connection add con-name ens33-static ifname ens33 type ethernet ipv4.addresses 192.168.33.250/24 ipv4.gateway 192.168.33.1 ipv4.dns 114.114.114.114 ipv4.method manual connection.autoconnect yes Connection 'ens33-static' (43db0ac5-07e1-46a8-84de-cdabeeb32b99) successfully added. 添加动态ip [root@localhost ~]# nmcli connection add con-name ens33-dhcp ifname ens33 type ethernet ipv4.method auto connection.autoconnect yes Connection 'ens33-dhcp' (25bc6c90-f9c8-486a-82d1-639b33d99b0c) successfully added. 会自动生成配置文件 con add – 添加新的连接 con-name – 连接名 type – 设备类型 ifname – 接口名 autoconnect no – 禁止开机自动启动 创建以个名字为home的,类型为以太网卡,绑定网卡为eth1,开机自动启动,定义ipv4地址和网关 nmcli con add con-name home ifname eno autoconnect yes type Ethernet ip4 192.168.100.1/24 gw4 192.168.100.254 查看网卡绑定信息 nmcli con show 启动home链接 nmcli con up home 这样,home接口已经生效,可以正常使用。但同一时间只能绑定在一个接口上。平时如果工作需要,可以多设置几套配置文件,环境需要时可以进行临时的切换。 当不需要再用时可以使用:nmcli connection delete home删除 练习: 添加一块新网卡 通过networkmanager 给信网卡设置ip地址 一个自动获取 一个静态ip IP地址为192.168.0.100 修改连接设置 nmcli con mod“static” connection.autoconnect no nmcli con mod “static” ipv4.dns 172.25.X.254 nmcli con mod “static” +ipv4.dns 8.8.8.8 nmcli con mod “static” -ipv4.dns 8.8.8.8 nmcli con mod “static” ipv4.addresses “172.25.X.10/24 172.25.X.254” nmcli con mod “static” +ipv4.addresses 10.10.10.10/16 激活网卡: nmcli connection up ens33-static 查看ip地址 nmcli connection up ens33-dhcp 查看ip地址 nmcli connection up ens33 查看ip地址 修改网卡信息: nmcli connection modify ens33-static ipv4.method manual 添加额外ip(持久有效) nmcli connection modify ens33 +ipv4.addresses 100.100.100.100/24 nmcli connection up ens33 激活 
3.修改主机名
主机名: [root@zhangkeqiang ~]# hostnamectl set-hostname zhangkeqiang.com 当前主机名和永久主机名 [root@zhangkeqiang ~]# hostname zhangkeqiang.com [root@zhangkeqiang ~]# vim /etc/hostname  zhangkeqiang.com 必须做主机名解析,修改hosts文件 [root@zhangkeqiang ~]# vim /etc/hosts 192.168.33.133 zhangkeqinag.com 添加默认网关 route add default gw 192.168.200.222 route del default gw 192.168.200.222 
4.练习
讯享网1.添加新网卡 通过手动修改配置文件将IP地址设置为 172.16.10.100/16 NAME TYPE DEVICE BOOTPROTO ONBOOT IPADDR NETMASK GATEWAY DNS1 DNS2 2.添加新网卡 通过NetworkManager 设置两个配置文件一个 static 一个dhcp获取 3.写出A,B,C3类地址的范围,并写出每类地址的私有地址范围? 4.192.168.1.24/28 和 192.168.1.36/28 这两个地址可不可以通信? 

十三、系统修复维护

1.root丢失
解决方法 重起系统 选择系统标题 ------->e 编辑 选择以下行 linux16 /vmlinuz-3.10.0-327.el7.x86_64 root=UUID=1874f157-368e-4ead- 8ab2-2ef4a81e2019 ro rhgb quiet LANG=zh_CN.UTF-8 init=/bin/bash ctrl+x 进入系统单用户模式 
2.修复模式
讯享网方法1: 修改bios,选择光盘启动 选择troubleshooting ------> rescue file system 进入修复模式 mount /dev/sda2 /mnt /mnt就是硬盘系统/目录 也可以选择使用 chroot /mnt 命令 切换到原来的系统 如果没有光盘,可以制作u盘启动盘 UltraISO(以管理员身份运行) ----> 打开iso ---> 启动------->写入硬盘映像 方法2: 通过网络上的live盘,进行修复 远程拷贝: ssh 192.168.200.216 scp /etc/passwd 192.168.200.222:/tmp 不登录拷贝 scp 192.168.200.216:/etc/hosts /tmp/ 模式修改(启动级别) 获取当前系统模式 systemctl get-default 设置当前系统为文本模式=level3 systemctl set-default multi-user.target systemctl set-default graphical.target === 5级别 /usr/lib/systemd/system/runlevel0.target 关机 /usr/lib/systemd/system/runlevel1.target 单用户 /usr/lib/systemd/system/runlevel2.target 无网络文本 /usr/lib/systemd/system/runlevel3.target 有网络文本 /usr/lib/systemd/system/runlevel4.target 保留 /usr/lib/systemd/system/runlevel5.target 图像 /usr/lib/systemd/system/runlevel6.target 重启 bootloader grub,设置grub密码 lilo 系统启动过程 1.加电 2.bios系统(基本输入输出系统) boot(硬盘 u盘 网络 光盘) 3.引导程序(0磁道0扇区 512字节) 446引导程序 64分区表 2字节 magic number 4.通过boot分区 vmlinuz内核 initramfs硬件驱动 0号进程 5.1号进程(init ---- inittab----运行级别(0-6)) fstab 0关机 1单用户 2无网络的文本模式 3有网络文件模式 4保留 5图形 6重启 6.进程启动..... 7.rc.local 8.加载文本资源(终端) 9.加载图形资源 
3.练习
1.简述单用户模式进入方式 2.简述光盘修复模式的进入方式 3.在光盘修复模式下,修改自己的密码为空 

十四、模块管理

1.内核
讯享网内核 uname -r 3.10.0-327.el7.x86_64 主版本号.次版本号-修订版本号.系统版本.平台 次版本号(奇数) 测试版 次版本号 (偶数) 发行版 内核模块module lsmod 查看当前系统中已加载模块 modinfo ext4 查看模块信息 insmod /lib/modules/3.10.0-327.el7.x86_64/kernel/fs/ext4/ext4.ko 静态加载模块 rmmod ext4 卸载 modprobe ext4 动态加载 ls /lib/modules/3.10.0-327.el7.x86_64/ modules.dep 存放模块依赖关系的文件,自动生成 modules.dep.bin depmod -a 可以创建modules.dep文件 内核参数 1.打开路由转发参数 echo 1 > /proc/sys/net/ipv4/ip_forward cat /proc/sys/net/ipv4/ip_forward 永久保存内核参数 vim /usr/lib/sysctl.d/00-system.conf net.ipv4.ip_forward = 1 直接生效 sysctl -p /usr/lib/sysctl.d/00-system.conf 练习:两台不同网段主机通信 A: 192.168.1.200/24 B: 10.10.3.61/24 1.通过静态路由 A: ip route add 10.10.3.0/24 dev eno B: ip route add 192.168.1.0/24 dev eno 2. 通过网关通信 C: 网卡1: 192.168.1.1/24 网卡2: 10.10.3.76/24 开启路由转发: echo 1 > /proc/sys/net/ipv4/ip_forward A:192.168.1.200/24 删除现有的默认网关 添加网关: ip route add default via 192.168.1.1/24 dev eno B:10.10.3.61/24 删除现有的默认网关 添加网关: ip route add default via 10.10.3.76/24 dev eno 
2.禁止其他人对我执行ping
2.禁止其他人对我执行ping echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all cat /proc/sys/net/ipv4/icmp_echo_ignore_all 
3.练习
讯享网1.准备3个虚拟机 按下图设置ip地址 虚拟机1 虚拟机2 虚拟机3 网卡1 网卡1 网卡2 网卡1 192.168.100.100/24 192.168.100.1/24 172.16.10.1/24 172.16.10.100/24 通过静态路由让虚拟机1和虚拟机3通信 通过网关虚拟机2让虚拟机1 和 虚拟机3通信 

十五、查找命令

1.which
查找命令所在路径 [root@robin ~]# which useradd /usr/sbin/useradd 
2.whereis
讯享网[root@robin ~]# whereis cat cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.g 
3.grep
例: [root@robin ~]# grep root /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@robin ~]#  
4.locate
讯享网[root@robin ~]# locate aa.txt /home/aa.txt /root/aa.txt [root@robin ~]# rm -rf /root/aa.txt  [root@robin ~]# locate aa.txt /home/aa.txt /root/aa.txt updatedb 维护locate的索引 [root@robin ~]# locate aa.txt /home/aa.txt 
5.find
命令 路径 [参数] [] 根据文件名 find / -name aa.txt 根据拥有者 find / -user robin find / -user robin -ls 所属组 find / -group upup -ls 条件 -a 和 -o 或 find / \( -user king -a -group upup \) -ls find / \( -user king -o -group upup \) -ls 按类型 find / -type p -ls 按硬链接数 find / -links 20 -ls 按大小 [root@robin tmp]# find /tmp -size 30M /tmp/30M [root@robin tmp]# find /tmp -size +30M #大于30M /tmp/40M /tmp/50M [root@robin tmp]# find /tmp -size -30M #小于30M /tmp/10M /tmp/20M [root@robin tmp]# find /tmp -size +15M -a -size -45M /tmp/20M /tmp/30M /tmp/40M [root@robin tmp]# find /tmp -size -15M -o -size +45M 按时间: find /tmp/ -mtime 3 正好3天 find /tmp/ -mtime +3 3天以前 find /tmp/ -mtime -3 3天以内 find /tmp -mtime +2 -a -mtime -5 按权限 find /tmp/ -perm 420 完全匹配 find /tmp/ -perm /+240 -ls 任意匹配 find /tmp/ -perm -240 -ls 子集匹配 exec 和 ok find /tmp -name aa.txt -exec rm -rf { 
   } \; [root@robin tmp]# find /tmp -name cc.txt -ok rm -rf {} \; < rm ... /tmp/cc.txt > ? no [root@robin tmp]# find /tmp -name cc.txt -ok rm -rf {} \; < rm ... /tmp/cc.txt > ? yes 避免返回字符长度过长 find / -type f | xargs file cut -d: -f 1 /etc/passwd | xargs cut -d: -f 1 /etc/passwd | xargs mkdir 
6.其他
讯享网whoami 当前用户身份 who i am 原始登录用户身份 who w 
7.练习
查找系统中 最近1天修改过的文件 并拷贝到/tmp目录下 find / -mtime -1 -exec cp -r { 
   } /tmp \; 查找系统中大于100k 小于200k的文件并拷贝到/tmp目录下 [root@local ~]# find / \(-size +100k -a -size -200k\) -exec cp -a {} /tmp/ \; 1.列举查找命令有哪些?各有什么功能? which 查找命令路径 whereis 查找命令 grep 过滤 locate 查找文件 find 查找 2.查找系统中size大于10M的文件 [root@local ~]# find / -size +10M  3.查找系统中10天以前并且是普通文件的文件 [root@local ~]# find / -mtime +10 -type f  4.找到系统中名字中含有root的文件 [root@local ~]# find / f -name *root* 

十六、服务管理

1.计划任务
讯享网一.at(24小时内计划任务) 创建计划任务 [root@robin tmp]# at 12:41 at> touch /tmp/at.txt at> echo 123 >> /tmp/at.txt at> <EOT> ------------------------------------>ctrl + d job 1 at Tue Jun 13 12:41:00 2017 查询 [root@robin tmp]# at -l 1 Tue Jun 13 12:41:00 2017 a root 删除 [root@robin tmp]# atrm 2  存储位置 [root@robin tmp]# cat /var/spool/at/a00003017cca62 二.crond服务 用户计划任务 创建计划任务 * * * * * 分(0-59)(0-23)(1-31)(1-12)(0-7) * * * * * date >> /tmp/date.txt 每分钟 5 * * * * date >> /tmp/date.txt 每小时第5分钟 */5 * * * * date >> /tmp/date.txt 每5分钟 10 10 * * * date >> /tmp/date.txt 每天的10点10分 10 10 10 * * date >> /tmp/date.txt 每月10号10点10分 10 10 10 10 * date >> /tmp/date.txt 每年的10月10号10点10分 10 10 10 10 6 date >> /tmp/date.txt 或者每周6的10点10分 10 10,15,20 10 * * date >> /tmp/date.txt 每月10号10点10分 15点10分 20点10分 10 10-20 10 * * date >> /tmp/date.txt 每月10号10点-20点 10分 练习: 使用tar命令 对你的boot目录备份 要求:你当前系统时间晚2分钟 备份文件放在/tmp目录下, 备份文件名字是当前系统时间 月-日-时-分-boot.tar.gz [root@local ~]# vim /tmp/backup.sh #!/bin/bash tar -zcvf /tmp/$(date +%m-%d-%H-%M)-boot.tar.gz /boot [root@local ~]# chmod a+x /tmp/backup.sh  [root@local ~]# crontab -e 13 10 * * * /tmp/backup.sh crontab -l 查询计划任务 crontab -r 删除所有计划任务 计划任务的保存位置 [root@robin home]# cat /var/spool/cron/root  * * * * * date >> /tmp/date.txt 系统计划任务 cron.monthly/ 每月要执行的 cron.weekly/ 每周要执行的 cron.daily/ 每天要执行的 cron.hourly/ 每小时要执行的 访问控制文件:/etc/cron.deny 写入该文件的用户不可以使用计划任务 日志: /var/log/cron 练习: 要求: 备份sdb文件系统 xfsdump 周1 全备 周2 增量 周3 增量 周四 差异 周5 增量 周6 增量 周7 增量 周1 全备 [root@local tmp]# vim num.txt  0 [root@local tmp]# vim add.sh  #!/bin/bash num=`cat /tmp/num.txt` new_num=$(($num+1)) xfsdump -L add -M dumpfile -l $new_num - /mnt |xz > /tmp/xfs.$(date +%w).add$new_num.xz touch /mnt/$new_num.txt echo $new_num > /tmp/num.txt while (($new_num>4)) do new_num=0 echo $new_num > /tmp/num.txt done [root@local tmp]# vim all.sh  #!/bin/bash xfsdump -L all -M dumpfile -l 0 - /mnt |xz > /tmp/xfs.$(date +%w).all0.xz touch /mnt/aaaa.txt [root@local tmp]# vim cha.sh  #!/bin/bash xfsdump -L cha -M dumpfile -l 1 - /mnt |xz > /tmp/xfs.$(date +%w).cha1.xz [root@local tmp]# crontab -e 42 11 * * * /tmp/all.sh 44 11 * * * /tmp/add.sh 46 11 * * * /tmp/cha.sh 
2.日志服务
rpm包日志目录:/var/log 日志服务的启动: systemctl restart rsyslog 配置文件: /etc/rsyslog.conf 日志默认存放位置: /var/log 日志文件配置格式: AAAA.BBBB CCCC AAAA 产生日志的设备(接口,对象,类型) BBBB 日志的级别 CCCC 保存日志的位置 产生日志的设备:authpriv mail cron uucp news local0-7用户自定义 日志级别: debug 调试 info 正常 notice 稍微注意 warning 警告 error 错误信息 crit 危机信息 alert 必须注意 emergency(panic) 紧急信息 例: mail.info 表示记录日志时 记录info级别以上 mail.=info 只要info级别 mail.!=info 除了info级别 存放日志的位置: 1.发送终端上 *.info;mail.none;authpriv.none;cron.none /dev/tty3 2.发送给用户 *.info;mail.none;authpriv.none;cron.none robin 3.发送到文件 *.info;mail.none;authpriv.none;cron.none /tmp/log.log 日志的集中管理: 服务端 vim /etc/rsyslog.conf UDP $ModLoad imudp $UDPServerRun 514 systemctl restart rsyslog 客户端 UDP vim /etc/rsyslog.conf *.info;mail.none;authpriv.none;cron.none @192.168.200.222 systemctl restart rsyslog 服务端 TCP vim /etc/rsyslog.conf $ModLoad imtcp $InputTCPServerRun 514 systemctl restart rsyslog 客户端 TCP vim /etc/rsyslog.conf *.info;mail.none;authpriv.none;cron.none @@192.168.200.222 systemctl restart rsyslog 实验: UDP 接收 message日志 重启autofs测试 TCP 接收 secure日志 ssh 127.0.0.1测试 OSI七层模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 tcp/ip4层 5层 应用层 传输层 网络层 数据链路层 物理层 日志的轮转 logrotate [root@robin logrotate.d]# cp yum test [root@robin logrotate.d]# vim test /tmp/test.log { 
    missingok 丢失不提示 notifempty 空日志不切 dateext 日期格式 daily 按天 rotate 7 保留7个 olddir /oldlog create 0777 root root }1121 logrotate -f /etc/logrotate.d/test 自己定义日志 自己定义接口 vim /etc/rsyslog.conf local6.* /var/log/test.log systemctl restart rsyslog logger命令产生日志 logger -p local6.info "hello world" cat test.sh #!/bin/bash #logger -p local6.info "hello world 1" echo "hello python" >> /var/log/test.log sleep 2 /root/test.sh 练习: 1.解释日志服务配置文件的内容? 2.开启日志服务的远程日志(日志集中管理) 将mail的日志使用udp传输 将secure的日志使用tcp传输 3.对/tmp/robin.log文件设置轮转配置 要求: 1.丢失不提示 2.空文件不轮转 3.保存7分 4.新建日志文件权限 777 拥有者为robin 所属组为robin 5.按天轮转 
3.DHCP
讯享网动态分配IP地址 实验环境 服务器和客户端仅主机方式连接 DHCP: 安装包: yum install dhcp 端口(udp):67 配置文件:/etc/dhcp/dhcpd.conf cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 启动服务: systemctl restart dhcpd 日志:/var/log/messages 工作原理: C ---------DHCP DISCOVER --------> S C<--------DHCP OFFER -------------- S C----------DHCP REQUEST----------> S C<--------DHCP ACK ----------------- S 配置: [root@servera ~]# vim /etc/dhcp/dhcpd.conf  subnet dhcp网段 netmask 子网掩码 { 
    range 172.16.100.101 172.16.100.200; #范围 option domain-name-servers 114.114.114.114; #dns #option domain-name "internal.example.org";  option routers 172.16.100.1; #网关 #option broadcast-address 172.16.100.255; #最后一个ip default-lease-time 600; #默认租赁时间 max-lease-time 7200; #最大租赁时间 } [root@servera ~]# systemctl restart dhcpd [root@servera ~]# ss -anpltu | grep :67 客户端: 重启网络 ip addr s 租约文件: 服务端:/var/lib/dhcpd/dhcpd.leases 客户端:/var/lib/dhclient/ 指定ip地址分配 [root@servera ~]# vim /etc/dhcp/dhcpd.conf  host client1 { 
    hardware ethernet 00:0c:29:64:d6:87; fixed-address 172.16.100.250; } [root@servera ~]# systemctl restart dhcpd 练习: 1.搭建dhcp服务器 要求: 1.分配192.168.100.0/24网段ip 2.分配地址范围192.168.100.50-192.168.100.100 
4.SSHD
SSHD 远程登陆服务 安装包: openssh-server-6.6.1p1-22.el7.x86_64 openssh-clients-6.6.1p1-22.el7.x86_64 配置文件: /etc/ssh/sshd_config 端口: 22 启动服务: systemctl restart sshd 日志:/var/log/secure 客户端 客户端登陆 ssh 192.168.200.227 使用的当前帐号作为登陆用户 ssh robin@192.168.200.227 指定用户身份登陆 远程拷贝 scp /root/anaconda-ks.cfg 192.168.200.222:/tmp/ 不登陆拷贝 scp 192.168.200.227:/etc/hosts /tmp/ 远程执行命令 ssh 192.168.200.227 'useradd robin;echo 123 | passwd --stdin robin' 配置文件 服务端: vim /etc/ssh/sshd_config Port 22222 #指定端口 PermitRootLogin yes #是否允许root用户登录 UseDNS no #是否进行主机名解析 PasswordAuthentication yes #是否允许密码验证 客户端 ssh 192.168.200.222 -p 22222 远程拷贝 scp -P 22222 /etc/man_db.conf 192.168.200.222:/tmp/ 自定义sshd日志(sshd rsyslog) vim /etc/ssh/sshd_config #SyslogFacility AUTHPRIV SyslogFacility local5 vim /etc/rsyslog.conf local5.* /var/log/ssh.log systemctl restart rsyslog 允许登陆帐号 Allowusers robin zorro 密钥登陆 1.生成密钥 [root@localhost ~]# ssh-keygen  2.将公钥拷贝到服务器 ssh-copy-id -i 192.168.200.227 服务器公钥名称 authorized_keys 服务器建立互信 1.ssh-keygen 2.拷贝公钥给自己 ssh-copy-id -i 192.168.200.222 多台服务器建立互信 方法一: 生成密钥 [root@servera ~]# ssh-keygen  拷贝公钥给自己 [root@servera ~]# ssh-copy-id -i 192.168.33.137 拷贝.ssh目录给别的服务器 [root@servera ~]# scp -r /root/.ssh/ 192.168.33.138:/root/ 通过ssh进行测试 加载私钥 [root@localhost ~]# ssh-add 方法二: 每个主机做公钥私钥 [root@servera ~]# ssh-keygen  [root@serverb ~]# ssh-keygen  主机1拷贝公钥给主机2 [root@servera ~]# ssh-copy-id -i 192.168.33.138 主机2将自己的公钥追加到/root/.ssh/authorized_keys [root@serverb .ssh]# cat id_rsa.pub >> authorized_keys  主机2将/root/.ssh/authorized_keys拷贝给主机1 [root@serverb .ssh]# scp -r /root/.ssh/authorized_keys 192.168.33.137:/root/.ssh/ 通过ssh进行测试 练习: 1.给两台虚拟机 建立sshd的密钥互信 
5.文件服务器
1)NFS
讯享网NFS 网络文件系统: 安装包: setup-2.8.71-6.el7.noarch 配置文件: /etc/exports 端口: 2049 启动服务:(依赖服务rpcbind) systemctl restart nfs 服务端: 配置: [root@servera ~]# mkdir /nfs [root@servera ~]# vim /etc/exports /nfs *(rw,sync) #共享给所有人 /nfs 192.168.200.0/24(rw,sync) #共享给192.168.200网段 /nfs 192.168.200.0/24(rw,sync) 10.10.10.0/24(ro) /nfs 192.168.200.225(rw,sync) #共享给某个主机 /nfs 权限 /nfs *(rw,sync,no_root_squash) 客户端 装包nfs-utils [root@serverb ~]# yum -y install nfs-utils showmount -e ip地址 #查看nfs服务器 [root@serverb ~]# showmount -e 192.168.33.137 Export list for 192.168.33.137: /nfs * [root@serverb ~]# mount -t nfs 192.168.33.137:/nfs /mnt [root@serverb ~]# ls /mnt/ 作业: 1.3种方式实现nfs自动自动挂载 fstab [root@serverb ~]# mkdir /mnt/tab [root@serverb ~]# vim /etc/fstab  192.168.33.137:/nfs /mnt/tab nfs defaults 0 0 autofs [root@serverb ~]# yum -y install autofs [root@serverb ~]# vim /etc/auto.master /mnt /etc/auto.mnt [root@serverb ~]# vim /etc/auto.mnt auto -fstype=nfs,rw 192.168.33.137:/nfs (* -rw,vers=3 classroom.example.com:/home/guests/&[root@serverb mnt]# ls auto 111 rc.local [root@serverb ~]# mkdir /mnt/rc [root@serverb ~]# vim /etc/rc.local  mount -t nfs 192.168.33.137:/nfs /mnt [root@serverb ~]# chmod a+x /etc/rc.d/rc.local  2.NAS服务器(网络附加存储) raid+lvm+nfs 3块硬盘 raid5 [root@localhost ~]# mdadm -C -n 3 -l 5 /dev/md5 /dev/sdb /dev/sdc /dev/sdd lvm [root@localhost ~]# pvcreate /dev/md5 [root@localhost ~]# vgcreate vg0 /dev/md5 [root@localhost ~]# lvcreate -L 1.5G -n lv0 vg0 /nas NFS SMB [root@localhost ~]# mkfs.xfs /dev/vg0/lv0  [root@localhost ~]# mount /dev/vg0/lv0 /nas/ [root@localhost ~]# vim /etc/exports [root@localhost ~]# systemctl restart nfs raid5+lvm---->mount point----->nfs---------------->mount使用 
2)SAMBA
samba可以实现挂载 samba可以实现与windos共享 安装软件: yum install samba 配置文件: /etc/samba/smb.conf 启动服务: systemctl restart smb 配置: 匿名模式: (share) 服务端: vim /etc/samba/smb.conf security = user Cenost6之前 security = share CentOS7 匿名模式 mkdir /smb security = user map to guest = bad user [test] #共享名 comment = test smb server #描述 path = /smb #访问路径 writable = yes #可写 browseable = yes #是否可见 public = yes #公共 guest ok = yes #来宾用户 启动服务systemctl restart smb 客户端: [root@servera ~]# yum -y install samba-client [root@servera ~]# yum -y install cifs-utils smbclient -L //192.168.200.222 查看 smbclient //192.168.200.222/test 登录 测试: 挂载 [root@servera ~]# mount -t cifs //192.168.33.132/test /mnt 验证模式:(user) 服务端 mkdir /share security = user [share] comment = test smb server path = /share writable = yes valid users = robin @east #有效账号或组 [root@local smb]# useradd robin [root@local smb]# smbpasswd -a robin 客户端 smbclient -L //192.168.200.222 [root@servera ~]# smbclient -U robin%1234 //192.168.33.132/share [root@servera ~]# mount -t cifs -o username=robin,password=1234 //192.168.33.132/share /mnt/ 写用户少 [share] comment = test smb server path = /share write list = robin @upup valid users = robin zorro @upup 读用户少 [share] comment = test smb server path = /share writable = yes valid users = robin zorro read list = zorro 查询所有的smb帐号 pdbedit -L 删除samba帐号 smbpasswd -x zorro 作业: 1.3种方式挂载smb 匿名 和 user模式 2.NAS 3. 练习: 公司有以下需求: boss king zorro jean hr king jack rose yw zorro tom jerry kf jean robin ben 1.有一个boss的目录 boss可写 其他部门经理只读 2.各部门都一个目录(hr yw kf) 各部门经理可写, 其他人只读, boss也可以查看 3.还有一个目录,全公司员工都可以写,boss没有任何权限 [boss] comment = boss use path = /company/boss write list = boss valid users = boss king zorro jean [hr] comment = hr use path = /company/hr write list = king valid users = king jack rose boss [yw] comment = yw use path = /company/yw valid users = zorro tom jerry boss write list = zorro [kf] comment = kf use path = /company/kf valid users = jean robin ben boss write list = jean [pub] comment = test smb server path = /company/pub writable = yes valid users = @hr @yw @kf 练习: 使用samba完成NAS 并且实现3种自动挂载 验证 /etc/fstab //192.168.33.132/share /mnt cifs defaults,username=robin,password=123 0 0 匿名 //192.168.33.132/share /mnt cifs defaults,username=nobady,password= 0 0 samba匿名自动挂载 [root@test ~]# cat /etc/samba/smbpass username=root password= cat /etc/fstab //192.168.1.1/smb /mnt cifs defaults,multiuser,credentials=/etc/samba/smbpass 0 0 
3)VSFTPD
讯享网vsftpd:文件共享服务 vsftpd: 服务名称 ftp:协议名称 lftp:客户端 安装软件: 服务端 yum install vsftpd 客户端: yum install lftp 端口: port(主动)模式 21 20 pasv(被动)模式 21 随即端口 21 控制端口 20 或 随即 数据端口 配置文件: /etc/vsftpd/vsftpd.conf 数据保存位置:/var/ftp 启动服务: systemctl restart vsftpd 工作模式 : port模式(主动) C S 1024+m---------->21 1024+n-----> 1024+n<----------20 pasv模式(被动) C S 1024+m---------->21 1024+m<----- 1024+n 1024+x--------->1024+n 模式选择客户端决定 man 5 vsftpd.conf 配置: 匿名模式访问 anonymous_enable=YES 允许上传 anon_upload_enable=YES anon_mkdir_write_enable=YES 允许删除 anon_other_write_enable=YES 上传文件允许下载 anon_umask=022 限速 anon_max_rate=20000 vsftpd更改数据目录位置: anon_root=/home 客户端: lftp 192.168.200.226 lftp 192.168.200.226:/> ls lftp 192.168.200.226:/> get anaconda-ks.cfg 下载文件 lftp 192.168.200.226:/> mirror pub/ 下载目录 lftp 192.168.200.226:/> put /etc/passwd lftp 192.168.200.226:/pub> mirror -R /tmp/ 用户模式访问(基于系统帐号) useradd robin passwd robin 家目录权限修改为755 本地登陆 local_enable=YES 上传文件允许下载 local_umask=022 限速 local_max_rate=20000 限制用户切换目录(登陆目录不能有写权限) #allow_writeable_chroot=YES 允许家目录权限700的情况下登录 chroot_local_user=YES 限制所有帐号不能切换目录 chroot_local_user=YES chroot_list_enable=YES 开启名单功能(写入以下文件的用户可以切换) chroot_list_file=/etc/vsftpd/chroot_list chroot_local_user=NO(默认) chroot_list_enable=YES 开启名单功能(写入以下文件的用户不可以切换) chroot_list_file=/etc/vsftpd/chroot_list /etc/vsftpd/ftpusers 写入用户名 禁止用户登陆ftp 黑白名单禁止用户登陆 userlist_enable=YES userlist_deny=YES /etc/vsftpd/user_list 黑名单 userlist_enable=YES userlist_deny=NO /etc/vsftpd/user_list 白名单 改变本地用户登陆位置 local_root=/nfs 客户端 lftp -u robin,123 192.168.200.226 ====================================== 虚拟帐号: 1.建立用户数据库文件 vim /etc/vsftpd/vftpuser.txt test111 pass111 test222 pass222 2.安装数据库转换工具 yum install libdb-utils-5.3.21-19.el7.x86_64 db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vsftpd_login.db 3.建立验证模式文件 # mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak # vi /etc/pam.d/vsftpd auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login 4.建立一个所有虚拟用户使用的系统用户 # useradd -d /home/vsftp virtual # chmod 755 /home/vsftp 5.修改配置文件启用虚拟用户 guest_enable=YES # 开启虚拟用户功能 guest_username=virtual # 指定虚拟用户使用的系统用户 pam_service_name=vsftpd # 以/etc/pam.d/验证模式文件名相同 客户端测试登陆 lftp -u test111,pass111 192.168.200.226 lftp -u test222,pass222 192.168.200.226 ----------- 为虚拟用户设置不同权限 方法一. 虚拟用户使用与本地用户相同权限 virtual_use_local_privs=YES 虚拟用户使用与匿名用户相同权限 virtual_use_local_privs=NO 方法二. virtual_use_local_privs=YES user_config_dir=/etc/vsftpd/vsftp_user_conf mkdir /etc/vsftpd/vsftp_user_conf [root@client nfs]# cat /etc/vsftpd/vsftp_user_conf/test111  write_enable=NO local_max_rate=20000 local_root=/nfs [root@client nfs]# cat /etc/vsftpd/vsftp_user_conf/test222 local_max_rate= local_root=/nfs 
6.web服务器
HTTPD(apache web服务器) 安装包:httpd-2.4.6-45.el7.centos.4.x86_64.rpm httpd-manual-2.4.6-45.el7.centos.4.noarch.rpm 文档 端口: 80 443
配置文件: /etc/httpd/conf/httpd.conf
	        /etc/httpd/conf.d/
	        /etc/httpd/conf.modules.d
数据目录:/var/www/html
启动服务:systemctl restart httpd
日至存放目录:/var/log/httpd/
客户端访问
elinks 172.16.10.30 elinks --dump 172.16.10.30 显示在终端上 curl 10.10.3.76 netstat -anplt netstat -anlpu

http: 超文本传输协议: hyper text tranfer protocol
html:超文本标记语言:hyper text markup langue


vim /var/www/html/index.html
<html> <head> <title>welcome !!!!</title> </head> <body> <h1></h1> <img src='dog.jpg'> <h2>风景</h2> <img src='timg.jpg'> </body> </html> apache 工作模式 prefork worker event 查看工作模式 httpd -V 1. prefork MPM Apache在启动之初,就预先fork一些子进程,然后等待请求进来。之所以这样做,是为了减少频繁创建和销毁进程的开销。每个子进程只有一个线程,在一个时间点内,只能处理一个请求。 优点:成熟稳定,兼容所有新老模块。同时,不需要担心线程安全的问题。 缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发请求,在这种场景下,它会将请求放进队列中,一直等到有可用进程,请求才会被处理。 2.worker MPM worker模式比起上一个,是使用了多进程和多线程的混合模式。它也预先fork了几个子进程(数量比较少),然后每个子进程创建一些线程,同时包括一个监听线程。每个请求过来,会被分配到1个线程来服务。线程比起进程会更轻量,因为线程通常会共享父进程的内存空间,因此,内存的占用会减少一些。在高并发的场景下,因为比起prefork有更多的可用线程,表现会更优秀一些 优点:占据更少的内存,高并发下表现更优秀。 缺点:必须考虑线程安全的问题,因为多个子线程是共享父进程的内存地址的。如果使用keep-alive的长连接方式,某个线程会一直被占据,也许中间几乎没有请求,需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用 3. event MPM 这个是Apache中最新的模式,在现在版本里的已经是稳定可用的模式。它和worker模式很像,最大的区别在于,它解决了keep-alive场景下,长期被占用的线程的资源浪费问题(某些线程因为被keep-alive,空挂在哪里等待,中间几乎没有请求过来,甚至等到超时)。event MPM中,会有一个专门的线程来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力。 注意一点,event MPM需要Linux系统(Linux 2.6+)对EPoll的支持,才能启用 切换方式 vim /etc/httpd/conf.modules.d/00-mpm.conf LoadModule mpm_prefork_module modules/mod_mpm_prefork.so #进程模式 <IfModule mpm_prefork_module> StartServers 10 MinSpareServers 10 MaxSpareServers 10 MaxRequestWorkers 250 MaxConnectionsPerChild 0 </IfModule> #LoadModule mpm_worker_module modules/mod_mpm_worker.so #线程模式 <IfModule mpm_worker_module> StartServers 10 MinSpareThreads 75 MaxSpareThreads 250 ThreadsPerChild 25 MaxRequestWorkers 400 MaxConnectionsPerChild 0 </IfModule> #LoadModule mpm_event_module modules/mod_mpm_event.so #event模式 <IfModule mpm_event_module> StartServers 15 MinSpareThreads 75 MaxSpareThreads 250 ThreadsPerChild 25 MaxRequestWorkers 400 MaxConnectionsPerChild 0 </IfModule> 保持连接(长连接) KeepAlive On KeepAliveTimeout 15 MaxKeepAliveRequests 100 修改http访问默认位置 mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak #DocumentRoot "/var/www/html" DocumentRoot "/etc" <Directory "/etc"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> 其他方法 方法1: cp -r /boot  /var/www/html
方法2:
ln -s /boot/  /var/www/html


别名
alias /down /home <directory /home> options indexes #如果有index,优先显示,没有则显示目录 Require all granted </directory> alias /upup /var <Directory "/var"> options indexes require all granted </Directory> 个人主页 vim /etc/httpd/conf.d/userdir.conf <IfModule mod_userdir.c> #UserDir disabled
UserDir public_html     #开启个人主页 </IfModule> useradd robin useradd zorro mkdir /home/robin/public_html
mkdir /home/zorro/public_html
echo "robin home" > /home/robin/public_html/index.html
echo "zorro home" > /home/zorro/public_html/index.html
chmod 705 /home/robin/ chmod 705 /home/zorro/ 客户端测试 http://172.16.10.1/~zorro/ http://172.16.10.1/~robin/ 访问控制 例1:允许所有访问请求 Apache2.4下的配置: <Directory xxx/www/yoursite> Require all granted </Directory> 例2:拒绝所有访问请求 Apache2.4下的配置: <Directory xxx/www/yoursite> Require all denied </Directory> 例3:只允许来自特定域名主机的访问请求,其他请求将被拒绝 Apache2.4下的配置: <Directory xxx/www/yoursite> Require host google.com </Directory> 例4:只允许来自特定IP或IP段的访问请求,其他请求将被拒绝 Apache2.4下的配置: <Directory xxx/www/yoursite> Require ip 192.168.33 </Directory> 例5:允许所有访问请求,但拒绝来自特定IP或IP段的访问请求(阻止恶意IP或恶意爬虫网段的访问) Apache2.4下的配置: <Directory xxx/www/yoursite> <RequireAll> Require all granted Require not ip 192.168.1.1 Require not ip 192.120 192.168.100 </RequireAll> </Directory> 验证方式登录 alias /down /var/ftp <directory /var/ftp> options indexes AuthType Basic #验证 AuthName "welcome" #提示语 AuthBasicProvider file #文件验证 AuthUserFile /etc/httpd/conf/passwd #验证的文件 Require user robin #允许的用户 </directory> htpasswd -c -b /etc/httpd/conf/passwd robin 123 创建新帐号 htpasswd -b /etc/httpd/conf/passwd zorro 123 添加新帐号 全部有效帐号 alias /upup /var <Directory "/var"> Options indexes FollowSymLinks AuthType Basic AuthName "welcome!!!!!" AuthBasicProvider file AuthUserFile /etc/httpd/conf/http_passwd Require valid-user </Directory> 发布cgi脚本 脚本发布目录:/var/www/cgi-bin #!/bin/bash echo -e "content-type: text/html\n" date echo "<br>" uname -r http://172.16.10.1/cgi-bin/cgi.sh #!/bin/bash echo -e "Content-type: text/html\n" for i in { 
   1..100} do sleep 1 echo $i done 虚拟主机(基于域名 基于ip) 基于域名虚拟主机 [root@local ~]# vim /etc/httpd/conf.d/vhost.conf NameVirtualHost *:80 <VirtualHost *:80> ServerName www.youku.com DocumentRoot /srv/youku/ </VirtualHost> <Directory "/srv/youku"> Require all granted </Directory> <VirtualHost *:80> ServerName www.tudou.com DocumentRoot /srv/tudou/ </VirtualHost> <Directory "/srv/tudou"> Require all granted </Directory> [root@local ~]# mkdir /srv/youku [root@local ~]# mkdir /srv/tudou [root@local ~]# echo "youku" > /srv/youku/index.html [root@local ~]# echo "tudou" > /srv/tudou/index.html [root@local ~]# systemctl restart httpd 客户端 vim /etc/hosts 172.16.10.1 www.youku.com 172.16.10.1 www.tudou.com linux中 http://www.tudou.com http://www.youku.com [root@local ~]# curl www.youku.com [root@local ~]# curl www.tudou.com elinks --dump Windows里修改hosts文件 基于ip虚拟主机 ifconfig eno:0 10.10.10.5/24 <VirtualHost 192.168.0.5:80> ServerName www.youku.com DocumentRoot /srv/youku/ </VirtualHost> <Directory "/srv/youku"> Require all granted </Directory> <VirtualHost 10.10.10.5:80> ServerName www.tudou.com DocumentRoot /srv/tudou/ </VirtualHost> <Directory "/srv/tudou"> Require all granted </Directory> 客户端 vim /etc/hosts 192.168.0.5 www.youku.com 10.10.10.5 www.tudou.com 练习 做虚拟主机 www.gogle.com 需要用户king 密码123 才能登陆访问 www.baidu.com 只有你的宿主机才能访问 [root@local ~]# mkdir /srv/gogle [root@local ~]# mkdir /srv/baidu [root@local ~]# echo "gogle" > /srv/gogle/index.html [root@local ~]# echo "baidu" > /srv/baidu/index.html [root@local ~]# vim /etc/httpd/conf.d/vhost.conf  NameVirtualHost *:80 <VirtualHost *:80> ServerName www.gogle.com DocumentRoot /srv/gogle/ </VirtualHost> <Directory "/srv/gogle"> options indexes AuthType Basic AuthName "welcome" AuthBasicProvider file AuthUserFile /etc/httpd/conf/passwd Require user king </Directory> <VirtualHost *:80> ServerName www.baidu.com DocumentRoot /srv/baidu/ </VirtualHost> <Directory "/srv/baidu"> options indexes Require ip 192.168.33.138 </Directory> [root@local ~]# htpasswd -b /etc/httpd/conf/passwd king 123 [root@local ~]# vim /etc/hosts 
7.DNS
1)DNS域名解析服务器
讯享网DNS:domain name server 域名解析服务器 安装与配置 安装软件:bind-9.9.4-29.el7.x86_64.rpm 端口:53 配置文件: /etc/named.conf /etc/named.rfc1912.zones /var/named/ 启动服务:systemctl restart named 正向解析 1.vim /etc/named.conf listen-on port 53 { 
    any; }; allow-query { 
    any; }; 2.vim /etc/named.rfc1912.zones zone "east.com" IN { 
    type master; file "east.com.zone"; }; 3.touch /var/named/east.com.zone chmod 640 /var/named/east.com.zone chown .named /var/named/east.com.zone [root@local named]# vim east.com.zone  $TTL 1D @ IN SOA dns.east.com. root. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS dns.east.com. dns IN A 192.168.33.132 www IN A 192.168.33.132 aaa IN A 192.168.33.137 客户端测试: [root@local ~]# vim /etc/resolv.conf #指定动态ip的dns [root@client ~]# host www.douniwan.com www.douniwan.com has address 192.168.200.226 [root@client ~]# nslookup www.douniwan.com Server: 192.168.200.222 Address: 192.168.200.222#53  Name: www.douniwan.com Address: 192.168.200.226 [root@client ~]# dig www.douniwan.com 反向解析: 1.vim /etc/named.conf listen-on port 53 { 
    any; }; allow-query { 
    any; }; 2.vim /etc/named.rfc1912.zones zone "200.192.168.in-addr.arpa " IN { 
    type master; file "192.168.200.arpa"; }; 3. touch /var/named/192.168.200.arpa chmod 640 /var/named/192.168.200.arpa chown .named /var/named/192.168.200.arpa vim /var/named/192.168.200.arpa $TTL 1D @ IN SOA dns.king.com. root. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS dns.king.com. dns IN A 192.168.200.222 226 IN PTR test.king.com. 各种写法 $TTL 1D @ IN SOA dns.douniwan.com. root. ( 0 1D 1H 1W 3H ) IN NS dns.douniwan.com. dns IN A 192.168.200.222 ww IN CNAME www wwww IN CNAME www www IN A 192.168.200.226 @ IN A 192.168.200.226 ftp.douniwan.com. IN CNAME www.douniwan.com. * IN A 192.168.200.226 #泛解析 IN MX 5 mail.douniwan.com. mail IN A 192.168.200.226 $GENERATE 1-254 stu$ IN A 192.168.1.$ #连续解析 转发服务器 vim /etc/named.conf options { 
    listen-on port 53 { 
    any; }; allow-query { 
    any; }; forward first; #先从DNS服务器里找,再从根域找 forwarders { 
    192.168.200.222; }; forward only; #只从DNS服务器里面找 forwarders { 
    192.168.200.222; }; DNS主从服务器(时间必须同步): 主服务器配置 1.vim /etc/named.conf listen-on port 53 { 
    any; }; allow-query { 
    any; }; 2.vim /etc/named.rfc1912.zones zone "east.com" IN { 
    type master; #主服务器 file "east.com.zone"; allow-transfer { 
    192.168.33.137; }; #允许传输数据 }; 3. vim /var/named/east.com.zone $TTL 1D @ IN SOA dns1.east.com. root. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS dns1.east.com. IN NS dns2.east.com. dns1 IN A 192.168.33.132 dns2 IN A 192.168.33.137 www IN A 192.168.33.137 chown .named /var/named/east.com.zone chmod 640 /var/named/east.com.zone 从服务器 1.vim /etc/named.conf listen-on port 53 { 
    any; }; allow-query { 
    any; }; 2. [root@servera named]# vim /etc/named.rfc1912.zones  zone "east.com" IN { 
    type slave; #从服务器 file "slaves/east.com.zone"; masters { 
    192.168.33.132; }; }; 同步数据 $TTL 1D @ IN SOA dns1.east.com. root. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS dns1.east.com. IN NS dns2.east.com. dns1 IN A 192.168.33.132 dns2 IN A 192.168.33.137 www IN A 192.168.33.137 dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave TSIG方式传输 主 key robinkey { 
    algorithm hmac-md5; secret "YBMMsomw64S8BmK6/JbVaA=="; }; zone "upup.com" IN { 
    type master; file "upup.com.zone"; allow-transfer { 
    key robinkey; }; }; 从 key robinkey { 
    algorithm hmac-md5; secret "YBMMsomw64S8BmK6/JbVaA=="; }; zone "upup.com" IN { 
    type slave; file "slaves/upup.com.zone"; masters { 
    192.168.200.222 key robinkey; }; }; 子域授权 父域 1.vim /etc/named.conf listen-on port 53 { 
    any; }; allow-query { 
    any; }; 2.vim /etc/named.rfc1912.zones zone "robin.com" IN { 
    type master; file "robin.com.zone"; }; 3. vim /var/named/robin.com.zone $TTL 1D @ IN SOA dns.robin.com. root. ( 0 1D 1H 1W 3H ) IN NS dns.robin.com. dns IN A 192.168.200.222 music.robin.com. IN NS dns.music.robin.com. dns.music.robin.com. IN A 192.168.200.226 www IN A 192.168.200.226 @ IN A 192.168.200.226 chmod 640 /var/named/robin.com.zone chown .named /var/named/robin.com.zone 子域 1.vim /etc/named.conf listen-on port 53 { 
    any; }; allow-query { 
    any; }; 2.vim /etc/named.rfc1912.zones zone "music.robin.com" IN { 
    type master; file "music.robin.com.zone"; }; 3. chmod 640 /var/named/music.robin.com.zone chown .named /var/named/music.robin.com.zone vim /var/named/music.robin.com.zone $TTL 1D @ IN SOA dns.music.robin.com. root. ( 0 1D 1H 1W 3H ) IN NS dns.music.robin.com. dns IN A 192.168.200.222 www IN A 192.168.200.226 @ IN A 192.168.200.226 
2)练习
一个Apache服务器, www.hello.com www.world.com 一个nas 挂载到Apache上 一个DNS服务器 用window进行测试 
8.NTP时间服务器
讯享网同步时间 从bios设置系统时间 hwclock -s 从系统时间设置bios hwclock -w NTP服务器的概念: 网络时间协议(英语:Network Time Protocol,NTP)是以分组交换把两台电脑的时钟同步化的网络传输协议。NTP使用UDP端口123作为传输层。它是用作抵销可变延迟的影响。 NTP是仍在使用中的最古老的网络传输协议之一(在1985年前开始)。NTP最初由特拉华大学的Dave Mills 设计,他与一群志愿者仍在维护NTP。 NTP 网络时间协议用来同步网络上不同主机的系统时间。你管理的所有主机都可以和一个指定的被称为 NTP 服务器的时间服务器同步它们的时间。而另一方面,一个 NTP 服务器会将它的时间和任意公共 NTP 服务器,或者你选定的服务器同步。由 NTP 管理的所有系统时钟都会同步精确到毫秒级。 在公司环境中,如果他们不想为 NTP 传输打开防火墙,就有必要设置一个内部 NTP 服务器,然后让员工使用内部服务器而不是公共 NTP 服务器。 1.安装时间服务器 yum install ntp ntpdate -y 2.查找时间同步服务器 http://www.pool.ntp.org/zone/asia 3.配置时间服务器 vim /etc/ntp.conf server 0.asia.pool.ntp.org server 1.asia.pool.ntp.org server 2.asia.pool.ntp.org server 3.asia.pool.ntp.org server 127.127.1.0 iburst restrict 192.168.33.0 mask 255.255.255.0 4.启动服务器并测试 systemc start ntpd ntpd -p date -R 客户端测试 ntpdate 192.168.33.132 计划任务保证时间同步 timedatectl 查看系统时钟与时区 使用timedatectl 使用列出可用的时区 timedatectl list-timezones 设定系统时钟与时区 timedatectl set-timezone timezonetimedatectl set-time hour:min:sec 设定是否启用网络时间同步 timedatectl set-ntp true|false chrony RHEL8使用chrony同步时间, 不再使用ntp服务 chronyd服务通过与配置的NTP服务器同步配置方式 修改配置文件:/etc/chrony.conf 图形界面: system-config-date 配置文件/etc/chrony.conf server 指定网络时钟服务器,类似ntp 查看当前网络时钟服务器信息chronyc sources -v server(链接互联网时间服务器) server 0.asia.pool.ntp.org iburst server 1.asia.pool.ntp.org iburst server 2.asia.pool.ntp.org iburst server 3.asia.pool.ntp.org iburst allow 192.168.33.0/24 client(设置10.10.11.251为时间服务器) [root@servera ~]# vim /etc/chrony.conf  server 10.10.11.251 iburst [root@servera ~]# systemctl restart chronyd [root@servera ~]# chronyc sources -v [root@servera ~]# timedatectl  
9.XINETD
xinetd 超级代理服务 安装xinetd服务 yum install xinetd 安装telnet服务 yum install telnet-server 服务端 yum install telnet 客户端 端口:23 启动服务 systemctl start telnet.socket systemctl enable telnet.socket systemctl start xinetd systemctl enable xinetd 客户端: telnet 172.16.90.245 注意,不能使用root帐号直接登陆 tftp服务 安装软件: yum install tftp-server yum install tftp 配置文件: /etc/xinetd.d/tftp 端口:69 数据目录: /var/lib/tftpboot/ 配置 service tftp { 
    socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 } 客户端: [root@localhost ~]# tftp 172.16.90.245 tftp> get hosts 
10.MAIL
讯享网邮件服务器: MUA:邮件用户代理 foxmail outlook MTA:邮件传输代理 sendmail postfix MDA:邮件投递代理 SMTP:简单邮件传输协议 postfix 安装: yum install postfix 配置文件: /etc/postfix/main.cf 端口:25 启动服务:systemctl restart postfix 日志:/var/log/maillog 邮件保存位置:/var/spool/mail/ 配置: hostnamectl set-hostname mail.robin.com [root@localhost ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.90.245 mail.robin.com 配置发送 vim /etc/postfix/main.cf myhostname = mail.robin.com mydomain = robin.com inet_interfaces = all #inet_interfaces = localhost systemctl restart postfix 测试: [root@localhost ~]# telnet mail.robin.com 25 连接25端口 Trying 172.16.90.245... Connected to mail.robin.com. Escape character is '^]'. 220 mail.robin.com ESMTP Postfix ehlo mail.robin.com ------------------------------------------- 和服务器测试连接 250-mail.robin.com 250-PIPELINING 250-SIZE  250-VRFY 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN mail from: ----------------------------------- 发件人 250 2.1.0 Ok rcpt to: ---------------------------------------- 收件人 250 2.1.5 Ok data --------------------------------------------------------------------------内容 354 End data with <CR><LF>.<CR><LF> hello i am robin!!!!!! . ---------------------------------------------------------------------------------------结束 250 2.0.0 Ok: queued as EFBBF3 quit -------------------------------------------------------------------------- 退出 221 2.0.0 Bye 非交互式 echo  | mail -s test  接受邮件: 安装软件: yum install dovecot 配置文件: /etc/dovecot/dovecot.conf /etc/dovecot/conf.d/ 端口:pop3:110 imap:143 启动服务:systemctl restart dovecot 配置: vim /etc/dovecot/dovecot.conf protocols = imap pop3 lmtp vim /etc/dovecot/conf.d/10-mail.conf mail_location = mbox:~/mail:INBOX=/var/mail/%u mkdir -p /home/zorro/mail/.imap/INBOX chown -R zorro.zorro /home/zorro/ 测试接受邮件: [root@localhost ~]# telnet mail.robin.com 110 连接 110 Trying 172.16.90.245... Connected to mail.robin.com. Escape character is '^]'. +OK Dovecot ready. user zorro -------------------------------------------------- 用户 +OK pass 123 -------------------------------------------------- 密码 +OK Logged in. list -------------------------------------------------------- 列出 +OK 2 messages: 1 456 2 538 . retr 1 ----------------------------------------------------- 查看 +OK 456 octets Return-Path: <> X-Original-To:  Delivered-To:  Received: from mail.robin.com (mail.robin.com [172.16.90.245]) by mail.robin.com (Postfix) with ESMTP id EFBBF3 for <>; Thu, 22 Jun 2017 10:58:31 +0800 (CST) Message-Id: <842.> Date: Thu, 22 Jun 2017 10:58:31 +0800 (CST) From:  hello i am robin!!!!!! . 
小讯
上一篇 2025-02-11 19:42
下一篇 2025-03-06 17:15

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/53905.html