Linux 运维知识梳理(2)系统服务管理

文章目录

一、Linux 高级命令

1、find

  • 作用

用来在指定目录下查找文件。

  • 基本语法
find 搜索路径 [选项 选项的值]

# 选项说明:
-name: 根据文件的名称搜索文件,支持 * 通配符
-type: f 普通文件,d 文件夹
-mtime: 根据文件的最后修改时间搜索。+day,几天前、-day,几天内
-size: 根据文件大小搜索文件。size,等于 size 值的文件、-size,小于 size 值、+size,大于 size 值
-exec: 将 find 查询到的结果,放入 {}
  • 案例

搜索 /etc 目录,找到 httpd.conf 文件

find /etc/ -name 'httpd.conf' -type f

搜索 /etc 目录,找到所有以 .conf 结尾的文件

find /etc/ -name '*.conf' -type f

搜索 /etc 目录,找到 3 天以前(不包含第三天)修改的 conf 文件

find /etc/ -name '*.conf' -type f -mtime +3

搜索 /etc 目录,找到 3 天以内修改的 conf 文件

find /etc/ -name '*.conf' -type f -mtime -3

删除 /var/log 目录中,3 天以前的日志文件

find /var/log/ -name '*.log' -type f | xargs rm -rf
find /var/log/ -name '*.log' -type f -exec rm -rf {} \;

将搜索结果移动到 /tmp 目录

find ./ -name '20210929--*.jpg' -type f -exec mv {} /tmp \;

搜索 /root 目录下,大小为 500M 的文件

find /root/ -type f -size 500M

搜索 /root 目录下,小于 500M 的文件

find /root/ -type f -size -500M

搜索 /root 目录下,大于 500M 的文件

find /root/ -type f -size +500M

2、dd

  • 作用

生成指定大小的文件。

  • 基本语法
dd if=/dev/zero of=文件路径 bs=单位块大小 count=单位块数量

# 参数说明
if: input file,输入文件,/dev/zero 是一个字符设备,会不断返回 0 值字节
of: output file,输出文件
bs: bytes,字节单位块大小
count: 字节单位块的数量
  • 案例

在 root 目录下生成一个 1g 大小的 test.file 文件

dd if=/dev/zero of=/root/test.file bs=1M count=1024

3、tree

  • 作用

用于以树状图列出目录的内容。

  • 基本语法
tree [选项] [路径]

# 选项说明
-C: 按照文件类型着色
-d: 只显示目录名称
-L: level,限制目录显示层级
  • 案例

展示 /var/log 目录下的文件信息

tree -C /var/log/

只展示到 /etc/ 目录下第二层

tree -C /etc/ -L 2

4、scp

  • 作用

实现 Linux 与 Linux 系统之间的文件传输

  • 基本语法
scp [选项] 远程用户名@IP地址:资源路径 本地文件路径
scp [选项] 本地文件路径 远程用户名@IP地址:资源路径 

# 选项说明
-r: 递归操作
-P: port,是指定数据传输用到的端口号
  • 案例

从远程主机下载文件到本地

scp root@192.168.1.150:/root/video.mp4 /root/

传输本地文件到其他主机

scp temp.sql root@192.168.1.150:/root/test.sql

下载远程主机的文件夹到本地

scp -r 192.168.1.11:/root/ ./

5、date

  • 作用

输出当前系统时间。

  • 基本语法
date +'时间格式'
%F:年-月-日
%T:时:分:秒
%Y:Year,年
%m:month,月
%d:day,日
%H:Hour,时
%M:minute,分
%S:second,秒
  • 案例

输出当前日期

[root@redis ~]# date +'%F'
2021-10-13

输出当前系统时间

[root@redis ~]# date +'%Y%m%d%H%M%S'
20211013220002

二、用户和用户组

1、用户的分类

  • 超级用户

超级用户,即管理员,root 。具有 所有权限,UID=0,并且绝对只能是 0

  • 系统用户

系统用户,也叫程序用户。一般是由程序创建,用于程序或者服务运行时候的身份。
默认 不允许登录系统 useradd testuser -s /sbin/nologin ,1 <= UID <= 999 。

  • 普通用户

大部分是由管理员创建,对系统具有有限的管理权限。 1000 <= UID <= 60000 。

