关于linux:⭐Linux实战技能100讲个人笔记-6-服务管理篇

40次阅读

共计 15260 个字符,预计需要花费 39 分钟才能阅读完成。

防火墙

硬件防火墙: 次要是进攻 DDOS 攻打, 流量攻打. 兼顾数据包过滤.

软件防火墙: 次要解决数据包的过滤.

  • iptables
  • firewalld

包过滤防火墙

应用层防火墙

iptables

CentOS 6 默认防火墙, 次要是包过滤防火墙, 对 ip, 端口, tcp, udp, icmp 协定管制.

配置清晰, 很简单.

属于包过滤防火墙

iptables [选项]

选项
    -n --numeric      # 数字输入。IP 地址和端口会以数字的模式打印。默认状况下,程序试显 示主机名、网络名或者服务(只有可用)-v --verbose      # 让 -L 显示更具体的
    -L -list < 规定链 >  # 显示所选链的所有规定。如果没有抉择链,所有链将被显示。也能够和 z 选项一起 应用,这时链会被主动列出和归零。准确输入受其它所给参数影响。-t < 规定表 =filter>        # 要操作的匹配包的表(默认是操作 filter)

规定 ” 表 ”

  • filter 过滤

    ip, 端口, tcp,udp,icmp 协定

  • nat 网络地址转换
  • mangle
  • raw

罕用, 需重点学习的: filter 和 nat

不同的表有本人的默认规定, eg. Chain INPUT (policy ACCEPT) 示意若未匹配任意规定则默认承受

规定 ” 链 ”

  • INPUT (C->S 方向)规定链
  • OUTPUT (S->C 方向)规定链
  • FORWARD 转发规定链
  • PREROUTING 路由前转换 (扭转指标地址) 规定链
  • POSTROUTING 路由后转换 (管制源地址) 规定链

filter 表操作

默认操作的是 filter 表, 因而个别书写时能够省略.

filter [-t filter] < 命令 > < 规定链 > < 规定 >

命令
    -L -list            # 查看状态

    -I -insert            # 增加规定(插入到最后面), 留神规定的程序是有优先级的(排在后面的优先级高)
    -A -append             # 增加规定(追加到最初面), 留神规定的程序是有优先级的(排在后面的优先级高)
    
    -D -delete < 规定序号或具体规定 >        # 删除某一条规定
    -F -flush            # 清空所有规定(默认的 Policy 规定不会扭转)
    
    -P -policy            # 设置默认规定
    
    自定义规定链
    -N -new-chain        # 创立自定义规定链
    -X -delete-chain
    -E -rename-chain
    
规定链
    INPUT
    OUTPUT

规定
    -s -source [!] address[/mask]            # 指定源地址 ip
                                            # eg. 10.0.0.0
                                            # eg. 10.0.0.0/24
    -d --destination [!] address[/mask]        # 指定指标地址 ip, 用于 INPUT 没意义
    -i -in-interface [!] [name]                # 进入的网络接口(网卡)
    -o --out-interface [!][name]            # 进来的网络接口(网卡)
    -p -protocal [!]protocol                # 协定: tcp, udp, icmp
    
    -j --jump <target>                        # 指定规定的指标(动作)

tcp 协定相干选项
    --sport, --source-port [!] [port[:port]]            # 起源端口或端口范畴
    --dport, --destionation-port [!] [port:[port]]        # 指标端口或端口范畴
    
udp 协定相干选项
    --sport, --source-port [!] [port[:port]]            # 起源端口或端口范畴
    --dport, --destionation-port [!] [port:[port]]        # 指标端口或端口范畴

icmp 协定相干选项


动作(target) -j
    ACCEPT     # 容许
    DROP    # 禁止
    QUEUE
    RETURN
    
