linux的内核版本由3部分组成:1、主版本号;2、次版本号;3、末版本号
版本号的第二位数字,可以确定LINUX内核版本的类型(通过uname -a命令进行查询)
1、开发版本:第二位数字是奇数,例如:2.5.78
2、稳定版本:第二位数字是偶素,例如:2.6.23
在安装linux的时候,如果分区设置成手动分区,那么/boot目录的大小建议设置成500M
在linux7.x版本安装好后,打开终端,他启动的使用的就是标准的gnome主题界面
ext4文件系统跟xfs文件系统的区别:
1、首先他们的文件存储容量差别不是很大
2、xfs的一个线程处理多个任务的时候,xfs文件系统的效果是最好的,但是如果是多线程处理多任务的时候,ext4的效果是最好
设备-----文件系统------应用程序,也就是说在设备和应用程序之间必须要有文件系统的存在
Linux里一切皆文件,但识别文件的格式不是像windows一样根据扩展名来识别文件的类型,linux不根据扩展名来识别文件类型,而是根据颜色跟权限来识别
硬盘及转速的划分:
1、IDE:并口的硬盘
2、SATA :5400、7200
3、SCSI :10000
4、SAS : 15000
5、SSD : 固态硬盘
linux中xwindow与命令行模式:
1、默认情况下,linux会提供6个终端来让用户登录,切换时使用:Ctrl+Alt+F2~F6组合键,同时,系统为了判断,会将【F2】~【F6】定义为tty1~tty6的操作界面环境。当
从图形化界面按下Ctrl+Alt+F2这个组合键,就会进入到tty1的终端界面中。
2、Alt+F2~F6:命令行登入tty1~tty6终端
3、Alt+F1:返回图形界面桌面
linux系统典型的引导过程:
1、加载并初始化内核
2、检测和配置设备
3、创建内核线程
4、操作员干预(仅用于手工引导)
5、执行系统启动脚本
6、多用户模式运行
linux系统的启动过程:
1、主机启动自检
2、执行硬盘MBR中的启动引导器/boot/grub/grub.conf
3、加载linux内核程序
4、执行INIT进程—/etc/inittab
5、进入系统默认运行级别并执行相应的服务
6、允许用户进行登录
初始化进程,linux5,6使用的是init命令,到linux7则使用的是systemd,但它不仅仅是做初始化进程,它还接管了service、chkconfig等配置任务
init的系统运行级别为:
(1)、0 关闭系统
(2)、1 单用户模式
(3)、2 多用户模式(不支持NFS)
(4)、3 完全多用户模式
(5)、4 未分配使用
(6)、5 图形登录的多用户模式
(7)、6 重新启动,不要把系统缺省运行级别设置为6,否则系统将不能正常启动
chkconfig --list 查看系统所有服务的不同级别的运行状态(下一次)
在linux中可以通过runlevel查看当前系统的运行级别,输入这个命令后会返回两个值: 上一次的运行级别 当前的运行级别
systemctl start 服务名称 ----------------------------启动服务
systemctl restart 服务名称 -----------------------------重启服务
systemctl stop 服务名称 -----------------------------关闭服务
systemctl status 服务名称 ------------------------------查看服务状态
systemctl enable 服务名称 -----------------------------加入到启动项
查看系统服务日志,他们都会被写入到/var/log/message文件内
注意:systemd是服务名称 systemctl是配置工具
kdump是收集我们系统内核的报错信息的,用于系统排错和调优
bash的优点:
1、通过tab键对命令进行自动补齐
2、通过方向键可以查看我们执行过的命令
3、可以编辑强大的bash脚本
4、具有实用的环境变量功能。
Automounter 是一个linux下自动挂载工具,它将文件或者目录同挂载光驱和软驱一样,自动的挂载访问的分区到用户指定的目录下面,方便管理员进行操作。
Automounter 需要autofs软件包支持,rhel6自带这个工具,但rhel7不带,需要到yum仓库进行安装,例如:yum install -y autofs
同时,它的主配置文件是/etc/auto.master,/etc/auto.misc是它的子配置文件,用来说明自动挂载策略的。
NIS(只能适用于linux–linux, linux --unix之间,rhel6中使用它),ldap(可以是跨平台的,整合微软和linux,强烈推荐使用它)
注:以下操作都是针对rhel6进行的操作:
NIS在linux里对应的服务名为ypserv,默认情况下没有安装,需要通过yum仓库对它进行安装,例如:yum install -y ypserv
但注意,安装完成之后,默认他是启动不成功的,是因为在NIS安装成功后,需要在它的配置中vim /etc/sysconfig/network给它创建一个名字 NISDOMAIN=你要起的名字,例如:NISDOMAIN=RHCE
然后重启服务器,此时NIS服务器就建立好了,但是并没有与用户账号进行挂钩,需要用到ypinit命令(这个命令在/usr/lib64/yp/ypinit),通过ypinit -m给他们建立挂钩链接,按ctrl+d进行保存。
如果想用rhel7图形化连接这个NIS服务器,需要安装autoconfig*、sssd*、 krb5*,ypbind这4个软件包,安装完成后运行authconfig-gtk,就出现图形化配置界面。
命令 参数 对象(命令、参数、对象之间必须有空格做间隔,空格可以是1一个也可以是多个)
参数之间是可以合并的,短格式和短格式之间可以合并,并且保留一个“-”,短格式和长格式之间不可以合并,长格式和长格式之间也不能合并。
man命令:是用来查看一个命令的帮助文档的,格式: man + 命令,同样:命令 --help 或者 命令 -h 结果是一样的,还有info + 命令也是同样的效果。
1、echo :将字符串输出到屏幕上,通常与管道符搭配,提取变量的内容,并将变量的内容输出到屏幕上
2、date: 查看系统时间,注意参数 -s等
补充:
cal: 查看日历,如果要想查看全年月份日历,可以输入:cal 2019
bc: 计算器,支持小数点!
3、reboot: 重启系统
4:poweroff : 关机,类似的命令还有 shutdown , init 0等
5、wget:用于下载文件用的
-b:后台下载模式
-P:下载到指定目录
-t:最大尝试次数
-c:断点续传
-p:下载页面内所有资源,包括图片、视频
-r : 递归下载
ps : 用于显示系统的进程信息
-a 查看所有进程的信息
-u 显示进程的详细信息
-x 即使进程没有终端也帮你显示出进程的信息
pgrep -U root 查找某一个用户所产生的进程
pgrep -G company 查找某一个组所产生的进程
pidof httpd 查找某一个服务的进程
signals 信号
signal 15 : 正常结束
signal 9 : 强制结束
signal 1 : recoad config file(重新加载)
kill -15 PID
kill -9 PID
kill -1 重新加载配置文件
killall httpd
pkill httpd
前台后台启动:
1、如果想在执行某条命令的时候在后台执行,可以在这个命令的后面添加 & 符号,例如: cp /etc . -r & ,这样就把拷贝的这项工作放到后台来执行,在输入完命令后,桌面立刻出现[root@lijianbo tmp]的提示符,但拷贝工作依然在后台运行
2、如果想看看目前系统有哪些正在后台运行的工作可以使用jobs命令,例如:[root@lijianbo tmp]#jobs
3、如果想把jobs里后台的进程列表里的工作调用到前台工作,可以使用命令 fg %编号 例如:[root@lijianbo tmp]#fg %1 , 如果想让他继续调用到后台运行,先输入 ctrl+z快捷键先暂停工作,然后再通过命令 bg %编号,例如
[root@lijianbo tmp]#bg %1,如果想删除可通过命令kill %1
在做服务器集群的时候,为了让各台服务器进行时钟同步,可以编辑vim /etc/chrony.conf,将ntp服务器的地址配置成一样
如:server IP iburst
图形化工具可以通过YUM仓库安装system-config-date
linux下的开机启动脚本(类似于windows的开机启动项),编辑 vim /etc/rc.d/rc.local文件,可以在里面编辑内容,从而实现开机进行自动化脚本执行
6、top:用于动态的查看系统进程的命令
显示的状态参数描述
R:正在运行,正在为用户提供服务。
S:正在休眠,等待为用户提供服务。
D : 进程不可中断。
Z:僵尸进程
T:已经停止的进程。
7、pidof: 用于获取一个服务的进程号码
8、kill:根据进程编号对应的服务结束一个进程,例如:kill + 进程号码
9:killall:结束一个服务对应的所有进程,例如:kill + 服务名称
10、ifconfig:用于查看网卡的配置信息,如果想确定网卡的IP地址配置是否是动态分配还是静态分配,可以查看 cat /etc/sysconfig/network-scripts/ifcfg-eno16777736的信息,查看里面的BOOTPROTO的值,如果是DHCP,就是动态分配,如果是NONE,就是静态分配。
11、uname: 用于查看系统架构及内核信息,搭配的参数有-a
12、uptime:用于查看linux系统的负载情况
13:free:用于查看系统的内存信息的,默认以KB为单位显示,如果想更人性化显示,就可以输入参数-h
14: who:用于查看我们的终端数量的详细信息,功能一样的命令还有w
15:last:用于显示系统的登录记录(仅供思考),它的记录信息可被修改,这个信息是系统的日志信息(可被修改)
16:history:用于查看系统历史执行的命令记录,如果想重复执行某条命令,可以使用!加history显示的历史命令的编号,比如:!45, history -c用于清空history里的命令执行记录
如果想修改history保存历史执行命令条目的大小,可以编辑vim /etc/profile(系统的全局配置文件),修改里面的HISTSIZE的内容
如果想指定某个用户的history命令保存历史命令执行的条目大小,可以进入该用户的家目录然后编辑vim /home/lijianbo/.bash_profile文件,在里面添加HISTSIZE=100即可
17、sosreport:当系统出现故障的时候,可以通过sosreport搜集一下系统故障信息,可以发给redhat进行故障分析。
18、pwd:显示当前所在的工作目录
19、 cd:用于切换目录, cd ~ 用于切换到当前用户的家目录,cd - 返回上一次所在的工作目录,cd … 上一级所在的目录
20、 cat:查看一个文件的内容,适用于查看短小文件,cat -n在查看文件内容的同时,加上行号。
21、 more:查看一个文件的内容,适用于大文件
22、head:如果想看文件的前10行内容,可以用head命令+参数-n 10, 比如:head -n 10 wenjian.txt
23、tail:如果想看文件的后10行内容,可以用tail命令+参数stat -n 10,比如:tail -n 10 wenjian.txt
24、tail -f 就是实时刷新一个文件,一般与日志文件进行搭配 例如:tail -f /var/log/message
25、wc:用于统计一个文件的行数,字节数、单词数 -l:统计行数; -w:统计单词数;-c:统计字节数 常用:wc -l /etc/passwd
26、stat:用于查看一个文件的最后一次访问时间,真实修改文件内容修改时间、修改文件属性及信息的时间 inode保存的是一个文件的属性信息,block保存的是一个文件的真实信息
27、cut:按列提取文件信息,参数-d表示指定的分隔符,-f 1 ,例如提取/etc/passwd 文件里面第一列的账号信息,可以使用 cut -d : -f 1 /etc/passwd
扩展一下 统计系统里面有多少个账号 可以通过管道符进行命令的输入 ,例如:cut -d : -f 1 /etc/passwd | wc -l
28、diff:对比两个文件的不同之处,并显示出来,如果只想知道两个文件是否不同,而不列出两个文件的不同之处,可以加参数 --brief
29、touch:新建一个文件(空白文件),如果要修改一个文件的ctime(文件的索引节点发生改变),mtime(修改的文件本身的内容发生变化),就用touch -d参数,例如:touch -d “09:00” ceshi,如果在一个已经存在的文件下使用touch命令,那目的就是更新这个文件的时间戳
30、mkdir:新建一个目录,如果新建一个嵌套递归的目录,那么可以使用mkdir -p,例如:mkdir -p /a/b/c/d/e/f
31、cp:将一个文件从一个地方复制到另一个地方,cp -p 是复制文件的时候保持原有文件的属性,cp -r 是复制目录文件的时候需要加上-r参数
32、mv:将一个文件从一个地方剪切到另一个地方,在同一个目录下对一个文件进行剪切操作的本质就是对这个文件进行重命名
33、rm:删除一个文件,rm -f是强制删除的意思。 rm -r是删除一个目录, rm -rf是强制删除一个目录
34、dd:按照指定的大小进行复制,例如 dd if=a.txt of=b.txt bs=20 count=1 bs是块的大小,count是块儿的个数
35、file:用来查看一个文件的类型
36、tar:打包跟解压的操作,tar -czvf c:打包归档的意思,z:gzip压缩的格式 j:bzip2 v:显示打包或解压的过程 f:打包或解压后文件的名称
37、grep:过滤命令,把一个文件里包含关键字的内容全部提取出来,例如:grep network anaconda-ks.cfg ,grep -n过滤完内容之后并显示行号,grep -v反选过滤
38、find: 查找搜索命令 后面加-name参数,-name 后面跟要查找的文件名; -user 后面跟用户,作用是查找所有后面归该用户的文件
find后面可以跟-exec参数 参数后面跟要执行的命令,作用是将前面的查找的内容作为后面命令执行的输入, 后面用;作结束符,例如:查找从根目录下所有属于linuxprobe用户的文件,然后复制到root目录下:
find / -user linuxprobe -exec cp -rf {} /root ;
39、alias :给要执行的命令建立一个别名,例如: alias hh=“grep -n network anaconda-ks.cfg”
直接输入alias,系统会列出当前系统建立的命令的别名列表
40、hostnamectl : 用于设置主机名,例如:hostnamectl set-hostname lijianbo,图形化改主机名是: nmtui-hostname
41、time : 用来记录你某一次命令操作耗用的时间(服务器调优经常用)
42、halt : 关机
43、du : 列出文件或目录占用磁盘空间的大小
44、pstree : 列出当前系统的的进程目录树
45、e2label : 磁盘的卷标名,例如:e2label /dev/mapper/vg01-lv 用于查看设备/dev/mapper/vg01-lv的卷标别名; e2label /dev/mapper/vg01-lv root 用于把设备/dev/mapper/vg01-lv起个root卷标名
46、blkid : 用于查看硬件的唯一标识号uuid
47、grub-md5-crypt : 用于给grub进行加密,用于生成md5的密文密码
48、grub-install (rhel6) : 当mbr毁了,造成系统崩溃,可以通过grub-install /dev/sda从新生成mbr
49、grub2-install(rhel7):当mbr毁了,造成系统崩溃,可以通过grub-install /dev/sda从新生成mbr
50、nmcli : 用于修改网络设置的命令
例如:
1、 nmcli connection show : 用于查看当前处于活动状态的网卡信息
51、ip route add 192.168.2.0/24(去往目的网络) via 192.168.110.254(下一跳地址),用于添加路由,特别注意,这个路由添加成功后,一定要开启IP路由转发功能。
52、route -n 查看当前的路由表
53、watch -n : 用于实时查看一些动态信息,比如想看网卡每一秒的动态信息,可以输入 watch -n 1 ifconfig eno16777736
/etc/hostname: 保存的是主机名及网络的相关信息
/etc/resolv.conf 这里存的是DNS服务器的地址信息
/etc/nsswitch : 这里保存的是如果我们电脑访问查询的策略,先从哪开始查询(比如:hosts或者DNS)
grub(Grand Unified Bootloader)
1、上下键选择操作系统启动
2、GRUB编辑(读取MBR信息,加载分区表信息)
3、加载启动分区(root(hd0,0))
4、加载内核,以只读方式挂载根分区
卷标的表示方式:
root=/dev/sda7
root=LABEL=/
rhgb,是否用图形化显示启动
quiet,当某一个服务挂掉,是否显示(默认是不显示)
5、加载RAMDISK文件(内存磁盘)
变量的类型:1、本地变量(局部变量);2、环境变量;3、位置参数变量;4、预定义变量
内核是操作系统的核心组成部分,内核有两个功能:
1、充当资源管理器,向进程透明的分配内存,cpu访问等资源;
2、充当解释器,在进程与硬件之间传递消息。
内核起到的作用:1、系统初始化,检查硬件资源和系统初始化
2、进程调度
3、进程管理
4、内核安全
5、缓冲区
6、添加标准的网络协议
查看系统的版本号的命令: uname -r
查看红帽操作系统的版本号的命令: cat /etc/redhat-release
重定向分为输入重定向和输出重定向,输出重定向的作用就是将原本要输出到屏幕上的信息输出到文件或命令中执行,输出包括:标准输出跟错误输出,输入的符号是:<,输出的符号是:>,错误输出的符号是2>,
标准输出与错误输出都包括覆盖输出与追加输出
覆盖输出的符号:>
追加输出的符号:>>
将标准输出和错误输出同时输出到一个文件中的符号是,&>
管道符的作用,将原先需要输出到屏幕上的内容交由给后面的命令再来执行
通配符的作用,是匹配一个或多个任意字符,通配一个或多个字符,?通配单个字符,精准通配【0-9】,通配0、1、2、3、4、5、6、7、8、9, ^、!是反选符号,即除了指定内容之外的东西,例如:rm -rf[^a].txt 意思是强制
删除除了以a开头的所有文件
如果一个用户的终端属性被设置成/sbin/nologin,那么这个用户就不能登录终端了
passwd用来重置用户的密码的,passwd有一个–stdin参数,用于从一个管道符中读取内容,然后进行密码的修改,比如:想修通过管道符修改root密码,可以通过执行命令: echo “新密码” | passwd --stdin root
$$ :两个$符显示的是当前进程的编号
\:转义字符,去除符号后的特殊功能,保留原意
’ ':是将单引号里的内容进行全部转义
:反引号,作用是会执行反引号里面的命令
命令的执行方式(步骤):
1、如果输入的是命令的绝对路径,那么这个命令会直接进行执行,优先级最高!
2、如果输入命令不是绝对路径,那么它会先检测输入的命令是否是执行命令的别名
3、区别是否是系统的内部命令或外部命令
如果想在PATH变量里面添加新的查询路径信息,那么可以通过以下命令来进行执行:
PATH=$PATH:/root/bin
特别注意:每个用户建立的变量都是局部变量,如果想把局部变量升级为全局变量,通过以下命令进行:
export 变量名 ,例如:将用户建立的变量名WORK升级为全局变量,可以使用export WORK
linux里一切皆文件,配置一个服务就是配置这个服务对应的配置文件
vim编辑器主要有三种运行模式:1、命令模式;2、输入模式;3、末行模式
vim的使用技巧:
1、dd:删除(剪切)光标所在的整行。
2、5dd:删除(剪切)从光标处开始的5行。
3、yy:复制光标所在的整行。
4、5yy:复制从光标处开始的5行。
5、p:将之前删除(dd)或复制(yy)过的数据粘贴到光标后。
6、u:撤销,还原操作。
7、/ :/后面跟要搜索的关键词,n是下一个匹配项,它是从上往下进行搜索
8、?:?后面跟关键词,是从下网上进行匹配,从下网上进行搜索。
9、 :数字 :将光标快速定位到数字那一行
10、k,j,h,l :功能分别是上,下,左、右
11、shift+gg : 快速把光标定位到文章的末行
12、gg :把光标定位到文章的开始
13: 0 :把光标移动到本行开头
14: $ :把光标移动本行结尾
15: shift + zz(快捷键) : 保存退出!
16、 在末行模式下,输入w + 新的文件名,作用类似于另存为。
vim -o 文件1 文件2 :用vim同时编辑2个文件,两个文件之间的切换用ctrl+ww
RHEL7 通过vim编辑器编辑网卡的设置,路径是:
vim /etc/sysconfig/network-script/ifcfg-eno16777728
DNS 编辑的地址在:/etc/resolv.conf
BASH脚本的格式:
vim /etc/shells 该文件里面的内容是来说明目前你linux系统里存在的shell环境
linux每个用户创建,在该用户的家目录都有四个该用户的环境配置文件,即必须提供一套缺省的启动脚本文件:1、 .bash_history 2、 .bash_logout 3、 .bash_profile 4、 .bashrc
1、脚本的声明,用来说明脚本的执行环境 例如: #!/bin/bash
2、脚本的注释,介绍脚本的功能及相关信息 例如: #
3、脚本主体
BASH脚本里的一些内置变量
例如:echo $1,$3,$5 用于输出第1个,第3个,第5个参数的信息
例如:echo KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲,* 用于输出接收到参数的个数, ∗ 用 于 输 出 接 收 到 的 参 数 分 别 是 什 么 例 如 : *用于输出接收到的参数分别是什么 例如: ∗用于输出接收到的参数分别是什么例如:? 用于判断上一条命令是否执行成功
例如:$0 用于输出脚本的名称,也就是需要执行脚本的文件名
条件测试语句可以分为4种:
1、文件测试语句;
例如:[ -d /etc ] ,通过echo $?来输出上一条命令的执行情况,0,即为成功,1,即为失败,从而判断文件是否是一个目录;
例如:[ -f /etc ] , 用于判断etc是否是一个文本文件,或者是个一般文件
例如:[ -r /etc ] , 用于判断一个文件是否有读取权限
例如:[ -w /etc ] , 用于判断一个文件是否有写权限
例如:[ -x /etc ] , 用于判断一个文件是否有执行权限
例如:[ -e /etc ] , 用于判断一个文件是否存在
2、逻辑测试语句;
(1)、&&逻辑与,当前面的命令成立的时候,执行后面的语句。
(2)、||逻辑或,当前面的命令不成立的时候,执行后面的语句。
例如:判断一个用户是否是root用户的语句:
[ $USER = root ] && echo “root” || echo “user”
3、逻辑值比较语句;
(1)、-eq : 是否等于
(2)、-ne: 是否不等于
(3)、-gt: 是否大于
(4)、-lt: 是否小于
(5)、-le: 是否等于或小于
(6)、-ge: 是否大于或等于
应用:
[ free -m | grep Mem: | awk '{print $4}'
-le 1024 ] && echo “Insufficient Memory” || echo “Memory Full”
4、字符串比较语句;
(1)、 -z判断一个变量是否被使用过 例如: [ -z HOHO ]
逻辑判断语句:
(1)、if逻辑判断语句:
1、单分支格式:
if 条件测试操作
then 命令序列
fi
例如: #!/usr/bin
DIR=/media/haha
if [ ! -e $DIR ]
then
mkdir -p $DIR
fi
2、双分支格式:
if 条件测试操作
then 命令序列1
else 命令序列2
fi
例如: #!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &>/dev/null #/dev/null 是目录黑洞,将输出输出到该目录可以保证屏幕的清爽性
if 【 $? -eq 0 ]
then
echo "$1 is On-line"
else
echo "$1 is Off-line"
fi
3、多重分支格式:
if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序列3
fi
例如:#!/bin/bash
read -p "Enter:" GRADE
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then
case条件测试语句
格式:
case 变量值 in 模式1)
命令序列1
模式2)
命令序列2
模式*)
默认命令序列
esac
例子:
#!/bin/bash
#代码说明
read -p "Enter" KEY
case "$KEY" in
[a-z]|[A-Z]) # | 逻辑或
echo "zimu"
;; #(结束判断)
[0-9])
echo "shuzi"
;;
*)
echo "qitazifu"
esac
linux的计划任务:
1、一次性的:使用at命令,一定要注意ctrl + D 是进行保存退出
at -l 查看计划任务的列表
at -c 计划任务列表编号 用于查看计划任务的详细信息
atrm 计划任务列表编号 用于删除已创建的对应编号的计划任务
atq 命令显示系统中待执行的任务列表,也就是列出当前用户的at任务列表。下面通过本文给大家分享linux中的atq命令,感兴趣的朋友一起看看吧
2、周期性的:使用crond,crond是服务名称,crontab是配置工具
其实它的原理也是调用vim编辑器
在部署计划任务的时候,时间部署用的是:“分、时、日、月、星期、命令(绝对路径)”,没有的用*号补齐
如: 20 4 * * * /usr/sbin/reboot,表示每天的4:20重启电脑
20 4 */2 * * /usr/sbin/reboot,表示每隔2天的4:20重启电脑
*/5 4 * * * /usr/sbin/reboot,表示每天到4点的时候,每隔5分钟重启一次电脑
它使用crontab -e 来创建计划任务
用户权限
linux里任何用户都包含5个部分:1、用户登录的子目录; 2、登录口令; 3、shell; 4、启动上机脚本程序; 5、电子邮件(邮件地址:/var/spool/mail)
查看linux系统里的所有用户账号为: cat /etc/passwd
账号 密码位 UID GID 描述 用户家目录 用户对应的终端
root: x : 0 : 0 : root: /root :/bin/bash
管理员:root UID:0,权限是最大的,限制是最小的,可以控制系统,可以管理硬件
系统用户: linux版本5、6时,UID编号1-499
linux版本7,UID编号是1-999,权限是最小的,甚至都不能登录系统,只能管理对应服务
对应的终端是:/sbin/nologin
普通用户:UID编号是:1000-65535(linux版本为5,6),1000-几十万个(linux版本为7时)
对应的终端是:/bin/bash
创建用户:useradd 后面跟要添加的用户名
useradd -c 为用户添加描述
useradd -d 为创建的用户指定家目录
useradd -u 用户UID 用户的名称:在添加用户的同时,可以指定添加用户的UID号码
useradd -s 终端路径(比如:/sbin/nologin):指定该用户的默认shell解释器
useradd -g 指定用户所属的群组
useradd -G 指定用户所属的附加群组
usermod: 用于修改用户的UID,GID,GROUP编号,对应的参数分别是 -u, -g(基本组),-G(扩展组)
如果想让用户的登录口令没一个月更换一次,可以使用chage + 用户名
查看用户的身份: id 会显示用户的属主、属组、其他的相关信息
添加用户组: groupadd 后面跟要添加的用户组名
用户组分为两个:1、基本组
2、扩展组
删除用户:userdel 后面跟用户名,但这个命令只是删除用户信息,并没有连用户的家目录等相关信息删除,所以,如果想彻底删除用户的相关信息,可以使用userdel -r + 用户名,就可以彻底删除该用户的相关信息。
newusers : 当从别的电脑上下载类似与/etc/passwd的信息,但并未导入在本机/etc/passwd中,现在想导入然后在本机上建立别的电脑上/etc/passwd里的账号,可以使用该命令,例如:newusers user.txt
当建立后,切换该用户,发现新建立的用户的家目录并没有切换过来,可以通过命令:cp /etc/skel/.* . 把用户默认的环境变量的配置文件内容复制过来,然后从新切换该用户,就实现了。
scp : 远程复制 例如:scp /etc/passwd /etc/shadow /etc/group /etc/gshadow [email protected]:/etc
linux里的文件标识:
-:表示普通或文本文件
d:表示目录
l:表示链接文件
b、c:表示特殊文件,块设备,比如光盘、鼠标、硬盘等硬件设备
p:管道文件
通过颜色也能区分文件的标识,红色是软件包文件,绿色是可执行文件
一个文件有三种权限(r读,w写,x执行)
r:能否读取文件内容的权限
w: 能否修改文件内容的权限
x: 能否有执行文件的权限
一个目录文件的三种权限(r读,w写,x执行)
r: 是否能读取一个目录文件列表的权限
w:是否能在目录里面进行复制、删除、移动、剪切、改名,即对文件属性的操作。
x: 是否具备切换、进入目录的权限
用数字表示文件的权限是:
r(读):4 w(写):2 x(执行):1
改变文件的权限的命令:chmod 比如:chmod 777 test.txt
改变文件的所有者跟所有组:chown 比如: chown lijianbo:lijianbo test.txt
创建一个文件默认的权限是644
创建一个文件夹默认的权限是755
×××切记,权限设置是针对文件及文件夹的,不是针对用户进行设置的×××
文件和目录的安全管理:
1、为不同类用户设置不同的权限
2、为不同的文件设置不同的权限
3、慎重设置文件可执行权限
4、拒绝其他用户查看自己的目录列表
5、拒绝其他用户进入自己的目录
安全管理中需要特别注意的文件:
1、带S位的程序
2、异常和隐含文件
3、查找任何人都有写权限的文件和目录
4、查找没有主人的文件
特殊权限位(类似于尚方宝剑):特殊权限位是对我们一般权限的一种补充
suid :suid是让程序的执行者临时获得这个程序的所有者权限,一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限。 如果想设置SUID权限,可以使用 chmod u+s 进行设置
SGID: sgid对于程序而言,是让程序的执行者临时获得这个程序所有组的权限;sgid对于目录而言,是在这个目录里创建的所有文件,其权限都会归属到这个目录的权限 如果想设置SGID权限,可以使用 chmod g+s 进行设置
隐藏权限:是对我们一般权限的一种扩展,扩展一些功能
特点:1、通过ls命令是查看不到文件的任何隐藏权限的信息;2、root系统管理员也会受到我们隐藏权限的限制
chattr : 用于设置隐藏权限,如果要设置隐藏权限的方法是:chattr + 权限,如果要移走隐藏权限,可以使用:chattr - 权限
权限 i : 无法对文件进行修改,若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
权限a: 仅允许补充(追加)内容,无法覆盖/删除内容
lsattr : 用于查看隐藏权限
文件访问控制列表(权限):简称FACL,对某个用户,某个用户组进行文件权限的设置,这个可以达到精准的权限设置。
setfacl:用于设置facl,如果对于一个目录我们可以添加-R参数,如果对于一个文件我们可以添加-m参数,如果对于一个用户进行权限指定的,我们可以使用参数u进行操作,如果我们对于一个用户组进行权限指定,我们可以使用参数g进行操作,如果想删除设置的facl,可以加-b参数,参数-d是在原有设置的setfacl上权限递归操作
例如:
setfacl -m u:chenmengmeng:rwx study.txt
getfacl:用于查看facl,如果通过ls -l 文件 查看一个文件的详细信息,如果详细信息中那个点号(.)变成了加号(+),且这个文件的所属组被设置成了rwx,则说明这个文件被设置了facl。
*******************切记,facl只适用于来宾用户的身份上,一但设置facl属性对应的是文件的属主,那么这个facl设置就失效了××××××××××××××××××××××
账户切换
su 用户名
su - 用户名 :表示的是完全变更的意思
sudo命令的作用:
1、普通用户切换到管理员用户,不想泄露管理员密码;
2、切换到管理员权限,并不是可以做所有的事情,权限受限制。
可以通过visudo或者/etc/sudoers来进行设置sudo切换的权限,但一定要记住,visudo设置命令权限时,输入的命令应该是命令的绝对路径
存储结构
linux文件是从根目录开始的/(顶级目录) ,FHS就是LINUX的文件结构
/root :该目录保存系统管理员个人的隐私文件目录,即系统管理员的家目录
/home :该目录用于保存我们一些普通用户的家目录
/boot:用于放置我们开机的引导文件,启动菜单,以及所需的内核文件。
/dev :用于放置硬件的目录,比如:鼠标、键盘、光驱等系统所有管理的硬件目录,一般,在系统中光盘设备是:/dev/cdrom,硬盘设备是:/dev/sda
如果对应的老的IDE硬盘接口,则在系统中的表现形式为:/dev/hda
如果硬件设备是SCSI、SATA等设备,则在系统中的表现形式为:/dev/sda
如果是软盘设备,则在系统中的表现形式为:/dev/fda
如果是打印机设备,则在系统中的表现形式为:/dev/lpa
如果有多个光驱,那么在系统中第一个光驱对应的表现形式为:/dev/sr0,第二个光驱对应的表现形式为:/dev/sr1
/bin :保存二进制文件,跟开机无关的一些命令放在此目录下
/sbin:保存二进制文件,跟开机相关的一些命令放在此目录下,有些命令只有超级用户(root)才能执行,也放到此目录下。
/etc :用于放置系统服务和配置的文件目录
/var :用于存放日志、数据库,网站等,经常发生改变的文件目录
/lib:用于存放系统函数库的文件目录
/usr :用于保存用户自己安装的软件及服务的目录
/media:用于挂载光盘和多媒体硬件的目录,挂载设备文件的
/tmp : 临时文件目录,用于存放临时文件的目录
/opt:用于放置第三方的软件
/srv :用于存放一些网络服务的数据文件目录(RHEL 7里已经省略该目录了)
/proc :虚拟文件系统,例如系统内核、进程、外部设备及网络状态等
/lost+found : 当文件系统发生错误时,将一些丢失的文件片段存放在这里
/mnt:用户手动挂载目录
udev : 是一种文件的命名规范
/dev/cdrom :代表光盘
如果有多块光盘的话,可以通过下面查看命名规则:
/dev/sr0 /dev/sr1 /dev/sr2
/dev/sda :硬盘
linux的文件系统:Ext3(RHEL 5),Ext4(RHEL 6),XFS(RHEL 7)
主引导记录:MBR(446个字节)
每个扇区512个字节
MBR组成:1、执行代码,引导程序
2、分区表信息(分区类型,该分区的起始柱面,该分区的结束柱面) 注:一个柱面大约7.8M
linux下自带的分区工具有:1、fdisk; 2、sfdisk; 3、Diskdruid—安装操作系统的时候所使用(一次性); 4、partprobe(即时写入内核) 5、GNU parted
tune2fs:只适用ext的文件系统,用于查看ext格式的分区的详细信息
xfs_info:用于查看xfs格式分区的详细信息
如果拿到一块儿新的硬盘,需要进行3个步骤操作:
1、裁剪—分区操作,fdisk,如果分区后,通过ls -l /dev/sdb*,看不到分区内容,那么可以通过partprobe将分区信息强制同步到内核里
2、打格—格式化操作,mkfs.格式,如果要建立swap分区,则使用mkswap命令
3、使用—挂载 ,mount 绝对路径形式的设备名称 挂载目录 (命令输入即生效,重启失效)
注意:如果不想挂载了,卸载掉了,可以使用umount
格式:umont 绝对路径形式的设备名称(或者挂载目录)
mount 绝对路径形式的设备名称 挂载目录(命令输入及生效,重启失效)
如果要永久生效,需要将挂载写入到/etc/fstab文件中
格式:
/dev/sdb1(设备名称) /media/haha(挂载目录) ext4(分区格式) defaults(所能执行的权限) 0(是否进行自动备份) 0(是否进行开机自检)
df -h 用于查询挂载信息的
partprobe:用于将分区信息同步到内核系统里
如果要建立swap分区,则使用mkswap命令,建立完成后通过swapon进行系统内核同步,然后通过free -h进行查询您即可,如果想永久生效,也需要编辑/etc/fstab文件
格式:swapon /dev/sdb5
磁盘配额的特点:
1、应用在内核上
2、可以应用在每一个文件系统之上
3、对组和用户做限制
4、限制区域大小和文件数量
5、提供软,硬限制
注意:磁盘配额不是对整个硬盘做,而是对挂载的分区进行配置
root用户不受磁盘配额的限制。
磁盘配额的操作:
1、必须在挂载点上加入:usrquota,grpquota
2、生成数据库:quotacheck -cugm /filesystem ,会在/filesystem下生成两个文件:1、aquota.group ; 2、aquota.user
3、quotaon /filesystem启动
4、edquota -u 用户 用来设置对哪个用户进行磁盘配额,以及磁盘配额的大小(有两种划分方法:block块和inode数,同时它有提示信息soft(只是警告),hard(直接禁止))
-p user1 user2 可以对多个用户进行磁盘配额
-t 用来设置当你的磁盘配额达到告警值的缓冲期时间。
ext3 ext4 :使用quota命令
xfs :使用 xfs_quota命令
链接文件:
1、软链接 ----类似于wndows的快捷方式, 命令: ln -s 原始文件 新文件
2、硬链接-----创建出来一个新的inode文件,实际block,缺陷是不能对目录和跨分区、跨硬盘进行操作 命令:ln 原始文件 新文件
raid (磁盘阵列组),伯克利大学研发的,全球90%的DNS都是通过bind搭建的!
raid0(带区卷) :实现负载均衡,优点提升速度,缺点:成本没有提升,损坏机率增加。没有容错性 最少需要2块儿盘
raid1(镜像卷) :实现冗余备份,提升了按全性,缺点:容量降低 最少需要2块儿盘
raid5: 使用最为广泛的RAID级别 至少需要3快硬盘
raid5+1: 是在raid5的基础上加了一块儿灾备盘
raid6: raid6是在raid5的基础上为了进一步加强数据保护而设计的一种RAID级别,与raid5不同之处在于raid6采用双重校验方式,能够防止两块成员盘故障而引起的数据丢失,因此raid6的冗余性能相当好。
raid1+0 :即实现了冗余备份,又实现了负载均衡 最少需要4块儿硬盘,其中2块儿做raid1,2块儿做raid1,然后raid1和raid1做raid0。
raid主要是解决安全性跟读写速度,LVM主要解决容量动态调整的问题
做raid的时候需要用的命令,格式如下:
mdadm : 管理raid的软件,软raid
mdadm -Cv(参数-C是创建参数,参数v显示创建的过程)/dev/md0(做完raid后虚拟出来的硬盘设备,一般不需要改动) -a yes (用于检测/dev/md0这个设备名是否被占用)-n 4 (是说明用几块用盘来做raid) -l 10 (用于说明制作raid的级别,比如raid0、raid1、raid5、raid10) /dev/sd[b-e]
以下是raid10的制作过程:
1、具体格式如下:mdadm -Cv /dev/md0 -n 4 -l 10 /dev/sd[b-e]
2、mdadm -Q /dev/md0 (用于查看我们的raid组有哪些基本信息)
3、mdadm -D /dev/md0 (用于查看我们的raid组的详细信息,可以看到当前raid组中各块儿硬盘的同步状态)
4、blkid:用于查看设备名称跟我们设备标识符的UUID号码
5、mdadm -f /dev/md0p1 /dev/sdb(我们可以强制卸载某块儿硬盘,然后模拟进行破坏)
以下是制作raid5的制作过程:
1、mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sd[b-e] #-x参数是说明有一块儿硬盘做热备盘
2、mdadm -D /dev/md0
3 vim /etc/fstab
4、mkfs.ext4 /dev/md0
5、mount -a #挂载/etc/fstab下所有定义过但没有被挂载的设备
6、mdadm -f /dev/md0 /dev/sdc
7、mdadm -r /dev/md0 /dev/sdc #移除/dev/md0组的/dev/sdc信息
以下是将一块新的灾备盘添加到我们的raid5的阵列组里******************************************
1、df -h #先查看挂载信息
2、umont /dev/md0 #要想添加新的灾备盘,需要先把挂载的硬盘卸载掉
3、mdadm /dev/md0 -a /dev/sdc #将我们新添加的灾备盘加入到磁盘阵列组里
4、mdadm -D /dev/md0
5、mount -a
特别注意**
特别注意:虽然你做了raid也挂载了,但是reboot后做的raid还是会失效的,主要原因是在我们系统中间需要有一个配置文件来驱动我们raid型的设备,而这个文件默认情况下是没有的,/etc/文件夹下没有mdadm.conf文件,
如果想生成这个文件,可以使用如下命令:mdadm -D -s >> /etc/mdadm.conf,生成后再reboot就不会出现故障了。
在这个基础上做一个补充:如果想在raid发生故障的同时发出警报信息,可以在这个配置文件中(mdadm.conf)中加入一条配置,MAILADDR root@localhost,然后保存退出!同时输入两条命令
systemctl restart mdmonitor.server
systemctl enable mdmonitor.server
热备盘漂移:在/etc/mdadm.conf的配置文件中每一个/dev/md*的行末添加auto=yes spare-group=热备盘组的名字(随意起),然后保存,再重新输入2条命令
systemctl restart mdmonitor.server
systemctl enable mdmonitor.server
制作raid的主要目的是解决安全性跟读写速度,LVM的目的是为了解决我们分区容量的动态调整问题
LVM(逻辑卷管理器):作用可以将你的分区进行动态的调整
功能/命令 物理卷管理 卷组管理 逻辑卷管理
扫描 pvscan vgscan lvscan 扫描的目的是查看一下设备的信息
建立 pvcreate vgcreate lvcreate
显示 pvdisplay vgdisplay lvdisplay
删除 pvremove vgremove lvremove
扩展 vgextend lvextend
缩小 vgreduce lvreduce
特别注意:分区格式xfs是不支持LVM技术的,xfs默认就支持容量扩容,xfs也是不允许容量缩小的
LVM操作的步骤:
1、pv:操作的目的是为了能让设备支持我们的LVM技术
2、vg:操作的目的是为了能让我们的设备合并成一个大的卷组
3、lv:操作的目的是进行切割操作
LVM操作步骤:
1、 pvcreate /dev/sdb /dev/sdc #目的是让/dev/sdb,/dev/sdc支持LVM技术
2、 vgcreate dapangzi /dev/sd[b-c] #目的是创建卷组dapangzi(名字随便起),后面跟需要建立卷组的硬件设备
3、 vgdisplay #可以查看建立的卷组信息
4、 lvcreate -n haha -l 100 dapangzi #lvcreate是从我们卷组的资源池里进行切割,-n是你切割出去的设备名称,-l指定切割出去的大小,小写l指的是PE的大小,大写L是容量的大小
5、 lvdisplay #可以通过lvdisplay查看逻辑卷的详细信息
6、 mkfs.ext4 /dev/dapangzi/haha
7、 mkdir /media/haha
8、 mount /dev/dapangzi/haha /media/haha
9、 vim /etc/fstab
10、 cp -rf /etc/* ./
以下步骤是进行相关扩容但适用的是extx的文件系统************* 扩容和缩小容量是不会丢失数据的
扩容逻辑卷可以是在线也可以是离线
11、 umount /media/haha #扩容前先将挂载的设备卸载掉,要不进行扩容会报设备正繁忙
12、 lvextend -L 800M /dev/dapangzi/haha
13、 e2fsck -f /dev/dapangzi/haha #强制去扫描我们的文件系统是否被损坏,如果损坏会造成我们的数据丢失
14、 resize2fs /dev/dapangzi/haha #通过resize2fs通知系统内核我们的/dev/dapangzi/haha容量发生了变化
15、 mount -a #然后进行重新挂载
××××××××××××××××××××××××××××××以下步骤是进行缩小操作××××××××××××××××××××××××××××××××××××××××××××
减小逻辑卷一定注意是离线
16、 umont /dev/dapangzi/haha
17、 e2fsck -f /dev/dapangzi/haha #强制去扫描我们的文件系统是否被损坏,如果损坏会造成我们的数据丢失
18、 resize2fs /dev/dapangzi/haha 300M 通过resize2fs先通知系统内核我们的/dev/dapangzi/haha容量发生了变更,如果报错了,就是不能进行缩小
19、 lvreduce -L 300M /dev/dapangzi/haha
20、 mount -a
建立的逻辑卷对应的设备路径为: /dev/卷组的名称/逻辑卷的名称,如上步骤,则建立的是: /dev/dapangzi/haha
×××××××××××××注意:XFS VM文件系统只能增大不能减小××××××××××××××××××
linux快照:
快照执行的命令:
lvcreate
要保证建立的快照所需的磁盘需要被挂载
快照备份磁盘的大小要跟被备份的文件大小最少得一样
切记:linux建立的快照只能被还原一次
格式:
1、lvcreate -L 300M -s -n SNAP /dev/dapangzi/haha #参数-s是建立快照的意思,/dev/dapaangzi/haha是被进行快照的目录
2、cd /media/haha
3、rm -rf *
3、umount /media/haha
4、lvconvert --merge /dev/dapangzi/SNAP #lvconvert是恢复快照的命令,–merge是合并的意思,后面跟快照卷的名称
5、mount -a
***************************删除LVM的步骤××××××××××××××××××××××××××××××××××××××××××××××××××××××××
1、umount /dev/dapangzi/haha
2、vim /etc/fstab #删除掉配置文件中的挂载信息
3、lvremove /dev/dapangzi/haha #先删除建立的逻辑卷
4、vgremove dapangzi #然后删除建立的逻辑卷组
4、pvremove /dev/sdb /dev/sdc #最后删除支持的LVM的我们添加的设备
linux配置网卡有4种方法:
1、编辑配置文件:
vim /etc/sysconfig/network-script/ifcfg-eno16333329
2、nmtui(图形化管理界面): >>>>>>>>>>>>>>>>>>>>>>>>>>>推荐使用
3、nm-connection-editor
4、在右上角点击网络图标进行配置
linux防火墙规则链
1、INPUT链:处理流入的数据包
2、OUTPUT链:处理流出的数据包
3、FORWARD链:处理转发的数据包
4、PREROUTING链:在进行路由选择前处理数据包 牵扯SNAT(源地址转换协议),DNAT(目的地址转换协议)问题
5、POSTROUTING链:在进行路由选择后处理数据包
iptables:3表5个链(规则链)
iptables : rhel5、6里才有的,他是基于内核级的防火墙
firewalld: rhel7里才有,同时保留了iptables
RHEL7.0-7.1(版本号): iptables还有所保留
RHEL7.2-7.5(版本号): 已经彻底不包含iptables了,全部改用firewalld。
iptables -L :用于查看当前已有的策略
iptables -F :用于清空当前默认规则链中的策略
iptables -P :用于设置一下默认的规则链
iptables防火墙有四个动作:
1、允许 ACCEPT
2、拒绝 REJECT : #红帽考试拒绝操作的推荐使用REJECT
3、拒绝 DROP :直接对数据包进行丢弃
4、日志 LOG
防火墙的策略是从上往下进行匹配,越靠上优先级越高,一旦匹配上,就不进行下面的匹配了
iptabels -I :目的是把加入的策略优先级放到最高(建议使用该参数,这样设置后的策略被最先应用)
iptables -A : 目的是把加入的策略的优先级放到最低
记住,全部允许的时候写上拒绝的规则,全部拒绝协商允许的规则。
设置防火墙策略及动作的操作步骤,如下:
1、iptables -P INPUT(规则链的名称) DROP(执行的动作)
2、iptables -I INPUT -p(支持的协议,主要有tcp,udp,icmp) icmp -j ACCEPT (参数-j是匹配到规则后执行的动作)
删除防火墙策略及动作的操作,方法有两种:
第一种:
iptables -F 清空当前所有的默认策略
第二种,如果想清空默认规则链中的某条策略:
iptabels -D INPUT 1 (即删除规则链中设置的第1条策略)
比如:设置ssh禁止登录的操作步骤:
1、iptables -P INPUT ACCEPT
2、iptables -I INPUT -p tcp --dport 22 -j REJECT
在这个基础上,我们仅允许某台客户端主机访问我们服务器的22端口:
3、iptables -I INPUT -s 192.168.10.1 -p tcp --dport 22 -j ACCEPT
如果我们仅允许某台客户端主机访问我们服务器的22,25,3389,21端口,操作如下:
iptables -I INPUT -s 192.168.10.1 -p tcp --dport 22,25,3389,21 -j ACCEPT
如果我们仅允许某台客户端主机访问我们服务器的连续的端口号,操作如下:
iptables -I INPUT -s 192.168.10.1 -p tcp --dport 22:25 -j ACCEPT
在这个基础上,我们仅允许某个网段访问我们服务器的22端口,操作如下:
iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT
保存防火墙的状态为:
service iptables save
Firewalld : 主打的linux系统防火墙
zone : 区域,类似于模板的意思,作用就是快速的变更我们防火墙的策略,具体的有如下的区域:
序号 区域 默认规则策略
1、 trusted :允许所有的数据包
2、 home :拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh,mdns,ipp-client,amba-client与dhcpv6相关,则允许流量
3、 internal:等同于home区域
4、 work :拒绝流入的流量,除非与流出的流量相关,而如果流量与SSH,ipp-client与dhcpv6-client服务相关,则允许
5、 public :拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh,dhcpv6-client服务相关,则允许流量
6、 external:拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh服务相关,则允许流量
7、 dmz :拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh服务相关,则允许流量
8、 block :拒绝流入的流量,除非与流出的流量相关
9、 drop :拒绝流入的流量,除非与流出的流量相关
10 自定义区域
用两个工具来配置它:
1、firewall-cmd : 基于命令行的配置方法
2、firewall-config:基于图形化界面的配置方法
firewall-cmd 支持参数补全
查询默认所在的区域,操作步骤如下:
firewall-cmd --get-default-zone #结果应该是public
设置默认所在区域,操作步骤如下:
firewall-cmd --set-default-zone=work #这样就把默认区域设置成work了
查询一下public这个区域是否允许ssh这个服务,操作步骤如下:
firewall-cmd --zone=public --query-service=ssh
添加public这个区域某个服务被允许,操作步骤如下:
firewall-cmd --permanent --zone=public --add-service=https
firewalld防火墙策略配置生效机制有两种:
1、当前生效:runtime 仅当前生效,重启之后不生效
2、永久生效:permanent 当前并不生效,重启之后才生效
3、不重启加载永久生效里的配置,使之当前生效:reload
firewall-cmd --panic-on :紧急模式,一旦开启,就切断一切网络连接
做端口转发,当客户端主机访问服务器端的888端口,实际是访问服务器端的22端口,具体操作步骤如下:
firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10
富规则(复杂规则):目的是为了更精准的做策略匹配
设置富规则的步骤如下:
比如设置一个富规则,要求192.168.10.0这个网段的地址都不能访问服务器的ssh服务,具体操作步骤如下:
firewall-cmd --permanent --zone=public --add-rich-rule=“rule family=“ipv4” source address =“192.168.10.0/24” service name=“ssh” rejject”
1、linux里一切皆文件
2、在linux里配置服务,就是在修改服务的配置文件。
3、一般修改了配置文件,需要重启服务才能生效。
一块儿网卡它可以配置多个地址
LINUX系统配置防火墙的服务,工具有四种:
1、iptables:
2、firewall-cmd:
3、firewall-config:
4、tcp wrappers : 它有两个配置文件/etc/hosts.allow :允许放行;/etc/hosts.deny :拒绝禁止,设置后,不需要重启服务,即立即生效。 轻量级的,如果只是想限制某个服务。
/etc/hosts.allow的优先级要高于/etc/hosts.deny
前3种是基于数据链路层的,最后一个是基于应用层的。
------------------------------------------------------------------------------------RHCSA跟RHCE分界线----------------------------------------------------------------------------------------------
nmcli:网卡会话配置工具
具体操作步骤:
1、nmcli connection show 用于查看网卡硬件信息(包括网卡名称,UUID,支持的协议标准)
2、nmcli connection add con-name company ifname eno16777728 autoconnect no type ethernet ip4 192.168.10.10/24 gw4 192.168.10.1 设置一个网卡会话模板company
3、nmcli connection add con-name house type ethernet ifname eno16777736 设置一个网卡会话模板house
4、nmcli connection up company 启用company这个网卡会话模板
RHEL5,6 bonding(网卡绑定技术)
RHEL7 bonding(网卡绑定技术)在这个技术的基础上添加了team(端口聚合技术,是图形化界面)
网卡绑定技术类似于lvm或者是raid,是将多块而网卡虚拟成一块网卡的技术,最终虚拟出来的网卡设备为/dev/bond0
绑定网卡的具体操作步骤如下:
1、vim /etc/sysconfig/network-script/ifc-eno16777736 ,配置如下内容
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=eno16777736
MASTER=bond0
SLAVE=yes
2、vim /etc/sysconfig/network-script/ifc-eno33554948,配置如下:
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=eno33554948
MASTER=bond0
SLAVE=yes
3、vim /etc/sysconfig/network-script/ifc-bond0,配置如下:
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=bond0
IPADDR=192.168.10.10
PREFIX=24
DNS=192.168.10.1
NM_CONTROLLED=no #自动化管理你的网卡服务的程序 可以通过 systemctl status NetWorkManager来查看
网卡的绑定方式,主要有三种:0,1,6
1、第一种方式0:表示两块儿网卡同时去工作,有一块儿网卡出现故障了,另一块儿网卡自动顶替上去,平时需要交换机的支持,交换机为它做切换工作;
2、第二种方式1:表示两块儿网卡一主一备,只有第一块网卡down了才启动备用网卡
3、第三种方式6:表示两块儿网卡好的时候同时去工作,坏的时候自动顶替上去,保证网络之间不会中断。
4、vim /etc/modprobe.d/bond0.conf #.d里面包含的子配置文件
alias bond0 bonding #给这个bond0设置个别名,说明它支持绑定技术
options bond0 miimon=100 mode=6 #设置如果绑定的网卡其中一块故障了,切换至另一块网卡的时间,单位为毫秒,选择的绑定模式为6
小提示:ifdown 网卡名称 可以关闭网卡,模拟网卡down掉的情况
ifup 网卡名称 可以开启网卡,模拟网卡重新UP的情况
ssh(协议名称):安全的远程连接协议
sshd(服务名称):sshd服务程序让用户实现了ssh远程连接的功能
几乎所有的linux系统都已经支持并默认启用了ssh.
服务的配置文件有两种:1、主配置文件;(保存的是最重要的配置参数) 一般在 /etc/服务名称/服务名称.conf 查询
2、普通配置文件(保存的是通用性,需要调用的配置文件) 一般在 /etc/服务名称 查询
ssh配置公钥跟私钥的登录认证方式:
切记,秘钥跟公钥是在客户端主机上进行生成的,然后将公钥发送到服务器端然后对私钥登录进行解密跟认证。
1、在客户端做的操作,具体步骤如下:
ssh-keygen 来生成秘钥跟公钥文件
ssh-copy-id 将公钥传送到远端服务器
ssh不光是远程连接的协议,而且还能进行文件的传输(小文件的传输)
scp(基于ssh协议产生出的命令),前提条件是必须在两个都是linux的系统之间进行文件传输
发送文件的操作步骤如下:
scp ceshi.txt 192.168.10.10:/tmp
下载文件的操作步骤如下:
scp 192.168.10.10:/root/hoho.txt /root
linux软件包的分类:1、rpm; 2、RHN(类似于windows的update软件升级程序); 3、yum; 4、source code(源码包)
如果想查询一个软件包是否被安装可以通过如下命令,例如:
rpm -q vsftpd (用于查询ftp软件是否被安装)
rpm常用的参数:
-i:表示安装。
-v, -vv, -vvv:表示详细信息。
-h:以"#"号显示安装进度。
-U:升级软件,若未软件尚未安装,则安装软件。
-F: 如果软件安装过则升级,如果软件没有安装则不安装。
–replacepkgs:在原来的基础上修复安装,不覆盖原来修改过的
–force:强制安装
–oldpackage:安装旧的版本
–nodeps:去掉软件包依赖性关系(dovecot)
rpm -qi vsftpd : 用于查询已安装的软件vsftpd的说明及功能的详细信息
rpm -qpi vsftpd-3.0.2-9.e17.x86_64.rpm : 用于查询未安装的软件包的说明及功能的详细信息
rpm -ql vsftpd : 用于查询软件vsftpd都安装在什么位置
rpm -qf /etc/vsftpd/vsftpd.conf : 用于查询/etc/vsftpd/vsftpd.conf文件属于哪个安装包的
常见的包管理系统:
1、APT(Advanced Package Tool):软件包的扩展名为.deb
2、RPM(RedHat Package Management):软件包的扩展名为.rpm
一些可以获得到rpm软件的站点:1、http://www.rpmfind.net
2、ftp://ftp.redhat.com/pub/contrib
3、http://www.linuxapps.com
4、http://www.rpm.org
YUM仓库的配置方法:
1、mkdir -p /media/cdrom
2、mount /dev/cdrom /media/cdrom
3、vim /etc/fstab
/dev/cdrom /media/cdrom iso9660 defaults 0 0
4、cd /etc/yum.repos.d/
5、rm -rf *
6 vim /etc/yum.repos.d/xiao.repo
[rhel-yum] #这个是我们定义yum仓库的唯一名称
name=nezha #这个名称是注释的作用
baseurl=file:///media/cdrom #这个就是挂载目录的路径(切记,三个斜杠)
enabled=1 #用于说明是否启用YUM资源,1为启用,0为禁止
gpcheck=0 #用于说明是否进行校验
yum命令:
yum -y remove vsfpd 卸载软件
yum install vsftpd 安装软件
yum list all |grep vsftpd 查找
yum localinstall RPMfile 安装第三方软件
yum groupinstall packagegroup 安装软件包组
yum update 加入到RHN,寻求更新
yum clean all 用于清空yum仓库的缓存信息
切记,升级内核可以用到yum的update,install和rpm -i,不能用rpm -U和rpm -F
源码包安装的时候:./configure,make,make install命令详解
1、./configure 是用来检测你的安装平台的目标特征的。比如它会检测你是不是有cc或gcc,并不是需要cc或gcc,它是个shell脚本。
2、make是用来编译的,它从makefile中读取指令,然后编译。
3、make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。
以上配置好YUM仓库以后,就可以进行软件安装了
软件安装的步骤是:
1、yum install 软件包的名称
例如:通过YUM仓库安装screen服务,screen服务是为了解决网络中断出现的链接问题
yum install screen
*************************出现的小问题××××××××××××××××××××××××××××××××××××
REHL7中yum 安装提示 GPG.KEY问题
解决方法 导入 gpg.key
用 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY 导入 一般情况下
GPG KEY,一般系统都会有的,在你的linux安装光盘目录下,或者在/etc/pki/rpm-gpg/目录下有一个RPM-GPG-KEY-redhat-release
如果导入失败 那么 可已将GPG.KEY路径直接加入到你编辑的/etc/yum.repos.d/下的rhel7.repo 保存退出
然后 yum clean all
yum list 就ok了
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
git添加公钥后报错sign_and_send_pubkey: signing failed: agent refused operation的解决办法
在服务器添加完公钥后报错
1、sign_and_send_pubkey: signing failed: agent refused operation
这个时候我们只要执行下
1、eval “$(ssh-agent -s)”
2、ssh-add
就可以了
为了保证我们能安全的通过ssh进行远程链接,我们通过screen先建立一个窗口会话保护机制
1、通过ssh链接之后,先不做任何操作,先通过screen先建立一个窗口会话
screen -S haha
然后模拟网络中断,比如把客户端端口断开,然后重新链接,然后通过
screen -ls #可以查询当前screen的会话窗口列表
然后通过 screen -r 会话名称(比如:haha)或者会话窗口编号进行恢复
2、如果不想每次ssh链接都先建立一个screen窗口会话保护机制,即ssh建立远程链接默认启用screen窗口保护机制,那么可以通过如下操作进行:
例如:
screen vim haha.txt
3、screen还能实现窗口会话共享的机制:
比如一台客户端连接到服务起后建立的窗口会话保护机制:
screen -S liudehua 对应的窗口会话的编号为3148
那么另一台共享的窗口会话就可以通过如下操作查看共享:
screen -x 3148
yum remove 服务名称 卸载程序,如:yum remove httpd
yum update 服务名称 升级程序,如:yum update httpd
Apache(Apache来自印第安语,是力量无穷的意思)安装
Apache可以提供httpd服务
http:协议
httpd:服务名称
httpd:软件包名称
nginx的优点:消耗很小的资源,产生出很大的并发量
可以通过YUM仓库进行apache httpd服务的安装,操作如下:
1、yum install httpd
2、systemctl restart httpd
apahce默认的网站保存路径在:/var/www/html;
如果apache的httpd服务安装完成后,只能服务器本机能正常访问网页,而远端客户端主机通过80端口访问不了,那么就可以推断有可能是被防火墙禁止了,可以通过
iptables -F 将防火墙的策略进行初始化或清空操作
如果想修改网站默认的保存路径,可以通过修改服务的配置文件来实现:
vim /etc/httpd/conf/httpd.conf (apahce服务的主配置文件)
SELinux:安全子系统,由美国国家安全部开发的GPL项目,提供类似A1级的军事安全性能,比MS NT所谓的C2等高很多,分为两种:
1、SELinux安全上下文:针对的是文件,可以对文件进行打标签,限制文件能够被哪些服务所访问
具体命令如下:
setenforce 0: 临时关闭SELinux功能
setenforce 1: 临时开启SELinux功能
getenforce : 查看我们SELinux的状态
/etc/selinux/config: 这个文件保存的SELinux的状态信息:
SELinux有3种工作模式的:
1、enforcing:强制的,限制我们的域和安全上下文,一旦做出出格的事情,立马进行禁止操作。(默认选项,默认是开启的)
2、permissive:警告模式,一旦你做出出格的事情,一旦访问你不该访问的文件之后,那么就会给你提示信息,并将这个提示信息写到这个日志文件里,并不会进行强制禁止。
3、disabled:禁止模式,就是关闭SELinux的运行模式。
2、SELinux域:针对的是服务,管理服务的策略,服务功能的限制
注意:如果通过浏览器看到Red Hat Enterprise Linux Test Page,说明两个问题:
1、网站是没有内容资源的;
2、要不就是你没有权限,权限不足;
ls -ldZ #ls -l看目录是跟参数d,查看SELinux上下文,是跟参数Z
[root@lijianbo ~]# ls -ldZ /var/www/html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
[root@lijianbo ~]# ls -ldZ /home/wwwroot
drwxr-xr-x. root root unconfined_u:object_r:home_root_t:s0 /home/wwwroot
[root@lijianbo ~]#
如果想让/home/wwwroot也能正常访问网页,可以修改它的安全上下文,具体操作步骤如下:
RHEL 5,6 chcon
RHEL 7 semanage
1、[root@lijianbo ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot #fcontex就是修改安全上下文的意思,-a代表的是修改,-t代表具体要使用什么值
2、[root@lijianbo ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/* #这个操作是把/home/wwwroot这个目录下的所有文件添加到安全上下文中
restorecon:是selinux的恢复工具,这个功能实际作用是让最新的策略进行立即生效。
3、restorecon -Rv /home/wwwroot
个人用户主页功能:
配置个人用户主页功能的操作步骤如下:
1、vim /etc/httpd/conf.d/userdir.conf
将UserDir disabled 进行注释
将UserDir public_html 注释取消
2、getsebool -a 获取所有selinux域的策略
3、getsebool -a | grep httpd 获取所有selinux域中httpd的策略
4、setsebool -P httpd_enable_homedirs=on 设置httpd_enable_homedirs=on永久开启,-P参数代表的是永久生效的意思。
5、然后访问http://127.0.0.1/~用户名,即可访问
如果想通过账号和密码认证来访问http://127.0.0.1/~用户名,操作步骤如下:
1、htpasswd(这个命令是apache安装之后就会自带的命令,它的作用是为了生成出来密码文件的)
htpasswd -c /etc/httpd/passwd lijianbo #参数-c就是生成的意思, /etc/httpd/passwd就是生成保存的路径,lijianbo就是需要制作认证验证的账号名称
2、vim /etc/httpd/conf.d/userdir.conf 编辑如下内容:
authuserfile “/etc/httpd/passwd” #设置需要认证的文件的保存路径
allowoverride none #是否允许伪静态
authname “HAHAHAHAHAHAHA” #进行认证时给用户的提示信息
authtype basic #认证的方式basic(基于用户名跟密码的认证方式)
require user lijianbo #基于认证的用户名称
虚拟主机 vps(虚拟主机技术)
云主机 openstack、RHEV技术
对于一台物理主机,将它切割成N个空间,元素的分割,或者叫资源的切割,那么我们如何访问这些空间呢,有三种方法:
1、基于IP地址的访问
2、基于域名的访问
3、基于端口号的访问
实验(一):基于IP地址的访问的操作步骤
1、编辑网卡配置,添加IP地址:
vim /etc/sysconfig/network-script/ifcfg-eno16777736
编辑如下内容
HWADDR=00:0C:29:23:21:3F
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=14d2cdd5-6cb1-460f-bd8d-24c69c9c1df9
ONBOOT=yes
IPADDR0=192.168.10.10
IPADDR1=192.168.10.20
IPADDR2=192.168.10.30
PREFIX=24
2、编辑apache httpd的主配置文件
vim /etc/httpd/conf/httpd.conf
编辑内容如下:
121 documentroot /home/wwwroot/10
122 servername www.lijianbo10.com
123
124 allowoverride none
125 require all granted
126
127
128
129 documentroot /home/wwwroot/20
130 servername www.lijianbo20.com
131
132 allowoverride none
133 require all granted
134
135
136
137 documentroot /home/wwwroot/30
138 servername www.lijianbo30.com
139
140 allowoverride none
141 require all granted
142
143
3、systemctl restart httpd
4、ls -ldZ /var/www/html/
5、[root@lijianbo wwwroot]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
[root@lijianbo wwwroot]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10
[root@lijianbo wwwroot]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10/*
[root@lijianbo wwwroot]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20
[root@lijianbo wwwroot]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20/*
[root@lijianbo wwwroot]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30
[root@lijianbo wwwroot]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30/*
[root@lijianbo wwwroot]# restorecon -Rv /home/wwwroot/
restorecon reset /home/wwwroot context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/10 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/10/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/20 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/20/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/30 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /home/wwwroot/30/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
apache httpd服务的精简版ACL:
案例:
通过设置限制只有火狐浏览器能正常访问网站的内容,其他浏览器都别限制拒绝访问
主要是在httpd的主配置文件中加入acl策略,具体操作步骤如下:
1、vim /etc/httpd/conf/httpd.conf
setenvif User-Agent “Firefox” ff=1
order allow,deny
allow from env=ff
使用Vsftpd服务认证方式:
1、匿名用户登录认证: 它默认登录的目录为/var/ftp
2、本地用户登录认证: 认证通过后进入的都是该用户的家目录
3、虚拟用户登录认证: 它登录后所在的工作目录是映射用户的家目录 /var/ftproot
telnet,http,ftp的数据在传输时都是以明文进行传输
安装vsftpd服务的方法:
yum install vsftpd
ftp文件传输协议:占用两个端口号20,21,21端口号是用来做远程控制的,20端口号是用来真实进行文件传输的
做实验时记得先将防火墙的策略进行清空,同时保存防火墙的被清空后的状态:
iptables -F
service iptables save
文件传输分为两种模式:
1、主动模式:ftp服务器主动将文件传输给客户端
2、被动模式:ftp服务器被动的接收客户端的请求(默认使用的模式)
要是配置服务,就是修改这个服务的配置文件,vsftpd服务的主配置文件为
mv vsftpd.conf vsftpd.conf_bak
grep -v “#” vsftpd.conf_bak > vsftpd.conf #提取vsftpd.conf_bak文件中所有不包含“#”(即注释信息)的内容然后将结果输出到vsftpd.conf文件
vim /etc/vsftpd/vsftpd.conf 其内容如下:
anonymous_enable=YES #是否开启匿名登录认证机制
local_enable=YES #是否开启本地登录认证机制
write_enable=YES #是否允许写入操作
local_umask=022 #定义生成文件的权限Umask
解释****************************
里面有一项:pam可插拔式认证模块
对于文件的权限使用Umask(文件的反掩码),默认的值是022,Umask的作用是:不需要逐一设置文件的权限,而是通过Umask,可以让新建的文件自动设置想要的权限大小
umask 022
文件 默认:666 实际:644
目录 默认:777 实际:755
文件的实际权限=文件的满权限-Umask(文件的反掩码)
dirmessage_enable=YES
xferlog_enable=YES #是否将我们的操作信息写入到日志里,日志的目录为/var/log/message
connect_from_port_20=YES #是否通过20端口号进行文件传输
xferlog_std_format=YES #是否以标准的格式写入进行日志记录
listen=NO #是否进行端口监听
listen_ipv6=YES
pam_service_name=vsftpd #启用可插拔式认证模块,它使用的是系统里默认的PAM模块vsftpd
userlist_enable=YES #是否启用用户文件列表功能,当用户的账号信息出现在这个列表中,当这些用户进行ftp访问登录的时候将被禁止。 当用户的账号出现在/etc/vsftpd/下的user_list,ftpusers两个文件中,将被禁止
tcp_wrappers=YES #是否受到防火墙的控制
1、下面在配置文件中添加一些新的功能,进行匿名登录认证模式:
anon_upload_enable=YES #是否允许匿名用户进行文件上传
anon_umask=022 #设置匿名用户生成的文件权限为umask022
anon_mkdir_write_enable=YES #是否允许匿名用户创建目录,或新建文件
anon_other_write_enable=YES #是否允许匿名用户进行重命名,修改,删除等相关操作
systemctl restart vsftpd
注意Selinux安全子系统的域功能限制了匿名用户的某些功能
getsebool -a 用于显示所有域功能的所有安全策略
getsebool -a |grep ftp 过滤出所有跟ftp相关的内容
setsebool -P ftpd_full_access=on #开启所有ftp的访问权限
2、本地认证模式:
注意:当root登录的时候的,它默认会禁止我们的登录。
/etc/vsftpd user_list ftpusers 两个文件给做限制了,我们编辑这两个文件,把root账户给删除就OK了。
3、虚拟用户登录认证模式:
cd /etc/vsftpd
vim vuser.list,编辑如下信息(*****注意:下面的信息,单数行是添加的虚拟账户的用户名,偶数行是添加虚拟账户对应的登录口令密码):
zhangsan
redhat
lisi
redhat
vsftpd不能识别vuser.list的格式文件,它只能识别数据库文件,所以需要使用db_load对这个文件进行加密
db_load -T(加密操作) -t(加密的格式) hash -f vuser.list vuser.db
rm vuser.list
chmod 600 vuser.db
useradd -d /var/ftproot -s /sbin/nologin virtual
chmod 755 /var/ftproot
cd /etc/pam.d/
vim vsftpd.vu #建立一个新的pam模块文件,编辑如下内容:
auth required pam_userdb.so db=/etc/vsftpd/vuser #允许一个验证,验证调取一个模块,模块认证调取的就是我们创建的数据库文件
account required pam_userdb.so db=/etc/vsftpd/vuser #进行账户的匹配
vim /etc/vsftpd/vsftpd.conf
修改PAM模块设置为我们创建的pam模块vsftpd.vu,例如:
pam_service_name=vsftpd.vu
anonymous_enable=NO #禁止匿名用户进行登录
guest_enable=YES #允许虚拟用户进行登录
guest_username=virtual #匿名用户映射到本地用户的名称
allow_writeable_chroot=YES #是否允许启用牢笼机制(chroot),让用户的权限受到控制
user_config_dir=/etc/vsftpd/vuser_dir #定义虚拟用户的文件保存路径
mkdir -p /etc/vsftpd/vuser_dir
touch zhangsan
touch lisi
vim zhangsan #对虚拟用户的权限指派
anon_upload_enable=YES #是否允许我们的虚拟用户上传文件
anon_mkdir_write_enable=YES #是否允许虚拟用户可以写入及创建文件
anon_other_write_enable=YES #重命名、新建、删除等相关操作
systemctl restart vsftpd
systemctl enable vsftpd
tftp(简单的文件传输协议):它使用的是UDP69端口,它是不需要进行验证的。tftp默认的登录目录为/var/lib/tftpboot/
yum install tftp-server tftp
tftp由xinetd(将一些非常小的功能放在一起进行集成的操作)进行管理
配置文件在vim /etc/xinetd.d/tftp
如果要启用tftp,则在配置文件中将
disable 的值修改为 no
tftp配置文件完成配置后,不是通过systemctl restart tftp进行服务的重启操作,因为它的功能实在太小,它是通过
systemctl restart xinetd
systemctl enable xinetd
DNS(域名解析服务)
协议:DNS 程序软件包:bind 程序名称:named
主要功能划分:
1、正向解析:域名---->ip地址
2、反向解析:ip地址—>域名
按照工作模式划分:
1、主服务器:非常像我们的根服务器,真正管理我们的DNS信息的,管理我们域名及IP地址的对应关系信息,是用来做管理的。
2、从属服务器:是用来同步用的,是将主服务器上的数据同步过来,同步到从服务器上,然后本地提供给用户进行访问。
3、缓存服务器:主要的功能就是做转发。
从属服务器的作用:1、降低主服务器的压力;2、加快请求速度
用户与从属服务器进行的数据交换是进行的递归查询
从属服务器与主服务器之间的数据交换是进行的迭代查询,为了防止数据之间传输被篡改,采用了TSIG技术(即防篡改功能)
协议:DNS 程序软件包:bind 程序名称:named
vim /etc/named.conf #这个就是DNS的主配置文件
部署需要的软件包为:bind-chroot,通过yum仓库进行安装,即:
yum install bind-chroot
该服务有3个主要的配置文件
1、vim /etc/named.conf #DNS的主配置文件,它的作用就是加载一些子配置文件
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory “/var/named”;
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
memstatistics-file “/var/named/data/named_mem_stats.txt”;
allow-query { any; };
2、vim /etc/named.rfc1912.zones
zone “lijianbo.com” IN {
type master;
file “lijanbo.com.zone”;
allow-update{none;};
};
zone “10.168.192.in-addr.arpa” IN {
type master;
file “192.168.10.arpa”;
allow-update{none;};
};
3、下一步我们嵌入两个文件,这两个文件在/var/named
1、named.localhost 正向解析文件模板
2、name.loopback 反向解析文件模板
cp -a named.localhost lijianbo.com.zone
cp -a named.loopback 192.168.10.arpa
vim lijianbo.com.zome
$TTL 1D
@ IN SOA lijianbo.com. root.lijianbo.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.lijianbo.com.
ns IN A 192.168.10.10
www IN A 192.168.10.10
vim 192.168.10.arpa
$TTL 1D
@ IN SOA lijianbo.com. root.lijianbo.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.lijianbo.com.
ns IN A 192.168.10.10
10 PTR www.lijianbo.com.
A: 就是将域名解析成对应的地址
CNAME:就是解析成一个别名
MX:解析成一个邮件
TXT:解析成一个字符串
PTR:将我们的地址解析成一个域名(反向解析)
然后修改网卡配置,把DNS加入,然后systemctl restart network.service
systemctl restart named
systemctl enable named
进行从属服务器的设置:
1、从属服务器也需要安装bind-chroot,因为它要同步主服务器的数据
yum install bind-chroot
2、编辑从服务器的主配置文件,进行设置:
vim /etc/named.conf
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory “/var/named”;
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
memstatistics-file “/var/named/data/named_mem_stats.txt”;
allow-query { any; };
3、编辑从服务器的子配置文件,vim /etc/named.rfc1912.zones
zone “lijianbo.com” IN {
type slave;
master{192.168.10.10;};
file “slaves/linuxprobe.com.zone”;
};
zone “10.168.192.in-addr.arpa” IN {
type slave;
master{192.168.10.10;};
file “slaves/192.168.10.arpa”;
};
4、编辑主服务器的子配置文件 vim /etc/named.rfc1912.zones
zone “lijianbo.com” IN {
type master;
file “lijanbo.com.zone”;
allow-update{192.168.10.20;}; #从服务器的地址为192.168.10.20
};
zone “10.168.192.in-addr.arpa” IN {
type master;
file “192.168.10.arpa”;
allow-update{192.168.10.20;};
};
5、cd /var/named,进入这个目录,从属服务器的嵌套文件在这个目录的子目录slaves里,即 /var/named/slaves,目前里面没有文件
通过systemctl restart named从新同步数据即可
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
TSIG(防篡改技术):
1、使用dnssec-keygen生成一个安全秘钥文件,-a 是加密的格式 -b是加密的128位 -n HOST定义的是个主机,是个标识,master-slave主服务器和从服务器的从属关系
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave
然后会出先一个公钥,及私钥的两个文件
2、进入到主服务器,/var/named/chroot/etc目录里,创建出一个文件叫transfer.key,这个文件是用来做加密验证需要的
vim transfer.key
key “master-slave”