2、创建用户

  • 作用

创建一个新用户或更新默认新用户信息

  • 基本语法
useradd  [选项 选项的值] 用户名

# 选项说明:
-d, --home-dir HOME_DIR,指定用户登录后的家目录。
-u, --uid UID,指定用户的 UID ,必须唯一。
-g, --gid GROUP,用户初始登陆组的组名或号码。组名必须已经存在。组号码必须指代已经存在的组。
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]],指定用户附加组,可以加入多个。
-s, --shell SHELL,指定用户所使用的shell。/bin/bash 或 /sbin/nologin。
-r, --system,创建一个系统账户。
  • 案例

创建 lisi 用户,并指定家目录为 /lisi

useradd -d /lisi lisi

创建 nginx 用户,不允许登录系统

useradd -s /sbin/nologin nginx

创建 mysql 系统用户,不允许登录系统

useradd -r -s /sbin/nologin mysql

3、修改用户

  • 作用

修改一个用户账户

  • 基本语法
usermod [选项] 用户名

# 选项说明:
-d, --home-dir HOME_DIR,指定用户登录后的家目录。
-u, --uid UID,指定用户的 UID ,必须唯一。
-g, --gid GROUP,用户初始登陆组的组名或号码。组名必须已经存在。组号码必须指代已经存在的组。
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]],指定用户附加组,可以加入多个。
-s, --shell SHELL,指定用户所使用的shell。/bin/bash 或 /sbin/nologin。
  • 案例

修改 lisi 用户的主组为 root

usermod -g 0 lisi 

修改 zhangsan 用户的家目录 /zhangsan

mkdir /zhangsan
usermod -d /zhangsan zhangsan
cp -a /etc/skel/. /zhangsan

禁止 zhangsan 用户登录

usermod -s /sbin/nologin zhangsan

4、删除用户

  • 作用

删除用户账户和相关文件

  • 基本语法
userdel [选项] 用户名

# 选项说明:
-r, --remove,用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。
-f, --force,用户在登录状态也强制删除
  • 案例

删除 wangwu 用户,不保留家目录文件

userdel -r wangwu

创建 admin 用户组,并指定 gid 为1200

groupadd -g 1200 admin

5、创建用户组

  • 作用

创建一个新组

  • 基本语法
groupadd  [选项 选项的值] 组名称

# 选项说明:
-g, --gid GID,组编号,0 表示超级用户 root 组、1-999 代表系统用户组,1000 之后普通用户组。
  • 案例

创建 admin 用户组,并指定 gid 为1200

groupadd -g 1200 admin

6、修改用户组

  • 作用

修改用户组

  • 基本语法
groupmod [选项] GROUP

# 选项说明:
-g, --gid GID,组编号,0 表示超级用户 root 组、1-999 代表系统用户组,1000 之后普通用户组。
-n, --new-name NEW_GROUP,修改用户组的名称
  • 案例

修改 admin 用户组名称为 administrator,并指定 gid 为1300

groupmod -g 1300 -n administrator admin

7、删除用户组

  • 作用

删除一个组,您不能移除现有用户的主组。在移除此组之前,必须先移除此用户。

  • 基本语法
groupmod [选项] GROUP

# 选项说明:
-g, --gid GID,组编号,0 表示超级用户 root 组、1-999 代表系统用户组,1000 之后普通用户组。
-n, --new-name NEW_GROUP,修改用户组的名称
  • 案例

删除 administrator 组

groupdel administrator

8、修改用户密码

  • 作用

修改用户密码

  • 基本语法
passwd [选项] [用户名]

# 选项说明:
--stdin: 使用标准输入修改密码
  • 案例

使用标准输入给 tester 用户修改密码

[root@localhost ~]# echo '123321' | passwd --stdin tester 
更改用户 tester 的密码 。
passwd:所有的身份验证令牌已经成功更新。

9、更改用户的账号信息

  • 作用

更改用户密码过期信息

  • 基本语法
chage [选项] 账号

# 选项说明:
-l: 账号的详细信息
-d: 用户密码的最后一次更改日期
-E: 指定账号过期时间
  • 案例

强制 tester 用户登录后修改密码

# 把密码的最后修改时间重置为 0
chage -d 0 tester