示例
    iptables -vnL    # 查看 filter 表具体状态, 可不便查看以后的所有规定

    iptables -t filter -A INPUT -s 10.0.0.1 -j ACCEPT    # 容许来自 10.0.0.1 的包进入
    iptables -t filter -A INPUT -s 10.0.0.2 -j DROP    # 容许来自 10.0.0.1 的包进入
    
    iptables -D INPUT -s 10.0.0.2 -j DROP    # 删除匹配的规定
    iptables -t filter -D INPUT 3            # 删除第 3 条规定(第 1 条的序号是 1)
    
    iptables -P INPUT DROP        # 批改 INPUT 规定链的默认规定为 DROP
    
    iptables -t filter -A INPUT -i eth0 -s 10.0.0.2 -p tcp --dport 80 -j ACCEPT        # 容许从 eth0 网卡进入, 来自 10.0.0.2 的包拜访本地的 80 端口.

罕用策略

  • 默认 ACCEPT, 配置特定规定 DROP

    罕用于测试

  • 默认 DROP, 配置特定规定 ACCEPT

    常见于生产环境

输入字段解释

                以后的默认策略是 ACCEPT
                    ????
Chain INPUT (policy ACCEPT 501 packets, 33820 bytes)
 pkts bytes target     prot            opt in     out     source               destination
    0     0 ACCEPT     all            --  *      *       10.0.0.1             0.0.0.0/0
  
                ????       ????                ????        ????            ????                    ????
               策略         协定                进入网卡 进来网卡    起源地址              目标地址
                    (tcp,udp,icmp)
    

nat 表操作

NAT 表 – 网络地址转换表

filter -t nat < 命令 > < 规定链 > < 规定 >


规定链
    PREROUTING        # 路由前转换 - 目标地址转换
    POSTROUTING        # 路由后转换 - 管制源地址


动作(target) -j
    DNAT

规定
    --to-destination <ip>[/<mask>]    # 批改目标地址
    --to-source <ip>[/<mask>]        # 批改源地址


示例
    iptables -t nat -vnL    # 查看 nat 表具体状态
    
    # 假如 iptables 所在主机 ip 为 114.115.116.117, 此处配置外网拜访该地址 (eth0 网卡) 时将拜访 tcp 协定且是 80 端口的数据包目标地址转换内网主机
    iptables -t nat -A PREROUTING -i eth0 -d 114.115.116.117 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.1
    # 另内网拜访该地址 (eth1 网卡) 时将数据包源地址转换成 iptables 所在主机 ip 114.115.116.117
    iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth1 -j SNAT --to-source 114.115.116.117

可用于: 端口转发

配置文件

iptables 配置文件 /etc/sysconfig/iptables

在 CentOS 6 中, 治理 iptables:

service iptables save|start|stop|restart

命令
    save        # 将以后内存中的配置保留为配置文件 /etc/sysconfig/iptables
                # 理论执行了 iptables-save > /etc/sysconfig/iptables
                # 下次启动时 iptables-restore < /etc/sysconfig/iptables

在 CentOS 7 中, 须要装置该服务 yum install iptables-services 才能够应用该命令

留神:

  • iptables 的命令是写在内存中, 重启后生效.

firewalld

CentOS 7 在 iptables 上又封装了一层, 也就是 firewalld , 应用更简洁(底层应用 netfilter).

属于包过滤防火墙

firewalld 的特点

  • 反对区域 “zone” 概念

    即 iptables 的自建规定链

  • firewall-cmd 管制防火墙

firewalld 服务治理

systemctl start|stop|enable|disable firewalld.serivce

留神: firewalld 与 iptables 服务是抵触的.

firewall-cmd

firewall-cmd [选项]

选项
    状态选项
    --state                # 查看 firewalld 以后状态
    --reload            # 从新加载配置
    
    --zone=public        # 指定区域, 不指定时默认就是 public
        
    Zone 选项
    --get-zones            # 查看所有的区(除了 public 外还有一些 iptables 默认规定链一样)
    --get-default-zone    # 查看默认的区
    --get-active-zone    # 查看激活的 zone    
    
    永久性选项
    --permanent            # 设置选项写入配置, 须要 reload 能力失效 
    
    批改和查问 zone 的选项
    --list-all            # 查看具体状态(蕴含以下内容)     
    --list-interfaces    # 查看某一项状态 - 网卡接口
    --list-ports        # 查看某一项状态 - 端口
    --list-services        # 查看某一项状态 - 服务端口
    
    --add-service < 服务 >        # 增加 service 端口
    --add-port < 端口 / 协定 >       # 增加指定协定指定端口, eg. 81/tcp
    --add-source < 源 ip[/ 网段]>    # 增加源地址
    --add-interface < 网卡接口 >
    
    --remove-service < 服务 >
    --remove-port < 端口 / 协定 >
    --remove-source < 源 ip[/ 网段]>
    --remove-interface < 网卡接口 >

