Linux知识点捡拾

基础命令


为了在 sudo 中设置权限提升,您需要编辑 sudoers 文件。 你不应该直接编辑文件,而是使用:
sudo visudo
这将打开 sudoers 文件并允许您安全地进行更改(保存时会进行错误检查,所以您不会意外地因为输入错误将自己锁住)。


man命令操作按键

/关键词 从上往下搜索某个关键词
关键词 从下往上搜索某个关键词
n 定位到下一个搜索到的关键词
N 定位到上一个搜索到的关键词

sudo命令
sudo !! sudo执行上一条操作命令

cat命令操作按键,格式为“cat [选项] 文件”

-n 显示行号
-b 显示行号(不包括空行)
-E在结束行提示$
-A 显示出“不可见”的符合,如空格,tab键等
例:把两个文件列合并(注意先后顺序)
cat file1.out file2.out > file2.out
cat [选项] [文件]..| 一次显示整个文件或从键盘创建一个文件或将几个文件合并成一个文件
tac | 反向显示

cut
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。

more命令操作按键,格式为“more [选项] 文件”

-数字 预先显示的行数(默认第一页)
-d 显示提示语句与报错信息

tr命令操作按键,格式为“tr [原始字符] [目标字符]”

wc命令操作按键,格式为“wc[参数] 文本”

-l 只显示行数
-w 只显示单词数
-c 只显示字节数

diff命令用于比较多个文本文件的差异,格式为:“diff [参数] 文件1 文件2”

-b 忽略空格引起的差异
-B 忽略空行引起的差异
--brief或-q 仅报告是否存在差异
-c 使用上下文输出格式

touch命令用于创建空白文件与修改文件时间,格式为:“touch [选项] 文件”

-a 近修改“访问时间”(atime)
-m 近修改“更改时间”(mtime)
-d 同时修改atime与mtime
-t 要修改成的时间[YYMMDDhhmm]

mkdir命令用于创建空白的文件夹,格式为:“mkdir [选项] 目录”

-m=MODE 默认的文件目录权限,如”-m 755”
-p 连续创建多层目录
-v 显示创建的过程
例:1.在一个目录下创建多个子目录
mkdir -p /etc/salt/states/{init,prod}

cp命令复制文件或目录,格式为:“cp [选项] 源文件 目标文件”

-p 保留原始文件的属性
-d 若对象为“链接文件”,则保留该“链接文件”的属性
-r 递归持续复制(用于目录)
-I 若目标文件存在则询问是否覆盖
-a 相当于-pdr(p,d,r为上所述)

mv用于移动文件或改名,格式为:“mv [选项] 文件名 [目标路径|目标文件名]”

-b 若需覆盖文件,则覆盖前先行备份
-u 若目标文件已经存在,且 source 比较新,才会更新(update)
例:1移动当前目录下所有文件到old目录下(old目录除外)
mv ls| grep -v old old/

dd命令用于指定大小的拷贝的文件或指定转换文件,格式为:“dd [参数]”

if 输入的文件名称
of 输出的文件名称
bs 设置每个“块”的大小
count 设置要拷贝“块”的个数
conv=ucase 将字母从小写转大写
conv=lcase 把字符从大写转小写

stat命令

查看文件的权限,以数字显示
stat -c %a 文件名

ssh命令,用于登录远程机器"ssh user@IP "

-p 指定端口远程登录,例:"ssh -p port ip"

用户与组管理命令

useradd命令用于创建新的用户,格式为:“useradd [选项] 用户名”

-d 指定用户的家目录(默认为/home/username)
-D 展示默认值
-e 账号有效截止日至,格式:YYYY-MM-DD
-g 指定一个初始用户组(必须已存在)
-G 指定一个或多个扩展用户组
-N 不创建与用户同名的用户组
-s 指定默认的shell
-u 指定用户的uid

passwd命令用于修改用户的密码,格式为:“passwd [选项] [用户名]”

-l 锁定用户禁止其登录
-u 解除锁定,允许用户登录
--stdin 允许从标准输入修改用户密码,如(echo “NewPassWord”|passwd stdin Username)
-d 使账号无密码
-e 强制用户下次登录时修改密码
-S 显示用户的密码状态

userdel命令用于删除用户所有表格,格式为:“userdel [选项] 用户名”

-f 强制删除用户,家目录与其相关文件
-r 同时删除用户,家目录与其相关文件

usermod命令用于修改用户的属性,格式为“usermod [选项] 用户名”

-C 填写账号的备注信息
-d –m –m与-d连用,可重新指定用户的家目录并自动旧的数据转移过去
-e 账户到期时间,格式“YYYY-MM-DD”
-g 变更所属用户组
-G 变更扩展用户组
-L 锁定用户,禁止登录系统
-U 解锁用户,允许登录系统
-s 变更默认终端
-u 修改用户的UID

groupadd命令用于创建群组,格式为:“groupadd [选项] 群组名”

打包压缩文件命令

tar命令用于对文件打包压缩或解压,格式为:“tar [选项] [文件]“

-c 创建压缩文件
-x 解开压缩文件
-t 查看压缩包内有哪些文件
-z 用Gzip压缩或解压
-j 用bzip2压缩或解压
-v 显示压缩或解压的过程
-f 目标文件名
-p 保留原始的权限与属性
-P 使用绝对路径来压缩
-C 指定解压到的目录

文件查询搜索命令

grep命令用于对文本进行搜索,格式为:“grep [选项] [文件]”

-b 将可执行文件(binary)当做文本文件(text)
-c 仅显示找到的次数
-I 忽略大小写
-n 显示行号
-v 反向选择---仅列出没有“关键词”的行
例:1.过滤文本中的空行和注释行
egrep -v "#|^$" /etc/salt/master

find命令用于查找文件,格式为:“find [查找路径] 寻找条件 操作”