设置 tester 用户账号过期时间为 2022-01-01

chage -E '2022-01-01' tester

三、源码安装

1、configure 配置过程

  • 作用

配置软件的安装路径以及其他定制化功能

  • 基本语法
./configure [选项]

# 选项说明:
--prefix=PATH : 软件的家目录,默认 /usr/local 
--bindir=PATH : 命令目录,默认 $prefix/bin
--etcdir=PATH : 配置文件目录,默认 $prefix/etc
--mandir=PATH : man 文档目录,默认 $prefix/share/man
--locale=PATH : 语言编码,默认 $prefix/share/locale

2、make 编译过程

  • 作用

将其他语言的源代码打包成 Linux 可识别安装的程序。编译过程需要 gcc、gcc++ 软件的支持

  • 基本语法
make

3、make install 安装过程

  • 作用

将 make 编译过后的程序,根据 configure 的配置,安装到系统中

  • 基本语法
make install

4、安装后配置

  • 解决无法直接使用命令
# 配置环境变量
export PATH=/opt/axel/bin:$PATH
  • 解决找不到帮助文档
# 修改 man 配置
vim /etc/man_db.conf
MANPATH /opt/axel/share/man

5、卸载编译安装的软件

# 需要进入解压的源码包中
make uninstall # 卸载安装包
make distclean # 卸载编译与配置过程
# 删除软件安装目录
rm -rf /opt/axel/

四、YUM 安装

1、YUM 源分类

  • 本地源

YUM 仓库在本地(系统光盘\镜像文件)

  • 网络源

YUM 仓库不在本地,需要联网去第三方下载

阿里云:https://opsx.alibaba.com/mirror
网易163:http://mirrors.163.com
清华大学:http://mirrors.tuna.tsinghua.edu.cn

2、设置 YUM 缓存

# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever  # 软件包的缓存目录
keepcache=1  # 1开启缓存,0关闭
debuglevel=2  
logfile=/var/log/yum.log
···

3、仅 YUM 下载,不安装

yum install --downloadonly --downloaddir=/tmp/software/ samba

# 参数说明
--downloadonly        仅下载而不更新
--downloaddir=DLDIR   指定一个其他文件夹用于保存软件包

五、SSH 服务

  1. SSH 是 Linux 下远程管理的工具,相比于 Telnet 更安全,运维人员必备神器。
  2. SSH 全程是 Secure Shell,安全的 Shell,是 C/S 架构,默认端口为 22,TCP 协议。
  3. SSH 为商用软件,Linux 中默认安装的是 OpenSSH 开源版。

1、加密算法(了解)

  • 对称加密算法(DES)

在这里插入图片描述

  • 非对称加密算法(RSA)

在这里插入图片描述

  • 区别

在这里插入图片描述

2、openssh 安装

  • 安装命令
yum install -y openssh
  • 检查是否安装成功
[root@localhost ~]# rpm -qa | grep openssh
openssh-clients-7.4p1-21.el7.x86_64
openssh-7.4p1-21.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64
# 或
[root@localhost ~]# yum list installed | grep openssh
openssh.x86_64                        7.4p1-21.el7                     @anaconda
openssh-clients.x86_64                7.4p1-21.el7                     @anaconda
openssh-server.x86_64                 7.4p1-21.el7                     @anaconda
  • 查看软件生成的文件列表

客户端

[root@localhost ~]# rpm -ql openssh-clients 
# 客户端配置文件
/etc/ssh/ssh_config
# 客户端命令文件
/usr/bin/scp
/usr/bin/sftp
/usr/bin/slogin
/usr/bin/ssh
/usr/bin/ssh-add
/usr/bin/ssh-agent
/usr/bin/ssh-copy-id
/usr/bin/ssh-keyscan
/usr/lib64/fipscheck/ssh.hmac
/usr/libexec/openssh/ssh-pkcs11-helper
# man 手册
/usr/share/man/man1/scp.1.gz
/usr/share/man/man1/sftp.1.gz
/usr/share/man/man1/slogin.1.gz
/usr/share/man/man1/ssh-add.1.gz
/usr/share/man/man1/ssh-agent.1.gz
/usr/share/man/man1/ssh-copy-id.1.gz
/usr/share/man/man1/ssh-keyscan.1.gz
/usr/share/man/man1/ssh.1.gz
/usr/share/man/man5/ssh_config.5.gz
/usr/share/man/man8/ssh-pkcs11-helper.8.gz