待整顿的示例

# 只容许某个 IP 段拜访 3306
firewall-cmd --permanent --zone=public --add-rich-rule 'rule family=“ipv4”source address=“192.168.0.4/24”port port protocal=“tcp”port=“3306”accept'

firewall-cmd --list-all 输入字段解释

#public 区域    激活状态
#  ????          ????
public (active)
  target: default                # ????
  icmp-block-inversion: no
  interfaces: eth0                # ???? public 区域绑定了 eth0 网卡
  sources:                        # 容许拜访的源 ip
  services: ssh dhcpv6-client    # 容许拜访的服务端口
  ports:                        # 容许拜访的端口
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

telnet 服务

telnet 是明文传输, 危险, 因而不能利用于远程管理.

装置服务

## telnet 是客户端工具
## telnet-server 是服务端服务
## xinetd 是因为 telnet-server 无奈自启动, 因而须要应用它来治理 telnet-server 的启动
yum install telnet telnet-server xinetd -y

启动服务

 systemctl start xinetd
 systemctl start telnet.socket
 

telnet 不负责端口的监听, 只负责解决传过来的数据.

端口监听工作交由 xinetd 负责, xinetd 负责端口监听并将申请转发给 telnet

root 用户无奈用于 telnet 近程登录

SSH 服务

客户端配置文件 /etc/ssh/ssh_config

服务配置文件 /etc/ssh/sshd_config

Port 22                                            # 服务端口号(默认是 22)
PermitRootLogin yes                                # 是否容许 root 登录
AuthorizedKeysFile  .ssh/authorized_keys        # 密钥验证的公钥存储文件. 默认是放在 ~/.ssh/authorized_keys

使配置失效

systemctl restart sshd.service

ssh 命令

ssh 选项 [<user>@]<host>

选项
    罕用
    -p <port>        # 指定连贯端口
    -4              # 强制 ssh 只应用 IPv4 地址
    -f              # 要求 ssh 在执行命令前退至后盾.
    
    端口转发
    -N                      # 不执行近程命令. 用于转发端口.
    -L port:host:hostport    # local, 将本地机 (客户机) 的某个端口转发到远端指定机器的指定端口
                            # 工作原理是这样的, 本地机器上调配了一个 socket 侦听 port 端口, 一旦这个端口上有了连贯, 该连贯就通过平安通道转发进来, 同时近程主机和 host 的 hostport 端口建设连贯. 能够在配置文件中指定端口的转发.
                             # 只有 root 能力转发特权端口.  IPv6 地址用另一种格局阐明: port/host/hostport

    -R port:host:hostport    # remote, 将近程主机 (服务器) 的某个端口转发到本地端指定机器的指定端口
                            # 工作原理是这样的, 近程主机上调配了一个 socket 侦听 port 端口, 一旦这个端口上有了连贯, 该连贯就通过平安通道转向进来, 同时本地主机和 host 的 hostport 端口建设连贯.
                            # 能够在配置文件中指定端口的转发. 只有用 root 登录近程主机 能力转发特权端口. IPv6 地址用另一种格局阐明: port/host/hostport
                            
                            
示例
    ssh -fNL 27117:127.0.0.1:27017 < 近程主机地址 >        # 建设 local 隧道, 将来自 27117 的连贯通过 < 近程主机 > 转发至 127.0.0.1(其实还是 < 近程主机 >)的 27017 端口
                                                    # 通常实用于 < 近程主机 > 未对外开放 27017 端口
                                                    
    ssh -fNR 2222:127.0.0.1:22 < 近程主机地址 >            # 建设 remote 隧道(也叫反向隧道), 将来自 < 近程主机 >2222 端口的连贯通过本机转发给 127.0.0.1(实际上还是本机)
                                                    # 通常实用于外网拜访内网服务