-name 匹配名称
-perm 匹配权限(mode为完全匹配,-mode为包含即可)
-user 匹配所有者
-group 匹配所有组
-mtime –n +n 匹配修改内容的时间-n指n天以内,+n指n天之前
-atime –n +n 匹配访问文件的时间-n指n天以内,+n指n天之前
-ctime –n +n 匹配修改权限的时间-n指n天以内,+n指n天之前
-nouser 匹配无所有者的文件
-nogroup 匹配无所有组的文件
-newer f1 !f2 匹配比文件f1新却比f2旧的文件
-type b/d/c/p/l/f 匹配文件类型(块设备、目录、字符设备、管道、链接文件、文件)
--size 匹配文件的大小(+50k查找超过50k的文件,而-50k则代表查找小于50k的文件)
-prune 忽略某个目录
--exec {} ; 后面可接对搜索到结果进一步处理的命令
例:1.找出用户linuxprobe的文件并复制到/root/findresults目录;重点是“-exec {} ;”其中的{}代表find命令搜出的文件,记住结尾必须是\;
find / -user linuxprobe –exec cp –arf {} /root/findresults/ ;
2.遍历压缩归档日志文件并删除源文件
find . -name "*.log" -type f -exec tar -zcvf {}.tar.gz {} --remove-files > /dev/null ;
3.遍历解压tar.gz文件,并删除tar.gz文件
find . -name "*.tar.gz" -type f -exec tar -zxvf {} ; -exec rm -rf {} ; > /dev/null
4.查找目录下的所有文件(遍历且忽略大小写)中是否含有某个字符串
find . |xargs grep -ri "IBM"
5.查找目录下的所有文件(遍历且忽略大小写)中是否含有某个字符串,并且只打印出文件名
find . |xargs grep -ri "IBM" -l
6.删除创建时间30之前的名字是*.tar.gz的文件
find . -name "*.tar.gz" -type f -mtime +30 -exec rm {} ; > /dev/null 2>&1

用户身份与文件权限

SUID SGID SBIT的文件特殊权限、文件隐藏权限、ACL访问控制列表
SUID:让执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)
SGID:让执行者临时拥有属组的权限(对拥有执行权限的二进制程序设置)
SBIT(Sticky Bit):只可管理自己的数据而不能删除他人文件(仅对目录有效)粘滞位
chattr命令用于设置文件的隐藏权限,格式为:“chattr [参数] 文件”

i 将无法对文件进行修改,若对目录设置后则仅能修改子文件而不能新建或删除
a 将允许补充(追加)内容,无法覆盖/删除(Append Only)
S 文件内容变更后立即同步到硬盘(sync)
s 彻底从硬盘中删除,不可恢复(用O填充源文件所在硬盘区域)
A 不再修改这个文件的最后访问时间(atime)
b 不再修改文件或目录的存取时间
D 检查压缩文件中错误
d 当使用dump命令备份时忽略本文件/目录
c 默认将文件或目录进行压缩
u 当删除此文件后依然保留其在硬盘中的数据,方便日后恢复
t 让文件系统支持尾步合并
X 可以直接访问压缩文件的内容

lsattr命令用于显示文件的隐藏权限,格式为:“lsaater [参数] 文件”

a 显示所有文件和目录
l 显示隐藏属性的全称(默认简写成一个字母)
R 递归处理,将制定目录下得所有文件及子目录一并处理
d 若目标文件为目录,请加此参数

文件访问控制列表

setfacl命令用于增加或者修改ACL规则,格式为:“setfacl [参数] 文件

df命令用于查看挂载点信息与磁盘使用量,格式为:“df [选项] [文件]”

-a 显示出所有的文件系统
--total 展出总体使用量
-h 更易读的容量格式,剩余空间
-i 展出Inode的信息
-T 显示出文件系统的类型

du命令用于查看磁盘的使用量,格式为:“du [选项] [文件]”

-a 评估每个文件而非目录整体占用量
-c 评估每个文件并计算出总占用量总和
-h 更易读的容量格式
-s 仅显示占用量总和

磁盘冗余阵列

mdadm命令用于管理系统软件RAID硬盘阵列,格式为:“mdadm [模式] <RAID设备名称> [选项] [成员设备名称]”
mdadm管理RAID阵列的动作有:

Assemble 将设备加入到以前定义的阵列
Build 创建一个没有超级块的阵列
Create 创建一个新的阵列,每个设备具有超级块
Manage 管理阵列(例如添加和删除)
Misc 允许单独对阵列中的某个设备进行操作(如停止阵列)
Follws or Monitor 监控状态
Grow 改变阵列的容量或设备数目

mdadm管理RAID阵列的参数有:

-a 监测设备名称
-n 指定设备数量
-l 指定rald级别
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-a 添加设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止阵列

软硬方式链接

ln命令用于创建链接文件,格式为:“ln [选项] 文件”

创建硬链接:“ln 文件名 链接名”
创建软连接:“ln –s 文件名 链接名”
-s 创建“符号链接”(默认是硬链接)
-f 强制创建文件或目录的链接
-I 覆盖前先询问
-v 显示创建连接的过程

Iptables与Firewalld防火墙

一般规则

拒绝其他用户从“eth0”网卡访问本机http服务的数据包
iptables –I INPUT –I eth0 –p tcp -–dport 80 –j REJECT
禁止用户访问www.baidu.com
iptables –I FORWARD –d www.baidu.com –j DROP
禁止IP地址是192.168.10.10的用户上网
iptables –I FORWARD –s 192.168.10.10 –j DROP
iptables命令执行后的规则策略仅当前生效,若想重启后依然保存规则,需执行“service iptables save”

SNAT与DNAT
SNAT源地址转换技术
iptables –t nat –A POSTROUTING(路由选择后再处理) –s 192.168.10.0/24(局域网地址) –o eth0(外网网卡名) –j SNAT -–to-source 111.196.12.131(外网接口地址)
外网IP地址不稳定的情况使用MASQUERADE(动态伪装):能够自动寻找外网地址并改为当前正确的外网IP地址
iptables –t nat –A POSTROUTING –s 192.168.10.0/24 –j MASQUERADE