服务端

[root@localhost ~]# rpm -ql openssh-server
# 服务端配置文件
/etc/pam.d/sshd
/etc/ssh/sshd_config
# 服务管理脚本
/etc/sysconfig/sshd
/usr/lib/systemd/system/sshd-keygen.service
/usr/lib/systemd/system/sshd.service
/usr/lib/systemd/system/sshd.socket
/usr/lib/systemd/system/sshd@.service
/usr/lib64/fipscheck/sshd.hmac
/usr/libexec/openssh/sftp-server
# 二进制文件
/usr/sbin/sshd
# 密钥生成工具
/usr/sbin/sshd-keygen
# man 手册
/usr/share/man/man5/moduli.5.gz
/usr/share/man/man5/sshd_config.5.gz
/usr/share/man/man8/sftp-server.8.gz
/usr/share/man/man8/sshd.8.gz
/var/empty/sshd

3、常用配置

禁止 root 登录

更改服务端配置文件 /etc/ssh/sshd_config,取消 PermitRootLogin 的注释,并将 yes 改为 no

PermitRootLogin no

更改 SSH 服务端口为 1022

更改服务端配置文件 /etc/ssh/sshd_config,取消 Port 的注释,并修改默认 22 端口

Port 1022

SSH 客户端首次登录不验证指纹

更改客户端配置文件 /etc/ssh/ssh_config,取消 StrictHostKeyChecking 的注释,并将 ask 改为 no

SSH 免密登录–基于公钥

  • 方法一:直接 ssh-copy-id 使用命令
# 生成一对公/私密钥,直接按回车确认
ssh-keygen 

# 使用命令将公钥发送到需要免密登录的主机上
ssh-copy-id root@192.168.1.11
  • 方法二:修改 authorized_keys 文件
# 生成一对公/私密钥,直接按回车确认
ssh-keygen

# 将公钥发送到需要免密登录的主机上
scp .ssh/id_rsa.pub root@192.168.1.12:/root/

# 将公钥内容追加到目标主机的 authorized_keys 文件中
cat id_rsa.pub >> .ssh/authorized_keys

六、rsync 命令

  • 作用

远程数据同步工具,增量备份

  • 安装
yum install -y rsync
  • 基本用法
推送: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
下载: rsync [OPTION...] SRC... [USER@]HOST:DEST

# 选项说明
-a:归档模式,相当于同时加了参数-rlptgoD
-v:显示同步过程的详细信息
-z:表示压缩传输
-P:显示传输速度
--delete:删除那些目标位置有,而原始位置没有的文件
--exclude:需要过滤的文件
  • 案例

上传到远程主机

# 将当前主机 /home/test 目录同步到远程主机 192.168.0.222 的 /home 下
rsync -az /home/test 192.168.0.222:/home/test

下载到本地主机

# 从远程主机 192.168.0.222 的 /home 下同步 test1 目录至当前主机的 /home 目录下
rsync -az 192.168.0.222:/home/test1 /home/test1

快速清空目录中的文件

rsync --delete-before -a -H -v --progress --stats /tmp/null/ /log/
/tmp/null/ 空目录
/log/ 需要清空的目录

# 参数说明
--delete-before 接收者在传输之前进行删除操作
--progress 在传输时显示传输过程
-a 归档模式,表示以递归方式传输文件,并保持所有文件属性
-H 保持硬连接的文件
-v 详细输出模式
--stats 给出某些文件的传输状态

给修改过 ssh 端口的主机传输文件

rsync -e 'ssh -p 1022' -az /root/test.txt 192.168.1.155:/root/

# 参数说明
-e 'ssh -p 1022'   使用目标主机 ssh1022 端口链接

七、rsync 服务

rsync 也可以作为一个服务 rsyncd.service 在系统中运行

角色IP
rsync 服务端192.168.1.150
rsync 客户端192.168.1.155

1、基本使用

  • 服务端操作
# 启动 rsyncd.service 服务
systemctl start rsyncd.service && systemctl enable rsyncd.service