示例: 配置拜访特定主机时应用特定的私钥文件

  • 以后主机存在多个私钥文件
  • 拜访特定主机时需应用特定私钥文件(非默认)
# 假如私钥文件门路: ~/.ssh/xxx_id_rsa
cat > ~/.ssh/config <<'EOF'
Host 192.168.0.143
    PubkeyAuthentication yes
    IdentityFile ~/.ssh/xxx_id_rsa
EOF
# 留神 config 文件和私钥文件的权限都必须是 600
chmod 600 ~/.ssh/config

公钥认证

ssh-keygen 命令

生成密钥对

ssh-keygen [选项]

选项
    -t < 密钥类型 =rsa>         # 指定密钥类型: dsa|ecdsa|ed25519|rsa|rsa1
    -C <comment=$USER@$HOSTNAME>            #  正文(追加在公钥文件最初)

留神:

  • 生成密钥对肯定是在客户端上做, 而后再将公钥传给服务端.
  • 默认生成的文件

    • ~/.ssh/id_rsa
    • ~/.ssh/id_rsa.pub

ssh-copy-id 命令

将公钥 (通过 ssh) 拷贝到指标主机

ssh-copy-id 选项 [user@]hostname

选项
    -n                                            # dry-run, 不真正执行命令
    -i <identity_file=~/.ssh/id_rsa.pub>        # 手动指定公钥文件
    -p port
    -o ssh_option

留神:

  • 指标主机的公钥存储文件 ~/.ssh/authorized_keys, 600 权限

scp 命令

近程文件复制

scp [选项] <src> <dest>

选项
    -C      容许压缩
    -r      递归复制整个目录
    -P         port

src 和 dest 能够是以下任意的
    [<user>@]<host>:/remote/path    # 指定近程文件或目录
    /local/path                        # 指定本地文件或目录
    
示例
    scp a.txt 192.168.0.16:/tmp/    # 拷贝本地的 a.txt 到近程的 /tmp/ 目录下

传递大文件更举荐用 rsync(断点续传, 压缩)

rsync 命令

疾速、通用的近程和本地文件传输工具

语法
    # 本地复制
    rsync [选项] <src> <dest>
    
    # 通过 ssh 近程复制
    Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
    Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
    
    # 通过 rsync 服务
    Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
             rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
    Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
          rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST    
    
选项
    # 罕用
    -P                         # 断点续传(保留那些因故没有齐全传输的文件,以便放慢随后的再次传输), 等同于 --partial --progress
    -z, --compress             # 对备份的文件在传输时进行压缩解决, 放慢传输
    -e, --rsh=<COMMAND>     # 以 ssh 形式进行数据传输, -e "ssh -p2222" 指定连贯 2222 端口, 如果是 ssh 形式默认应用 22 端口

    --bwlimit                # 限速, 字节 / 秒
    -r,--recursive             # 对子目录以递归模式解决

    --progress                 # 显示传输进度
    --partial                # 断点续传
    -c, --checksum             # 关上校验开关,强制对文件传输进行校验。(而不是基于文件的批改工夫及大小)
    --delete                 # 删除那些 DEST 中 SRC 没有的文件。--delete-before            # rsync 首先读取 src 和 dest 的文件列表, 并删除那些 DEST 中 SRC 没有的文件, 之后再执行同步操作。# 因为分两步骤执行, 因而须要更多的内存耗费以及工夫耗费. 因而仅在 dest 的可用空间较小时用这种形式.
    --delete-excluded        # 除了删除 DEST 中 SRC 没有的文件外, 还会一并移除 dest 中 --exclude 或 --exclude-from 指定的文件 / 目录.
    -u, --update            # 如果 DEST 中的文件比 SRC 新(指批改工夫), 就不会对该文件进行同步.    
    --exclude=PATTERN         # 指定排除不须要传输的文件, 比方 --exclude="logs" 会过滤掉文件名蕴含 "logs" 的文件或目录, 不对齐同步.
    --include=PATTERN         # 指定不排除而须要传输的文件模式。-v, --verbose             # 具体模式输入。-q, --quiet             # 精简输入模式。-a, --archive             # 归档模式,示意以递归形式传输文件,并放弃所有文件属性,等于 -rlptgoD
    -t, --list              # list the contents of an archive
    -l, --links                # 保留软链
    -L, --copy-links        # 同步软链时, 以理论的文件来代替
    -p, --perms             # 放弃文件的权限属性
    -o, --owner             # 保留文件的属主(super-user only)
    -g, --group             # 保留文件的属组
    -D                        # 放弃设施文件信息, 等同于 "--devices --specials"
    -t, --times                # 放弃文件的工夫属性
    