DNAT即目的地址转换技术,则能够让外网IP用户访问局域网内不同的服务器
iptables -t nat -A PREROUTING(路由选择之前处理) -i eth0 -d 61.240.149.149(外网接口的IP ) -p tcp --dport 80(开放服务的端口) -j DNAT --to-destination 192.168.10.6(web主机的内网IP地址)
端口转发功能与流量均衡
端口转发功能可以将原本到某端口的数据包转发到其他端口
firewall-cmd --permanent -zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>

例:将访问192.168.10.10主机80端口的请求转发至222端口:

[root@Linux ~]# firewall-cmd --permanent --zone=punlic
--add-forward-port=port=80:proto=tcp:toport=222:toaddr=192.168.10.10
success

流量均衡可以将网站前段服务器的访问量分流至内网中3台不同的主机上

  1. iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.10.10:80
  2. iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m sate NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.10.11:80
  3. iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.10.12:80

FireWalld防火墙

FireWalld服务是红冒RHEL7(Centos7)系统中默认的防火墙工具,特点是拥有运行时配置与永久配置选项且能够支持动态更新以及“zone”的区域功能概念,使用图形化工具firewall-config或文本管理工具firewall-cmd

区域规则

防火墙的网络区域定义了网络连接的可信等级,我们可以根据不同场景来调用不同的firewalld区域

trusted 允许所有的数据包
home 拒绝流入的数据包,除非与输出流量数据包相关或是ssh,mdns,ipp-client与dhcpv6-client服务则允许
internal 等同于home区域
work 拒绝流入的数据包,除非与输出流量数据包相关或是ssh,ipp-client与dncpv6-client服务则允许
public 拒绝流入的数据包,除非与输出流量包相关或是ssh,dncpv6-client服务则允许
external 拒绝流入的数据包,除非与输出流量数据包相关或是ssh服务则允许
dmz 拒绝流入的数据包,除非与输出流量数据包相关或是ssh服务则允许
block 拒绝流入的数据包,除非与输出流量数据包相关
drop 拒绝流入的数据包,除非与输出流量数据包相关

默认区域是public

字符管理工具

如果想要更高效的配置妥当防火墙,那么就一定要学习字符管理工具firewall-cmd命令
命令参数有:

--get-default-zone 查询默认的区域名称
--set-default-zone=<区域名称> 设置默认的区域,永久生效
--get-zones 显示可用的区域
--get-services 显示预先定义的服务
--get-active-zones 显示当前正在使用的区域与网卡名称
--add-source= 将来源于此IP或子网的流量导向指定的区域
--remove-source= 不再将此IP或子网的流量导向某个指定区域
--add-interface=<网卡名称> 将来自于该网卡的所有流量都导向某个指定区域
--change-interface=<网卡名称> 将某个网卡与区域做关联
--list-all 显示当前区域的网卡配置参数,资源,端口以及服务等信息
--list-all-zones 显示所有区域的网卡配置参数,资源,端口以及服务等信息
--add-service=<服务名> 设置默认区域允许该服务的流量
--add-port=<端口号/协议> 允许默认区域允许该端口的流量
--remove-service=<服务号> 设置默认区域不再允许该服务的流量
--remove-port=<端口号/协议> 设置默认区域不再允许该端口的流量
--reload 让“永久生效”的配置规则立即生效,覆盖当前的配置规则

特别需要注意的是firewalld服务有两份规则策略配置记录,必需要能够区分:

RunTime:当前正在生效的
Permanent:永久生效的
当修改的是永久生效的策略记录时,必须执行"--reload"参数后才能立即生效,否则要重启后再生效

查看当前的区域:

[root@linux ~]# firewall-cmd --get-default-zone
public

查询eth0网卡的区域:

[root@linux ~]# firewall-cmd --get-zone-of-interface=eth0
public

在public中分别查询ssh与http服务是否被允许:

[root@linux ~]# firewall-cmd --zone=public --query-service =ssh
yes
[root@linux ~]# firewall-cmd --zone=public --query-service =http
no

设置默认规则为dmz:

[root@linux ~]# firewall-cmd --set-default-zone=dmz

让"永久生效"的配置文件立即生效:

[root@linux ~]# firewall-cmd --reload
success

启动/关闭应急状况模式,阻断所有网络连接:

应急状况模式启动后禁止之所有的网络连接,一切服务的请求也都会被拒绝,当心,慎用。
[root@linux ~]# firewall-cmd --panic-on
success
[root@linux ~]# firewall-cmd --panic-off
success

允许https服务流量通过public区域,立即生效且永久生效

[root@linux ~]# firewall-cmd --permanent --zone=public --add-service=https
[root@linux ~]# firewall-cmd --reload

不再允许http服务流量通过public区域,立即生效且永久生效

[root@linux ~]# firewall-cmd --permanent --zone=public --remove-service=http
success
[root@linux ~]# firewall-cmd --reload
success

允许8080与8081端口流量通过public区域,立即生效且永久生效

[root@linux ~]# firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp
[root@linux ~]# firewall-cmd --reload

查看上一步加入的端口操作是否成功

[root@linux ~]# firewall-cmd --zone=public --list-ports
8080-8081/tcp
[root@linux ~]# firewall-cmd --permanent --zone=public --list-ports
8080-8081/tcp

将eth0网卡的区域修改为external,重启后生效

[root@linux ~]# firewall-cmd --permanent --zone=external --change-interface=eth0
success
[root@linux ~]# firewll-cmd --get-zone-of-interface=eth0
public

设置富规则,拒绝192.168.10.0/24网段的用户访问ssh服务