修改配置文件 /etc/rsyncd.conf,添加需要同步的任务,无需重启

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

# uid = nobody  // 用户编号
# gid = nobody  // 所属组编号
# use chroot = yes     // 是否禁锢目录
# max connections = 4  // 最大连接数
# pid file = /var/run/rsyncd.pid  // pid 文件路径
# exclude = lost+found/   // 忽略 lost+found 目录
# transfer logging = yes  // 传输日志是否写入日志文件
# timeout = 900  // 传输超时时间
# ignore nonreadable = yes  // 是否忽略不可读文件
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2  // 以下格式文件不压缩

[ftp]  # 任务名
path = /home/ftp  				# 任务路径
comment = ftp export area 		# 任务备注
log file = /var/log/rsync.log	# 日志文件路径
  • 客户端操作

客户端测试能否连上 rsyncd.service 服务

[root@localhost ~]# rsync -a root@192.168.1.150::
ftp            	ftp export area

从服务端下载文件到本地

rsync -avz root@192.168.1.150::ftp /backup/ftp/

# 选项说明
ftp:任务名称
/backup/ftp/:保存到本地的路径

2、添加密码

  • 服务端操作

修改配置文件 /etc/rsyncd.conf

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

# uid = nobody  // 用户编号
# gid = nobody  // 所属组编号
# use chroot = yes     // 是否禁锢目录
# max connections = 4  // 最大连接数
# pid file = /var/run/rsyncd.pid  // pid 文件路径
# exclude = lost+found/   // 忽略 lost+found 目录
# transfer logging = yes  // 传输日志是否写入日志文件
# timeout = 900  // 传输超时时间
# ignore nonreadable = yes  // 是否忽略不可读文件
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2  // 以下格式文件不压缩

[ftp]  # 任务名
path = /home/ftp  				# 任务路径
comment = ftp export area 		# 任务备注
log file = /var/log/rsync.log	# 日志文件路径
auth users = jack,tom			# 用户名
secrets file = /etc/rsyncd.secrets	# 密码文件

创建密码文件 /etc/rsyncd.secrets

jack:abc123
tom:123abc

设置文件权限

chmod 600 /etc/rsyncd.secrets
  • 客户端操作
rsync -avz tom@192.168.1.150::ftp /backup/ftp/

3、实时同步

要想实现目录的实时同步,需要搭配 inotify 软件来实现
在这里插入图片描述

  • 服务端操作

安装 inotify-tools 工具

yum install -y epel-release
yum install -y inotify-tools 

查看安装后的文件

[root@localhost ~]# rpm -ql inotify-tools 
/usr/bin/inotifywait	# 等待命令
/usr/bin/inotifywatch	# 看守命令
···

基本语法

inotifywait -mrq -e create,delete,modify,attrib,move /home/ftp

# 参数说明
/home/ftp:被监控的目录
-m, --monitor:一直监控某个目录
-r, --recursive:递归,不仅监控目录,还要监控目录下的文件
-q, --quiet:获取操作信息,但不退出
-e <event>, --event <event>:哪些行为需要监控,create(创建)、delete(删除)、modify(修改)、attrib(属性修改)、move(移动)

通用脚本

#!/bin/bash

inotifywait -mrq -e create,delete,modify,attrib,move /home/ftp | while read events
do
    rsync -az --delete /home/ftp root@192.168.1.155:/backup
    echo "`date +%F%T`:出现事件 $events" >> /var/log/rsync.log 2>&1
done

八、FTP 服务

1、两种运行模式

  • 主动模式

FTP 的服务端主动连接客户端 ,客户端的防火墙可能会屏蔽服务端请求

1、客户端打开大于 1023 的随机命令端口和大于 1023 的随机数据端口,向服务器的 21 端口发起请求
2、服务端的 21 命令端口,响应客户端的随机命令端口
3、服务端的 20 数据端口,主动请求连接客户端的随机数据端口
4、客户端的随机数据端口进行确认

  • 被动模式(默认)

FTP 客户端主动连接服务端,服务器端需要打开大于1023 的数据端口打开,可通过配置文件修改端口范围