示例
    rsync -P -z -r root@xx.xx.xx.xx:/data/transfer/archive.zip /data/archive.zip
    rsync -P -e "ssh -p2222" --bwlimit=200 root@xx.xx.xx.xx:/data/transfer/archive.zip /data/archive.zip

当带宽足够大时, 应用 -z 反而会拖慢速度.

FTP 服务

ftp 协定

ftp 协定: 文件传输协定

  • 须要同时建设命令链路 (21 端口, 先建设, 传输命令) 和数据链路(传输文件名称, 目录名称, 文件数据)
  • 数据链路

    • 被动模式

      命令链路建设后, 服务端 (应用 20 端口) 被动向客户端发动建设数据链路申请(理论可能会被客户端防火墙之类的挡住, 导致无响应)

    • 被动模式(理论罕用)

      命令链路建设后, 服务端会凋谢大于 1024 的端口被动等客户端连贯.

vsftpd 服务

# 装置必要软件
## vsftpd 是服务端
## ftp 是客户端
yum install vsftpd ftp

# 启动 vsftpd 服务
systemctl start vsftpd.service && systemctl enable vsftpd.service

通过 man 5 vsftpd.conf 能够查看配置文件详解.

留神

  • 默认提供匿名账号: ftp
  • 默认以后零碎的账号

vsftpd 配置文件

  • /etc/vsftpd/vsftpd.conf 主配置文件
  • /etc/vsftpd/ftpusers 用户相干
  • /etc/vsftpd/user_list 用户黑白名单, 比方禁止 root 登录

vsftpd.conf 配置

anonymous_enable=YES        # 是否容许匿名用户(ftp)
local_enable=YES            # 是否容许零碎本地用户账号登录. 同时会受到 SELinux(ftp_home_dir 项)的影响
write_enable=YES            # 本地用户是否可写
connect_from_port_20=YES    # 是否容许开启被动模式(不会影响被动模式)
userlist_enable=YES            # 是否启用用户黑白名单
userlist_deny=YES            # 管制用户列表是黑名单还是白名单, YES 示意黑名单. 
                            # 仅在 userlist_enable=YES 时失效
                            
                            
# 虚构用户配置相干
guest_enable=YES            # 容许虚构用户进行验证
guest_username=< 零碎用户名 >     # 指定登录身份为某个零碎用户
user_config_dir=/etc/vsftpd/< 零碎用户名 >config        # 指定虚构用户权限管制文件所在目录
allow_writeable_chroot=YES        # 虚构用户是否可写
pam_service_name=vsftpd.vuser    # 虚构用户的 "可插拔验证模块(pam)" 对应文件名称

YESNO 必须是大写的.

能够应用 man 5 vsftpd.conf 来查看该配置文件的帮忙

强制访问控制对 ftpd 的影响

# 查看 SELinux 中和 ftpd 相干的布尔配置项
getsebool -a | grep ftpd

# 批改
## -P    同时写入配置文件
## 0     示意 off, 敞开
## 1    示意 on, 关上
setsebool -P < 配置项名 > 1|0

默认匿名账号

  • 账号: ftp
  • 明码: 空
  • 默认目录: /var/ftp/

一般账号

  • 账号: 零碎账号
  • 明码: 零碎账号的明码
  • 默认目录: ~
  • 能拜访一般账号的 home 目录

ftpusers 配置

vsftp 虚构用户

示例: 新增 3 个虚构用户

# 1. 建设一个实在零碎账号
## 指定 /data/ftp 为该用户的 home 目录
## 指定该用户不可登录到零碎
useradd -d /data/ftp -s /sbin/nologin vuser