firewalld服务的富规则用于对服务、端口、协议进行更详细的配置规则的优先级最高。
[root@linux ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"
success

服务的访问控制列表

Tcp_wrappers是一款基于IP层的ACL访问控制列表流量监控程序,它能够根据来访主机地址与本机目标服务程序做允许或拒绝规则,控制列表修改后会立即生效,系统将会先检查允许规则,如果匹配允许则直接放行流量,若拒绝规则中匹配则直接拒绝;都不匹配默认也放行

客户端类型 示例 满足示例的客户端列表
单一主机 192.168.10.10 IP地址为192.168.10.10的主机
指定网段 192.168.10. IP段为192.168.10.0/24的主机
指定网段 192.168.10.0/255.255.255.0 IP段为192.168.10.0/24的主机
指定DNS后缀 .linux.com 所有DNS后缀为linux.com的主机
指定主机名称 bb.linux.com 主机名称为bb.linux.com的主机
指定所有客户端 ALL 所有主机全部包括在内
  • 限制只有192.168.10.0/24网段的主机可以访问本机的httpd服务

编辑允许规则:
[root@linux ~]# vim /etc/hosts.allow
httpd:192.168.10.
拒绝其他所有的主机:
[root@linux ~]# vim /etc/hosts.deny
httpd:*

SSH服务管理

红冒RHEL7(Centos7)系统将原先的守护进程System V init替换成了全新的初始化进程systemd(采用的是并发启动机制),用systemd命令替换掉了很多管理命令,使用nmtui命令配置网卡参数、手工将多块网卡做绑定、使用nmcli命令查看网卡信息和使用ss命令查看网络及端口状态。基于密钥远程登录以及screen服务让远程会话不再终断。
Linux操作系统开机过程首先从BIOS>Boot Loader>加载内核>内核的初始化>启动初始化进程
注:REHL7(6)默认对应的是Centos7(6)

  • 初始化进程

RHEL7系统中systemd用"目标(target)"代替了"运行级别"的概念

Sysvinit运行级别 Systemd目标名称 作用
0 runlevel0.target,poweroff.target 关机
1 runlevel1.target, rescue.target 单用户模式
2 runlevel2.target,multi-user.target 等同于级别3
3 runlevel3.target,multi-user.target 多用户的文本界面
4 runlevel4.target,multi-user.target 等同于级别3
5 runlevel5.target,graphical.target 多用户的图形界面
6 runlevel6.target,reboot.target 重启
emergency emergency.target 紧急shell

将默认的运行级别修改为"多用户,无图像模式"
[root@linux ~]# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
将默认的运行级别修改为"图形化模式"
[root@linux ~]# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target

  • 管理服务命令

systemctl管理服务的启动、重启、停止、重载、查看状态的命令:

Sysvinit命令(红冒REHL6系统) Systemctl命令(红冒REHL7系统) 作用
service foo start systemctl start foo.servicce 启动服务
service foo restart systemctl restart foo.service 重启服务
service foo stop systemctl stop foo.service 停止服务
servcie foo reload systemctl reload foo.service 重新加载配置文件(不终止服务)
service foo status systemctl status foo.sercice 查看服务状态

systemctl设置服务开机启动、不启动、查看各级别下服务启动状态的命令:

Sysvinit命令(红冒REHL6系统) Systemctl命令(红冒REHL7系统) 作用
chkconfig foo on systemctl enable foo.service 开机自动启动
chkconfig foo off systemctl disable foo.service 开机不自动启动
chkconfig foo systemctl is-enabled foo.service 查看特定服务是否为开机自启动
chkconfig --list systemctl list-unit-files --type=service 查看各个级别下服务的启动与禁用情况
  • 监视资源与管理进程

系统进程总共有5中不同的状态:

R(允许):正在允许或在运行队列中等待。
S(中断):休眠中,在等待某个条件的形成或接受到信号。
D(不可中断):收到信号不唤醒和不可运行,进程必须等待直到有中断发生。
Z(僵死):进程已终止,但进程描述符存在,直到父进程调用wait4()系统后释放。
T(停止):进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止运行

ps命令用于查看系统中的进程状态,格式为:"ps [参数]"
查看进程与状态:"ps -aux"
查找某个特定的进程信息:"ps -aux | grep 进程名"

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
进程的所有者 进程ID号 运算器占用率 内容占用率 虚拟内存使用量(单位是KB) 占用的固定内存量(单位是KB) 所在终端 进程状态 被启动的时间 实际使用CPU的时间 命令名称与参数
参数 作用
-a 显示所有的进程(包括其他用户的)
-u 用户以及其他详细信息
-x 显示没有控制终端的进程,通常和a一起用
-l 较长、较详细的将该PID信息列出
-A 所有的进程均显示出来,与-e具有相同的作用
-f 做一个更为完整的输出

TOP命令用于监视进程的活动与系统负载,格式为:"top"
前五行行为系统整体的统计信息,详解如下:

第1行:系统时间,运行时间,登陆用户数,系统负载(分别是1分钟、5分钟、15分钟的平均值)
第2行:进程总数,运行中的,睡眠中的,停止的,僵尸的
第3行:用户占用资源,系统内核占用资源,改变过优先级的进程,空闲的资源,等等输入输出的时间(以百分比格式显示)
第4行:物理内存总量,使用量,空闲量,作为内核缓存的内存量
第5行:虚拟内存总量,使用量,空闲量,已被提前加载的内存数据

进程的信息区中包含了各个进程的详细信息,含义如下

PID:进程ID号
USER:进程的所有者
PR:优先级
NI:优先级(负值表示优先级更高)
VIRT:虚拟内存使用量
RES:物理内存使用量
SHR:共享内存大小
S:进程状态
%CPU:运算器的使用百分比
%MEM:内存的使用百分比
TIME+:使用CPU的时间(单位是1/100秒)
COMMAND:命令名称

pidof命令用于查询某个特定程序的PID值,格式为:“pidof [参数] [程序名称]”
查询“sshd”进程的PID值:“pidof sshd”
kill命令用于终止某个特定PID号码的进程,格式为:“kill [参数] [进程PID号]”
强制终止PID为4674的进程:“kill -9 4674”
-9 代表强制终止
killall命令用于终止某个特定名称的所有进程,格式为:“killall [参数] [进程名称]”
终止名称为“sshd”的进程:“killall sshd”

使用jobs命令可以看到所有在后台运行着的进程:
bg命令可以让后台的程序继续运行,格式为:“bg 1”
fg命令可以将后台的进程调回前台,程序依然在允许,可以手动停止

配置网卡连接网络

Centos7网卡配置(nmtui、图形界面)
http://www.jianshu.com/p/6a0ad99370d0
nmcli能够查看网卡信息和网络状态
查看网卡的配置信息:nmcli connection show
查看网卡的连接状态:nmcli device status

ss命令用于查看本机的端口连接状态,具体的参数:

-a 显示所有的套接字
-l 显示所有连接状态的套接字
-e 显示详细的套接字信息
-m 显示套接字的内存使用情况
-p 显示套接字的进程信息
-4 显示ipv4的套接字信息
-6 显示ipv6的套接字信息
-t 仅显示tcp的套接字信息
-u 仅显示udp的套接字信息
-n 不解析主机名(提升速度)
-s 查看概述

tracepath命令可以查看IP数据包从本机到另外一台电脑经过的路由信息,格式为:“tracepath 目标地址(域名或IP地址均可)”
一般来讲路由跳数越少,延时越低,访问速度越快

远程控制服务

sshd服务
sshd服务提供两种安全验证的方法:
基于口令的安全验证:经过验证账号与密码即可登录到远程主机
基于秘钥的安全验证:需要本地生成“秘钥对”后将公钥传送到服务端进行公共秘钥的比较
sshd服务的配置文件解析:cat /etc/ssh/sshd_config

参数 作用
#Port 22 默认的sshd服务端口
#ListenAddress 0.0.0.0 设定sshd服务端监听的IP地址
#Protocol 2 SSH协议的版本号
#HostKey /etc/ssh/ssh_host_key SSH协议版本为1时,私钥存放的位置
HostKey /etc/ssh/ssh_host_rsa_key SSH协议版本为2时,RSA私钥存放的位置
HostKey /etc/ssh/ssh_host_dsa_key SSH协议版本为2时,DSA私钥存放的位置
#PermitRootLogin yes 设定是否允许root用户直接登录
#StrictModes yes 当远程用户私钥改变时则直接拒绝连接
#MaxAuthTries 6 最大密码尝试次数
#MaxSessions 10 最大终端数
#PasswordAuthentication yes 是否允许密码验证
#PermitEmptyPasswords no 是否允许空密码登录(很不安全)

ssh命令用于远程管理linux主机,格式为“ssh [参数] 主机”
-p 指定连接端口(默认为22)
-v 显示连接过程的详细信息

ssh连接图例

安全密钥验证
链接:http://www.jianshu.com/p/2de68f87b170

远程传输命令

scp命令用于在网络中安全的传输文件,格式为:“scp [参数] 本地文件 远程账户@远程IP地址:远程目录”
-v 显示详细的连接进度
-P 指定远程主机的sshd端口号
-r 传送文件夹是请加此参数
-6 使用ipv6协议

不间断会话服务

Screen服务
会话恢复:即便网络中断,也可让会话随时恢复,用户不会失去对命令行的控制
多窗口:每个会话都是独立运行的,拥有独立的编号、输入输出和窗口缓存
会话共享:可以使多个用户从不同终端使用同一个会话,也可以让他们看到完全相同的输出

1.安装:yum install screen
2.Screen命令的常用命令参数包括:

-A 让所有视窗自动调整适应当前终端机的大小
-d<会话名称> 将指定的screen会话离线
-r<会话名称> 将指定的screen会话恢复
-h<行数> 指定视窗的缓冲区行数
-S<会话名称> 指定screen会话的名称
-x 恢复所有离线的会话
-ls或-lsit 显示当前的screen会话
--wipe 自动将无法使用的screen会话删除

3.创建与使用会话功能
完成安装后直接运行screen即可使用服务,推荐每个会话定义一个名字,方便分辨。
创建名称为backup的会话
[root@linux ~]# screen -S backup
查看当前已经存在的会话
[root@linux ~]# screen -ls
There is a screen on:
28556.back (Attached)
1 Socket in /var/run/screen/S-root.
当执行screen命令后会调用系统默认的shell(通常即bash),所以敲完screen命令后hi立即返回一个命令提示符,虽然看起来与刚刚没有变化,但此时已经进入screen会话
创建一个会话,初始为用vim编辑器写文件:
[root@linux ~]# screen vim memo.txt //退出vim后会话也会被自动删除
回到back会话中
[root@linux ~]# screen -r back
将back会话离线
[root@linux ~]# screen -d back
[remote detached]
查看时已经是离线了
[root@linux ~]# screen -ls
There is a screen on:
28925.back (Detached)
1 Socket in /var/run/screen/S-root.
总结:将screen会话设置为暂时断开(detach),那么会话窗口中的程序依然会执行。随后将会话重新连接(attach),即可重新控制会话窗口中运行的程序

4.会话共享功能
将两个终端连入同一个服务器
在终端A上执行创建会话的操作:
[root@linux ~]# screen -S back2
在终端B上执行同步会话操作:
[root@linux ~]# screen -x
此时A上的任何操作都实时同步到B的屏幕上

使用Apache服务部署静态网页

可以提供web服务的程序:Linux(Apache、Nginx)、Windows(IIS)、中间件(Tomcat)
httpd服务目录

服务目录 /etc/httpd
配置文件 /etc/httpd/conf/httpd.conf
网站数据目录 /var/www/html
访问日志 /var/log/httpd/access_log
错误日志 /var/log/httpd/error_log

配置服务文件参数 vim /etc/httpd/conf/httpd.conf

ServerRoot 服务目录
ServerAdmin 管理员邮箱
User 运行服务的用户
Group 运行服务的用户组
ServerName 网站服务器的域名
DocumentRoot 网站数据目录
Listen 监听的IP地址与端口号
DirectoryIndex 默认的索引页页面
Errorlog 错误日志文件
CustomLog 访问日志文件
Timeout 网页超时时间,默认为30秒
Include 需要加载的其他文件

Apache服务程序的配置文件内容分为三种类型:“注释行信息”、“全局配置”、“区域配置”

#This is the main Apache server configuration file...//注释行信息
ServerRoot "/etc/httpd"   //全局配置
<Directory />
.....  //区域配置
</Directory>
......
<Location /server-status>
......  //区域配置
</Location>

强制访问控制安全子系统
SELinux让系统中的各个服务进程都受到约束,即仅能访问到所需要的文件

模式一:enforcing - 安全策略强制启用模式,将会拦截服务的不合法请求
模式二:permissive - 遇到服务越权访问只会发出警告而不强制拦截
模式三:disable - 对于越权的行为不警告,也不拦截。

开启方法:
第一步:切换到SELinux服务的配置文件目录“/etc/selinux”
第二步:编辑config文件将模式改为强制启用SELINUX=enforcing

SELinux安全策略包括域和安全上下文:
SELinux域:对进程资源进行限制(查看方式:ps -Z)
SELinux安全上下文:对系统资源进行限制(查看方式:ls -Z)

SELinux安全上下文是有冒号间隔的四个字段组成的
用户段:root表示root账户身份,user_u表示普通用户身份,system_u表示系统进程身份
角色段:object_r是文件目录角色,system_r是一般进程角色
类型段:进程和文件都有一个类型用于限制存取权限

semanage命令用于查询与修改SELinux的安全上下文,格式为:“semanage [选项] [文件]”

-l 查询
-a 增加
-m 修改
-d 删除

restorecon命令用于恢复SELinux文件安全上下文,格式为:"restorecon [选项] [文件]"

-i 忽略不存在的文件
-e 排除目录
-R 递归处理(针对目录使用)
-v 显示详细的过程
-F 强制恢复

修改网站数据目录的安全上下文:
[root@linux ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
修改网站数据的安全上下文(*代表所有文件或目录)
[root@linux ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/*
这样操作后查看到SELinux安全上下文依然没有改变,再执行restorecon命令
[root@linux ~]# restorecon -Rv /ho me/wwwroot/
再刷新浏览器可看到正常页面(selinux开启状态下)

使用Vsftpd服务传输文件

FTP协议占用两个端口号:
21端口:命令控制,用于接受客户端执行的FTP命令
20端口:数据传输,用于上传、下载文件数据
FTP数据传输的类型:
主动模式:FTP服务端主动向FTP客户端发起连接请求
被动模式:FTP服务端等待FTP客户端的连接请求
Vsftpd服务具有安全性、完全开源及免费、速率高、支持IPv6、虚拟用户功能

安装vsftpd服务
[root@linux ~]# yum -y install vsftpd
vsftpd的程序与配置文件
主程序 /usr/sbin/vsftpd
用户禁止登陆列表 /etc/vsftpd/ftpusers
               /etc/vsftpd/user_list
主配置文件 /etc/vsftpd/vsftpd.conf

vsftpd程序配置文件参数作用:

参数 作用
listen=[YES][NO] 是否以独立运行的方式监听服务
listen_address=IP地址 设置要监听的IP地址
listen_port=21 设置FTP服务的监听端口
download_enable=[YES][NO] 是否允许下载文件
userlist_enable=[YES][NO]
userlist_deny=[YES][NO]
是否启用“禁止登录用户名单”
max_clients=0 最大客户端连接数,0为不限制
max_per_ip=0 同一IP地址最大连接数,0为不限制
anonymous_enable=[YES][NO] 是否允许匿名用户访问
anon_upload_enable=[YES][NO] 是否允许匿名用户上传文件
anon_umask=022 匿名用户上传文件的umask值
anon_root=/var/ftp 匿名用户的FTP根目录
anon_mkdir_write_enable=[YES][NO] 是否允许匿名用户创建目录
anon_other_write_enable=[YES][NO] 是否开放匿名用户其他写入权限
anon_max_rate=0 匿名用户最大传输速率(字节),0为不限制
local_enable=[YES][NO] 是否允许本地用户登录FTP
local_root=/var/ftp 本地用户的FTP根目录
chroot_local_user=[YES][NO] 是否将用户权限禁锢在FTP目录,更加安全
local_max_rate=0 本地用户最大传输速率(字节),0为不限制
********************************** 以下这些是关于vsftpd虚拟用户支持的重要配置项目
默认的vsftpd.conf不包含这些设定项目, 需要自己手动添加配置
guest_enable=YES 设定启用虚拟用户功能
guest_username=vsftpd 指定虚拟用户的宿主用户(这个是我们后面要新建的用户)
user_config_dir=/etc/vsftpd/vconf 设定虚拟用户个人Vsftp的配置文件存放路径
也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件, 一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同。
virtual_use_local_privs=YES 当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限
#当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限。 默认情况下此参数是关闭的(NO)。
pasv_min_port=9000 (设置被动模式的端口范围)
pasv_max_port=9045 (设置被动模式的端口范围)
accept_timeout=5 保持5秒
connect_timeout=1 1秒后重新连接

vsftpd的验证方式
vsftpd程序提供的FTP服务可选认证方式,分别为匿名访问、本地用户和虚拟用户
匿名访问:任何人无需验证口令即可登入FTP客户端
本地用户:使用FTP服务器中的用户、密码信息
虚拟用户:创建独立的FTP账号资料

虚拟用户模式
vsftpd服务配置虚拟用户的操作步骤:

第1步:建立虚拟FTP用户文件
第2步:生成虚拟用户数据库文件
第3步:建立支持虚拟用户的PAM认证文件
第4步:创建FTP根目录及虚拟用户映射的系统用户
第5步:为虚拟用户设置不同的权限
第6步:重启vsftpd服务,验证实验效果

Centos6配置方法
第一步:先建立虚拟用户名单文件:
[root@linux ~]# touch /etc/vsftpd/virtusers
编辑虚拟用户名单文件:(第一行账号,第二行密码,注意:不能使用root做用户名,系统保留)
[root@linux ~]# vim /etc/vsftpd/virtusers
web1
123456
web2
123456
web3
123456

第二步:生成虚拟用户数据文件:
[root@linux ~]# db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
chmod 600 /etc/vsftpd/virtusers.db  #设定PAM验证文件,并指定对虚拟用户数据库文件进行读取
#如果生成虚拟用户数据文件的时候出现以下错误
#users.db-bash: db_load: command not found
#因为在执行db命令时候软件包没有安装
#db4 db4-devel db4-java db4-tcl db4-utils
#可以运行yum install db4* 命令安装

第三步:在/etc/pam.d/vsftpd(PAM认证文件)的文件头部加入以下信息(在后面加入无效)
修改前先备份
[root@linux ~]# cp /etc/pam.d/vsftpd  /etc/pam.d/vsftpdbak
恢复
[root@linux ~]# cp /etc/pam.d/vsftpdbak  /etc/pam.d/vsftpd
[root@linux ~]# vim /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
注意:如果系统为64位,则上面的lib改为lib64,否则配置失败

第四步:新建一个系统用户vsftpd,用户家目录为/home/wwwroot, 用户登录终端设为/sbin/nologin(即使之不能登录系统)
[root@linux ~]# useradd vsftpd -d /home/wwwroot -s /sbin/nologin
[root@linux ~]# chown vsftpd:vsftpd /home/wwwroot -R
#chown apache:apache /home/wwwroot -R   #如果虚拟用户的宿主用户为apache,需要这样设置。

第五步:建立虚拟用户个人Vsftp的配置文件

[root@linux ~]# mkdir  /etc/vsftpd/vconf
[root@linux ~]# cd /etc/vsftpd/vconf
[root@linux ~]# touch web1 web2 web3 #这里创建三个虚拟用户配置文件
[root@linux ~]# vim web1 #编辑用户web1配置文件,其他的跟这个配置文件类似
local_root=/home/wwwroot/web1/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

第六步:最后重启vsftpd服务器
[root@linux ~]# /etc/init.d/vsftpd restart
备注:guest_username=vsftpd    #指定虚拟用户的宿主用户(就是我们前面新建的用户)
如ftp的目录是指向网站根目录的,用来上传网站程序的话
     guest_username=apache    #指定虚拟用户的宿主用户为apache运行账户,可以避免很多权限设置问题

至此,vsftpd虚拟用户模式配置完成。(如果最后访问时只能下载,不能上传,那就给虚拟用户的家目录更改权限)

可插拔认证模块PAM

PAM是一种认证机制,通过一些动态链接库和统一的API将系统提供的服务与认证方式分开,使得系统管理员可以根据需求灵活的调整服务程序的不同认证方式。
分层设计思想:应用程序层-应用接口层-鉴别模块层

PAM API

PAM模块的重要目录:
/lib/security:pam认证模块
/etc/pam.d:针对不同服务而定义好的pam配置文件

例如vsftpd程序就会在其主配置文件("/etc/vsftpd/vsftpd.conf")中写入下面的参数:
pam_service_name=vsftpd
表示登录ftp服务器时是根据/etc/pam.d/vsftpd的文件内容进行安全认证的

使用Samba或NFS实现文件共享

NFS文件共享(NetworkFile System)是一个能够将多台Linux的远程主机数据高中到本地目录的服务,属于轻量级的文件共享服务,不支持Linux与Windows之间的文件共享。
SMB(Server Messages Block)协议:实现局域网内文件或打印机等资源共享服务的协议
Samba服务程序是一款基于SMB协议并由服务端和客户端组成的开源文件共享软件,实现了Linux与Windows之间的文件共享(包括Linux之间)。

Samba服务

安装Samba
[root@linux ~]# yum -y install samba
浏览Samba配置文件
[root@linux ~]# cat /etc/samba/smb.conf
如果只想要非注释行,可以这样
备份原始的配置文件
[root@linux ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
过滤无用的内容:
[root@linux ~]# cat /etc/samba/smb.conf.bak|grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf

smb.conf配置文件:

[global] 全局参数
workgroup = MYGROUP 工作组名称
server string = Samba Server Version %v 服务器介绍信息,参数%v为显示SMB版本号
log file = /var/log/samba/log.%m 定义日志文件存放位置与名称,参数%m为来访的主机名
max log size = 50 定义日志文件最大容量为50Kb
security = user 安全验证的方式,总共有四种
#share 来访主机无需验证口令,更加方便,安全性很差
#user 需由SMB服务验证来访主机提供的口令后才可建立访问,更加的安全
#server 使用独立的远程主机验证来访主机提供的口令(集中管理账号)
#domain 使用PDC来完成验证
passdb backend = tdbsam 定义用户后台的类型,共有3种
#smbpassword 使用SMB服务的smbpassword命令给系统用户设置密码
#tdbsam 创建数据库文件并使用pdbedit建立SMB独立的用户
#ldapsam 基于LDAP服务进行账户验证
load printers = YES 设置是否当Samba服务启动时共享打印机设备
cpus options = raw 打印机的选项
[homes] 共享参数
comment = Home Directories 描述信息
browseable = no 指定共享是否在"共享邻居"中可见
writable = yes 定义是否可写入操作,与"read only"相反
[printers] 打印机共享参数
comment = All Printers
path = /var/spool/samba 共享文件的实际路径(重要)
browseable = no
guest ok = no 是否所有人可见,等同于"public"参数
writable = no
printable = no

标准的Samba共享参数是这样的:

参数 作用
[linux] 共享名称为linux
comment = Do not arbitrarily modify the database file 警告用户不要随意修改数据库
path = /home/database 共享文件夹在/home/database
public = no 关闭所有人可见
writable = yes 允许写入操作

Samba安全共享文件
使用Samba口令验证模式更加安全,需要创建Samba服务独立的数据库

第1步:检查当前是否为user验证模式
[root@linux ~]# cat /etc/samba/smb.conf
    secuirty = user
    passdb_backend = tdbsam
第2步:创建共享文件夹
[root@linux ~]# mkdir /home/amb
第3步:描述共享文件夹信息
在smb.conf配置文件追加共享文件夹的配置参数:
[database]
comment = Do not arbitrarily modify the database file
path = /home/smb
public = no
writable = yes
保存,重启SMB服务
[root@linux ~]# service smb restart
[root@linux ~]# systemctl restart smb(Centos7)
添加开机启动项
[root@linux ~]# chkconfig smb on
[root@linux ~]# systemctl enable smb(Centos7)
ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/multi-user.target.wants/smb.service'
第4步:创建SMB服务独立的账号
SMB服务配置文件中密码数据库后台类型为"tdsam",这里建立的是Samba独立的账号信息,使用pdbedit命令来创建

pdbedit命令用于管理SMB服务的账户信息数据库,格式为:"pdbedit [选项] 账户"
-a 用户名      建立Samba用户
-x 用户名      删除Samba用户
-L            列出用户列表
-Lv           列出用户详细信息列表
创建SMB用户(必须有一个系统用户为基础)会产生一堆信息:
[root@linux ~]# pdbedit -a -u linux1
new password:设置SMB服务独立的密码
retype new password:
Unix username:        linux1
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-2467017702-1858094485-2934556939-1000
Primary Group SID:    S-1-5-21-2467017702-1858094485-2934556939-513
Full Name:
Home Directory:       \\portal\linux1
HomeDir Drive:
Logon Script:
Profile Path:         \\portal\linux1\profile
Domain:               PORTAL
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          Wed, 06 Feb 2036 23:06:39 CST
Kickoff time:         Wed, 06 Feb 2036 23:06:39 CST
Password last set:    Fri, 25 Aug 2017 00:47:40 CST
Password can change:  Fri, 25 Aug 2017 00:47:40 CST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
第5步:使用windows访问
在Windows主机的运行框中输入远程主机的信息\\192.167.10.124
输入刚刚创建的SMB用户密码,应该是登录成功的
第6步:使用Linux挂载验证(客户端操作)
安装cifs-utils软件包
[root@linux ~]# yum -y install cifs-utils
创建挂载目录:
[root@linux ~]# mkdir /smb
在root家目录创建认证文件(依次为SMB用户名、SMB密码、SMB共享域)
[root@linux ~]# vim auth.smb
username=linux1
password=linux1
domain=MYGROUP
设置权限:
[root@linux ~]# chmod 600 auth.smb
配置挂载信息(内容依次为远程共享信息、本地挂载目录、文件系统类型、认证文件、开机自检选项)
[root@linux ~]# vim /etc/fstab
//192.168.9.124/database(这个写服务端配置文件里的[database]名称)      /root/smb                       cifs    credentials=/root/smb/auth.smb  0 0
使用mount命令的-a参数挂载所有 在fatab文件中定义的文件信息:
[root@linux ~]# mount -a                  #报错检查本机挂载的目录和服务端的[名字]
通过df -h和进入挂载目录查看文件来验证~~

NFS网络文件系统

安装nfs服务
[root@linux ~]# yum -y install nfs-utils
第1步:创建NFS服务端共享目录
[root@linux ~]# mkdir /bak
NFS服务端配置文件"/etc/exports",用于定义共享的目录及相应的权限
[root@linux ~]# vim /etc/exports
//格式为:共享目录的绝对路径 允许访问的NFS客户端(权限参数)
/bak 192.168.2.*(rw,sync,root_squash)
NFS配置共享的参数有:
ro        只读默认
rw       读写模式
root_squash      当NFS客户端使用root用户访问时,映射为NFS服务端的匿名用户
no_root_squash    当NFS客户端使用root用户访问时,映射为NFS服务端的root用户
all_squash    不论NFS客户端使用任何账户,均映射为NFS服务端的匿名用户
sync    同时将数据写入到内存与硬盘中,保证数据不丢失
async   优先将数据保存到内存,然后再写入硬盘,效率更高,但可能造成数据丢失
第2步:启动NFS服务端
NFS服务是依赖于RPC服务的,RHEL7中已经默认运行,无需再配置RPC服务
[root@linux ~]# systemctl status rpcbind
启动nfs-server服务
[root@linux ~]# systemctl start nfs-server
设置NFS服务端为开机启动
[root@linux ~]# systemctl enable nfs-server
第3步:配置NFS客户端
如果NFS客户端也是RHEL7系统,那么软件包nfs-utils一定也是已经默认安装,直接挂载就好
showmount命令用于查询NFS服务端共享信息,格式为:“showmount [参数] [远程主机]”
-e    显示NFS服务端的共享列表
-a    显示本机挂载NFS资源的情况
-v    显示版本号
查询远程NFS服务端中可用的共享资源:
[root@linux ~]# showmount -e 192.168.2.2
Export list for 192.168.2.2:
/bak (everyone)
创建本地挂载目录:
[root@linux ~]# mkdir /bak
[root@linux ~]# mount -t nfs 192.168.2.2:/bak /bak
开机自动挂载NFS到本地
[root@linux ~]# vim /etc/fstab
192.168.2.2:/bak /bak nfs defaults 0 0

AutoFs自动挂载服务
作为一个守护进程,只有检测到用户试图访问一个尚未挂载的文件系统时才自动的检测并挂载该文件系统。较/etc/fstab相比节约了网络与系统资源

安装autofs服务:
[root@linux ~]# yum install autofs
启动autofs服务并加入开机启动
[root@linux ~]# systemctl start autofs
[root@linux ~]# systemctl enable autofs
ln -s '/usr/lib/systemd/system/autofs.service' '/etc/systemd/system/multi-user.target.wants/autofs.service'
修改autofs主配置文件(格式为:挂载目录 映射配置文件)
[root@linux ~]# vim /etc/auto.master
/media /etc/iso.misc
编辑挂载配置参数文件(映射文件)
[root@linux ~]# vim /etc/auto.misc
iso -fstype=iso9660,ro,nosuid,nodev:/dev/cdrom
重新加载启动autofs服务
[root@linux ~]# systemctl restart autofs
进入自动挂载目录就可以看到挂载的目录了。

使用Bind提供域名解析服务

DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析和反向解析:
正向解析:根据主机名(域名)查找对应的IP地址
反向解析:根据IP地址查找对应的主机名(域名)
从工作形式上分为主服务器、从服务器和缓存服务器

未完待续...

推荐阅读更多精彩内容