1、客户端打开大于 1023 的随机命令端口和大于 1023 的随机数据端口,向服务器的 21 端口发起请求
2、服务端的 21 命令端口,响应客户端的随机命令端口
3、客户端主动连接服务端大于 1023 的随机端口进行数据传输
4、服务端进行确认

2、安装 vsftpd 服务

yum 安装

yum install -y vsftpd.x86_64 

设置开机自启

systemctl start vsftpd.service && systemctl enable vsftpd.service

查看相关文件

[root@localhost xinetd.d]# rpm -ql vsftpd 
# vsftpd 主配置文件
/etc/vsftpd/vsftpd.conf
# 黑/白名单
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
# 命令文件
/usr/sbin/vsftpd
# 主目录
/var/ftp/pub
# vsftpd 其他相关配置文件
/etc/pam.d/vsftpd

3、FTP 的配置文件

anonymous_enable=YES		# 支持匿名用户登录
local_enable=YES			# 允许本地普通用户登录,默认进入到自己的家目录
write_enable=YES			# 文件可写,总开关
local_umask=022				# 反掩码
dirmessage_enable=YES		# 启用消息功能
xferlog_enable=YES			# 启用 xferlog 功能
connect_from_port_20=YES	# 支持主动模式
xferlog_std_format=YES		# xferlog 日志格式
listen=NO					# ftp 独立模式下的监听
listen_ipv6=YES				# 支持 ipv6 监听
pam_service_name=vsftpd		# 指定认证文件
userlist_enable=YES			# 启用用户列表,黑名单 /etc/vsftpd/user_list
tcp_wrappers=YES			# 支持 tcp_wrappers 功能,FTP 传输限速功能

4、实战案例

  • 创建普通用户 jack,拥有上传下载权限
  • 不允许匿名用户登录
  • 指定普通用户文档保存位置为 /data/developer 目录中
  • 禁锢普通用户登录后只能在 /data/developer 目录中活动

根据以下内容修改配置文件 /etc/vsftpd/vsftpd.conf,有则修改,无则添加,其他配置不变

anonymous_enable=NO			# 关闭匿名用户登录功能
local_root=/data/developer 	# 指定普通用户的默认数据目录
chroot_local_user=YES		# 禁锢普通用户在 local_root 指定的数据目录中活动
allow_writeable_chroot=YES	# 允许用户对 local_root 指定的目录有写的权限
# 1、创建普通用户 jack
useradd jack
echo 'jack123' | passwd --stdin jack

# 2、创建指定的目录
mkdir -p /data/developer

# 3、赋予 jack 用户 rwx 权限
setfacl -R -m u:jack:rwx /data/

# 4、重启 vsftpd.service 服务
systemctl restart vsftpd.service

5、黑/白名单

黑/白名单主要涉及两个配置文件

  • /etc/vsftpd/ftpusers(黑名单用户列表)
  • /etc/vsftpd/user_list(默认黑名单列表,可改为白名单)

区别

  1. ftpusers 中被禁用,可以输入密码,但是会返回 530 登录失败;而 user_list 直接拒绝并返回 530,不会输入密码。
  2. user_list 可以变成白名单,配置文件增加 userlist_deny=NO ,则变成白名单,只用在该文件中的用户,才可以访问 FTP 服务。
  3. 用户同时存在黑/白名单中,ftpusers 黑名单优先级高,用户会被禁止登录。

6、网络访问控制

  • 禁止和允许访问

/etc/hosts.allow(允许访问的主机)和 /etc/hosts.deny (禁止访问的主机)

# /etc/hosts.deny 配置示例
vsftpd:all						 # 全部拒绝访问
vsftpd:all EXCEPT 192.168.1.200	 # 全部拒绝访问,除了 192.168.1.200
vsftpd:192.168.1.100			 # 拒绝单个 IP 192.168.1.100
vsftpd:192.168.1.1/255.255.255.0 # 拒绝某个网段
vsftpd:192.168.1.1/255.255.255.0 EXCEPT 192.168.1.200 # 拒绝某个网段,除了 192.168.1.200
  • 上传下载限速

修改配置文件 /etc/vsftpd/vsftpd.conf,增加 local_max_rate 配置

local_max_rate=0 		# 0 表示不限速
local_max_rate=20000 	# 20kb/s

九、NFS 服务

1、NFS 功能