# 2. 编写存储虚构用户账号和明码的临时文件
## 该文件格式是: 一行虚构用户名, 一行对应明码
cat <<'EOF' > /etc/vsftpd/vuser.tmp
u1
123456
u2
123456
u3
123456
EOF

# 3. 将上述临时文件转成数据库专用格局
db_load -T -t hash -f /etc/vsftpd/vuser.temp /etc/vsftpd/vuser.db

# 4. 创立可插拔验证模块配置
cat <<'EOF' > /etc/pam.d/vsftpd.vuser
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
EOF

# 5. 批改 /etc/vsftpd/vsftp.conf 确保其中相干配置如下
    guest_enable=YES
    guest_username=vuser
    user_config_dir=/etc/vsftpd/vuserconfig
    allow_writeable_chroot=YES
    pam_service_name=vsftpd.vuser
    # 正文掉以下语句后, 就不再反对匿名和本地用户登录了
    #pam_service_name=vsftpd
    
# 6. 创立虚构用户配置所在目录
mkdir /etc/vsftpd/vuserconfig

# 7. 在虚构用户配置目录中创立和所要创立虚构用户名同名的配置文件
## 此处创立 u1, u2, u3 的配置文件
## 省略 u2 的...
## 省略 u3 的...
cat <<'EOF' > /etc/vsftpd/vuserconfig/u1
local_root=/data/ftp            # 用户登录后进入的目录
write_enable=YES                # 可写
anon_umask=022
anon_world_readable_only=NO        # 可写?
anon_upload_enable=YES            # 可上传
anon_mkdir_write_enable=YES        # 可创立目录?
anon_other_write_enable=YES        # 可写?
download_enable=YES                # 可下载
EOF

# 8. 重启 vsftpd 服务
systemctl restart vsftpd.service

ftp 命令

ftp 客户端

ftp < 地址 >

选项

如果提醒 ” 没有到主机的路由 ”, 个别是因为被防火墙挡住.

相干命令

ls            # 在近程执行 ls
!ls            # 在本地执行 ls

pwd            # 在近程执行 pwd
!pwd        # 在本地执行 pwd

cd            # 切换近程目录
lcd            # 切换本地目录

put    <file>        # 上传文件, 若提醒无权限则应查看 "write_enable" 配置项
get <file>        # 下载文件

samba 服务

samba 服务

  • 应用 smb 协定
  • 应用 cifs 文件系统
  • /etc/samba/smb.conf 配置文件

smb 协定是微软持有的版权, 用于 windows 之间的共享.

而 samba 则是模仿这种协定, 次要用于共享给 windows.

若是 Linux 之间的共享则倡议应用 nfs

# 装置
yum install samba

# 服务
systecmtl start|stop|restart|reload smb.service

配置文件

配置文件 /etc/samba/smb.conf 局部格局阐明

[global]                        # 全局设置
    workgroup = SAMBA
    security = user

    passdb backend = tdbsam

    printing = cups
    printcap name = cups
    load printers = yes
    cups options = raw


[share]                        # 共享名
    comment = my share
    path = /data/share        # 共享门路
    read only = No            # 是否只读, No 示意可写

man 5 smb.conf 可查看该配置文件的帮忙文档

smbpasswd 命令

samba 用户的创立和删除

smbpasswd [选项]

选项
    -a         # 增加用户(零碎中必须有一个同名的用户, samba 用户拜访权限是参考零碎同名用户的)
    -x        # 删除用户
    
    -s        # silent, 从规范输出上读取原口令和新口令, 罕用于脚本解决 smb

新创建的用户默认会间接共享出本人的 home 目录, 也就是 /home/ 用户名 这个目录.

pdbedit 命令

samba 用户查看

pdbedit [选项]

选项
    -L        # 查看用户

示例

# 1. 创立零碎用户, 此处以 user1 为例
useradd user1

# 2. 创立同名 samba 用户
echo -e "123456\n123456" | smbpasswd -a user1

# 3. 启动 samba 服务
systemctl start smb.service

