文章目录
一、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 服务
- SSH 是 Linux 下远程管理的工具,相比于 Telnet 更安全,运维人员必备神器。
- SSH 全程是 Secure Shell,安全的 Shell,是 C/S 架构,默认端口为 22,TCP 协议。
- 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' 使用目标主机 ssh 的 1022 端口链接
七、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
(默认黑名单列表,可改为白名单)
区别
- 在
ftpusers
中被禁用,可以输入密码,但是会返回530
登录失败;而user_list
直接拒绝并返回530
,不会输入密码。 user_list
可以变成白名单,配置文件增加userlist_deny=NO
,则变成白名单,只用在该文件中的用户,才可以访问FTP
服务。- 用户同时存在黑/白名单中,
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.zones
中 file
定义的文件名一致。
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