NFS(Network File System)网络文件系统

  • 主要用于 Linux 系统上实现文件共享的一种协议
  • 没有用户认证机制,且数据在网络上传输的时候是明文传送,一般在局域网中使用
  • 支持多节点同时挂载以及并发写入

2、安装 NFS 服务

安装命令

yum install -y rpcbind nfs-utils

配置文件 /etc/exports

/nfs/share	*(rw,sync,no_root_squash)

# 参数说明
/nfs/share:需要共享的目录
*:允许所有主机;192.168.1.100:共享给某个 IP;192.168.1.0/24:共享某个网段;
rw:读写权限;ro:只读权限
sync:实时同步,同时将数据写入到内存与硬盘中,保证不丢失数据
async:异步同步,先存入内存,再写入硬盘,这样效率更高,但可能会丢失数据
no_root_squash:当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员

3、案例

  • 服务端

编辑服务端配置文件 /etc/exports

/nfs/share      192.168.1.0/24(rw,sync,no_root_squash)

创建共享目录 /nfs/share

mkdir -p /nfs/share

启动服务

systemctl start rpcbind.service && systemctl enable rpcbind.service
systemctl start nfs.service && systemctl enable nfs.service
  • 客户端

首先检查 nfs 服务端挂载目录是否正常

# 192.168.1.5 -- nfs 服务端的IP
[root@localhost ~]# showmount -e 192.168.1.5	
Export list for 192.168.1.5:
/nfs/share 192.168.1.0/24

nfs 共享目录挂载到本地 /data 目录中

mkdir /data
mount -t nfs 192.168.1.5:/nfs/share /data/

查看挂载后的目录

[root@localhost ~]# df -Th
192.168.1.5:/nfs/share  nfs4       17G  1.6G   16G   10% /data

添加开机自动挂载,编辑客户端 /etc/fstab 文件

# 追加
192.168.1.5:/nfs/share /data	nfs	defaults,_rnetdev	1	1

十、SAMBA 服务

1、SAMBA 功能

  • SAMBA(Server Message Block)协议实现文件共享,也称之为 CIFS 系统(Common Internet File System)
  • 是 Windows 和 类 Unix 系统之间共享文件的一种协议
  • 客户端主要是 Windows;支持多节点同时挂载与写入。
  • 主要支持 Windows 与 Linux 下文件共享
  • 实现匿名与本地用户文件共享

2、安装 SAMBA 服务

yum install -y samba

配置文件 /etc/samba/smb.conf

[global] // 全局配置
        workgroup = SAMBA		// 定义工作组
        security = user			// 认证模式:share 匿名|user 用户密码|server 外部服务器用户密码

        passdb backend = tdbsam	// 密码的格式

        printing = cups			//
        printcap name = cups	//
        load printers = yes		// 是否加载打印机
        cups options = raw		// 打印机选项

[homes]	// 局部配置
        comment = Home Directories	// 描述
        valid users = %S, %D%w%S	// 
        browseable = No				// 隐藏共享名称
        read only = No				// 是否只读
        inherit acls = Yes			// 

[printers]	//共享的名称
        comment = All Printers	// 描述
        path = /var/tmp			// 本地的共享目录
        printable = Yes			// 打印选项
        create mask = 0600		// 
        browseable = No			// 隐藏共享名称

[print$]
        comment = Printer Drivers
        path = /var/lib/samba/drivers
        write list = @printadmin root
        force group = @printadmin
        create mask = 0664
        directory mask = 0775

3、案例

  • 服务端

编辑服务端配置文件 /etc/samba/smb.conf,追加以下内容

[smb_share]
        comment = samba share 	# 备注
        path = /samba/share 	# 需要共享的目录
        public = no			 	# 是否公共可用
        writable = yes		 	# 是否可写

创建 SAMBA 用户

[root@localhost ~]# useradd samba01
[root@localhost ~]# smbpasswd -a samba01
New SMB password:
Retype new SMB password:
Added user samba01.

创建共享目录 /samba/share

mkdir -p /samba/share

赋予 samba01 用户目录权限

setfacl -R -m u:samba01:rwx /samba/

启动服务

systemctl start nmb.service && systemctl enable nmb.service
systemctl start smb.service && systemctl enable smb.service
  • 客户端