# 4. 应用
## windows 客户端能够通过映射网络驱动器或 windows 共享来应用
## Linux 客户端能够通过磁盘挂载应用(将 127.0.0.1 上的 /home/user1 挂载到了以后的 /mnt 目录)
### -t cifs 可省略, 由 mount 自行判断
### 输出明码后就挂载胜利了
### 挂载结束后可通过 df -hT 或 mount | tail -1 查看挂载信息
mount -t cifs -o username=user1 //127.0.0.1/user1 /mnt        # 挂载后面在 /etc/samba/smb.conf 里配置的 [share] 共享所指定的目录
mount -t cifs -o username=user1 //127.0.0.1/share /mnt2        # 此处举例, 挂载在 /mnt2 文件夹上

# 不须要后就卸载掉
umount /mnt
umount /mnt2

nfs 服务

次要用于 Linux 之间的共享服务.

默认已装置

治理

systemctl start|stop|reload nfs.service

/etc/exports 主配置文件

man 5 exports 可查看帮忙

配置格局

< 共享目录 > < 容许起源主机 >(权限)...

                    ???? 这里不得有空格
                    可指定多个

共享目录
    必须是已存在的目录.

容许起源主机
    *            # 任意主机
    具体 ip       # 指定该 ip 可拜访
    
权限(用逗号分隔)
    rw                # 读写权限
    ro                # 只读权限
    sync            # (内存)数据同步写入磁盘, 防止失落数据
    all_squash        # 应用 nfsnobody 零碎用户
    
示例
/data/share *(rw,sync,all_squash)

若权限设置了 all_squash, 则会应用 nfsnobody 这个用户来做实际操作, 因而须要将该共享目录的属主和属组设为 nfsnobody

chown -R nfsnobody:nfsnobody /data/share/

showmount 命令

显示对于 NFS 服务器文件系统挂载的信息

showmount [选项] <host>

选项
    -e, --exports    # 查看所有共享的目录

挂载

mount 主机:/path/dir /local/path/to/mount

示例
    mount localhost:/data/share /mnt        # 将 localhost 上共享的 /data/share 目录挂载到本地的 /mnt 目录

Nginx/OpenResty

  • Nginx(engine X) 是一个高性能的 Web 和反向代理服务器.
  • Nginx 反对 HTTP, HTTPS 和电子邮件代理协定

    Nginx 模块因为是用 c /c++ 编写的, 要增加新模块还须要从新编译.

  • OpenResty 是基于 Nginx 和 Lua 实现的 Web 利用网关, 集成了大量的第三方模块.

装置

# 增加 yum 源
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

# 装置 openresty
yum install -y openresty

治理

systemctl start|reload|stop openresty

配置文件

/usr/local/openresty/nginx/conf/nginx.conf

Nginx 配置

/usr/local/openresty/nginx/conf/nginx.conf

worker_processes  1;        # 配置多少个 worker 过程, 最大值倡议不大于 CPU 外围数

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;

events {
    # use epoll;
    worker_connections  1024;        # 每个 worker 容许的并发连贯, 超过会返回 503 Service Unavailable 谬误
}

http {
# 此处的配置会对上面所有 server 失效

    # 拜访日志格局定义
    log_format  main  '$remote_addr - $remote_user [$time_local]"$request"''$status $body_bytes_sent "$http_referer" ''"$http_user_agent""$http_x_forwarded_for"';
    
    # 拜访日志记录文件及采纳的格局配置
    access_log  logs/access.log  main;

    # sendfile 和 tcp_nopush 是在内核层面上优化传输链路
    sendfile        on;            # 传输文件时的优化: 间接在内核中将文件数据拷贝给 socket.
    tcp_nopush     on;            # 仅 sendfile 启用时失效, 将 http 头和实体一起返回, 缩小报文段数量

    keepalive_timeout  65;        # HTTP 协定的 keepalive, 建设长连贯, 重用 TCP 连贯
    
    gzip  on;                    # 传输时启用 gzip 压缩, 节俭带宽, 造成 CPU 额定耗费.

    server {
        listen       80;            # 监听端口
        server_name  localhost;        # 域名(虚拟主机)
        
        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}

上述配置中的相对路径是基于编译 nginx 时指定的特定门路, 个别是 nginx 所在目录, 对应此处是 `/usr/local/openresty/nginx/

LNMP

MySQL

  • mariadb 是 MySQL 的社区版
# 装置
# mariadb 是客户端
# 
yum install mariadb mariadb-server

批改配置文件 /etc/my.cnf

[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'

或者是采纳 utf8mb4 编码, 兼容 4 字节的 unicode, 须要存 emoji 表情的话应应用 utf8mb4

PHP

yum install php-fpm php-mysql

systemctl start php-fpm.service

默认源的版本是 5.4, 须要更高的能够用 webtatic 源

此处仅作示范

Nginx

server {
    location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

通过 fastcgi 协定将申请转发给 php-fpm

DNS 服务

DNS 服务介绍

  • DNS(Domain Name System) 域名零碎
  • FQDN(Full Qualified Domain Name) 齐全限定域名
  • 域分类: 根域、顶级域(TLD)
  • 查问形式: 递归、迭代
  • 解析形式: 正向解析(主机 -> ip)、反向解析(ip -> 主机)
  • DNS 服务器的类型: 缓存域名服务器、主域名服务器(master)、从域名服务器(salve)
www.baidu.com.
????        ????      ????
主机名     域名      根域


.com    顶级域
.        根域

BIND 软件

提供 DNS 服务

# 装置
## bind 提供服务的软件包
## bind-utils DNS 服务的相干工具
yum install bind bind-utils

# 服务治理
systemctl start named.service

主配置文件: /etc/named.conf

options {listen-on port 53 { any;};        // 监听端口及对应网卡
    ...    
    allow-query     {any;};        // any    容许任何人查问
}

// 根域
zone "." IN {
    type hint;
    file "named.ca";                // /var/named/named.ca
};

named-checkconf

确认配置文件是否正确

named-checkconf

………..DNS 本节课后续略过, 看不下去

NAS

NAS(Network attached storage)网络从属存储

反对的协定:

  • nfs
  • cifs
  • ftp

个别是通过创立磁盘阵列 RAID 后, 再通过上述协定共享.

创立步骤

假如此处提供了 2 个新硬盘

  • /dev/sde
  • /dev/sdf

1. 创立共享空间

# 磁盘分区
fdisk /dev/sde
fdisk /dev/sdf

# 创立 RAID
## 此处创立 RAID1 级别的磁盘阵列
mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sd{e,f}1

# 长久化 RAID 配置信息
mdadm --detail --scan --verbose > /etc/mdadm.conf

# 通过逻辑卷的形式以不便后续扩容
## 初始化物理卷
pvcreate /dev/md0
## 创立卷组
vgcreate vg1 /dev/md0
## 创立逻辑卷
### 此处示例, 因而只创立个 200M 的逻辑卷
lvcreate -L 200M -n nas vg1

# 分区格式化
mkfs.xfs /dev/vg1/nas

# 分区挂载
mkdir /share
mount /dev/vg1/nas /share

2. 通过协定共享

# 创立专用用户 shareuser
useradd shareuser -d /share/shareuser
echo 123456 | passwd --stdin shareuser

# 1. 配置 ftp 共享 - 通过 shareuser 用户登录 ftp 并拜访 home 目录 (也能够用虚构用户)
确认 /etc/vsftpd/vsftpd.conf 配置
    pam_service_name=vsftpd
    local_enable=YES
    write_enable=YES

systemctl restart vsftpd.service

# 2. 配置 samba 服务
echo -e "123456\n123456" | smbpasswd -a shareuser
systemctl restart smb.service

# 3. 配置 nfs 服务
## 配置为 ro (nfs 因为没有用户级别的限度, 因而这种状况下不举荐设置为 rw)
echo '/share/shareuser *(ro)' >> /etc/exports
systemctl restart nfs.service
## 配置为 rw (配合 facl 权限访问控制列表)
echo '/share/shareuser *(rw,sync,all_squash)' >> /etc/exports
setfacl -d -m u:nfsnobody:rwx /share/shareuser
setfacl -m u:nfsnobody:rwx /share/shareuser

正文完
 0