控制面板 → 程序 → 启用或关闭 Windows 功能
在这里插入图片描述
勾选 客户端、自动删除 功能,重启
在这里插入图片描述
打开计算机、添加一个网络驱动器
在这里插入图片描述
输入 SAMBA 地址
在这里插入图片描述

输入刚刚创建的用户密码
在这里插入图片描述

十一、DNS 服务

1、DNS 两种解析方式

  • 正向解析

将主机域名转换成对应的 IP 地址,以便网络程序能够正确访问到对应的服务器主机

域名 ==> IP (A 记录)

  • 反向解析

将主机的 IP 地址转换为对应的域名,以便网络(服务)程序能够通过 IP 地址查询到主机的域名

IP ==> 域名 (PTR记录)

2、DNS 结构

DNS 结构:www.baidu.com.
在这里插入图片描述

  • 根域.

在整个 DNS 最上方一定是 . ,这个 DNS 服务器(称为 root),也叫做根域

  • 一级域名<顶级域|国家域>.com、.gov、.net

.com:商业公司
.net :互联网公司
.edu :教育、学校类
.gov :国家政府类
.io :存储设备
.cn :中国域名

  • 二级域名qq.com、baidu.com

二级域名自己购买,自己管理。

3、DNS 服务搭建

  • DNS 服务器端

安装命令

yum install -y bind

主配置文件

/etc/named.conf				# 主要控制访问权限,那些 IP 可以访问 DNS 服务器
/etc/named.rfc1912.zones	# 主要定义域名如何解析,解析到那个 IP 地址

修改 /etc/named.conf 文件,添加 any;,表示允许所有地址访问本 DNS 服务器
在这里插入图片描述

修改 /etc/named.rfc1912.zones,追加以下内容,liuli404.com 为自定义的域名

zone "liuli404.com" IN {
        type master;
        file "liuli404.com";
        allow-update { none; };
};

创建 liuli404.com 文件,该文件名必须与 /etc/named.rfc1912.zonesfile 定义的文件名一致。

cd /var/named/
cp -p named.localhost liuli404.com

liuli404.com 文件追加需要解析的记录值

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
# 将 www.liuli404.com 域名 A 记录解析到 192.168.1.8 上
www     A       192.168.1.8
# 将 demo.liuli404.com 域名 A 记录解析到 192.168.1.8 上
demo	A		192.168.1.8

验证配置是否正确

[root@localhost named]# named-checkzone liuli404.com liuli404.com 
zone liuli404.com/IN: loaded serial 0
OK

启动 DNS 服务

systemctl start named.service && systemctl enable named.service
  • 客户端

添加 DNS 服务器的地址 192.168.1.9

# 临时生效
echo 'nameserver 192.168.1.9' > /etc/resolv.conf

# 永久生效,编辑网卡文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1="192.168.1.9"

查看域名解析结果

[root@localhost ~]# nslookup www.liuli404.com
Server:		192.168.1.9
Address:	192.168.1.9#53

Name:	www.liuli404.com
Address: 192.168.1.8

[root@localhost ~]# nslookup demo.liuli404.com
Server:		192.168.1.9
Address:	192.168.1.9#53

Name:	demo.liuli404.com
Address: 192.168.1.8

十二、NTP 服务

1、NTP 功能

在企业级集群中,高度要求对时间的统一性,而有的集群处于内网环境,无法访问互联网,所以一般会在集群中搭建一个 NTP 时间服务器,用于给整个集群同步时间。

2、安装 NTP 服务

yum install -y ntp

配置文件 /etc/ntp.conf,添加以下内容,配置 192.168.1.0 网段的所有主机可以连接本 NTP 服务器

restrict 192.168.1.0 mask 255.255.255.0

并将时钟服务器改为国内源

server 0.cn.pool.ntp.org
server 1.cn.pool.ntp.org
server 2.cn.pool.ntp.org
server 3.cn.pool.ntp.org

最终如下图
在这里插入图片描述
启动 ntpd 服务

systemctl start ntpd.service && systemctl enable ntpd.service

客户端同步测试

[root@localhost ~]# ntpdate 192.168.1.7
22 Oct 18:03:50 ntpdate[12739]: adjust time server 192.168.1.7 offset -0.005640 sec
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值