准备3台CentOS7
dns一台、ftp一台、samba一台
要求:可以通过域名访问ftp和samba
下面是dns部署脚本
#!/bin/bash
#DNS主域名服务
#user li 20250325
#检查是否为root用户
if
[ "$USER" != "root" ]
then
echo "错误:非root用户,权限不足!"
exit 0
fi
#防火墙与高级权限
systemctl stop firewalld && systemctl disable firewalld && echo "防火墙已经关闭"
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config && setenforce 0 && echo "关闭selinux"
#切换阿里云
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
#安装BIND相关工具
yum install -y bind*
if
[ $? = 0 ]
then
echo "安装成功"
else
echo "安装失败"
sleep 5
exit 0
fi
#设置变量
read -ep "请设置DNS区域名(如xiaomao.com):" a
read -ep "请输入本机IP地址:" b
read -ep "请输入反向解析的IP地址(如1.168.192):" c
ip="$b"
d=$(echo "$ip" | cut -d '.' -f 4)
#配置BIND主配置文件
cp /etc/named.conf /etc/named/conf.bak
sed -i 's/listen-on port 53 { 127.0.0.1; };/listen-on port 53 { any; };/g' /etc/named.conf
sed -i 's/allow-query { localhost; }/allow-query { any; }/g' /etc/named.conf
echo "zone "$a" IN {
type master;
file \"/var/named/$a.zone\";
};
zone "$c.in-addr.arpa" IN {
type master;
file \"/var/named/$c.rev\";
};" >> /etc/named.rfc1912.zones
#创建正向解析区域文件
echo "\$TTL 86400
@ IN SOA ns.$a. admin.$a. (
2025032501 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
@ IN NS ns.$a.
$a. IN A $b
ns IN A $b
" > /var/named/$a.zone
#创建反向解析区域文件
echo "\$TTL 86400
@ IN SOA ns.$a. admin.$a. (
2025032501 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
@ IN NS ns.$a.
$d IN PTR $a.
" > /var/named/$c.rev
#调整权限
chown named:named /var/named/$a.zone /var/named/$c.rev
chmod 640 /var/named/$a.zone /var/named/$c.rev
#启动BIND服务并设置为开机自启
systemctl enable named && systemctl start named
if
[ $? = 0 ]
then
echo "服务启动成功"
else
echo "破产,10秒后退出"
sleep 10
exit 0
fi
在此基础上添加以下
vim /var/named/wcl.com.zone
$TTL 86400
@ IN SOA ns.wcl.com. admin.wcl.com. (
2025032501 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
@ IN NS ns.wcl.com.
wcl.com. IN A 192.168.43.63
ns IN A 192.168.43.63
ftp IN A 192.168.43.250
samba IN A 192.168.43.63
[root@dns ~]# vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.43.1
nameserver 192.168.43.63
验证
部署ftp服务
1 安装Vsftpd服务
yum install vsftpd -y
2 创建vsftpd使用的系统用户,主目录为/home/vsftpd,禁止ssh登录, 创建之后所有虚拟用户使用这个系统用户访问文件
useradd vsftpd -d /vsftpd -s /bin/false
3 创建虚拟用户主目录,比如虚拟用户叫ftp1
mkdir -p /vsftpd/ftp1/
mkdir -p /vsftpd/ftp2/
chown -R vsftpd.vsftpd /vsftpd/*
4 创建虚拟用户
vi /etc/vsftpd/loginusers.conf
ftp1
123456
ftp2
234567
5 创建数据库文件
db_load -T -t hash -f /etc/vsftpd/loginusers.conf /etc/vsftpd/loginusers.db
chmod 600 /etc/vsftpd/loginusers.db
chmod 600 /etc/vsftpd/loginusers.conf
6 启用数据库文件
vi /etc/pam.d/vsftpd # 注释掉所有内容后,增加下面的内容
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers
7 创建虚拟用户配置文件
mkdir -p /etc/vsftpd/userconf
这里的文件名称必须与虚拟用户名一致
vi /etc/vsftpd/userconf/ftp1
local_root=/vsftpd/ftp1
write_enable=YES
vi /etc/vsftpd/userconf/ftp2
local_root=/vsftpd/ftp2
write_enable=YES
8 修改主配置文件
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
allow_writeable_chroot=YES
#网络与端口
listen=NO
listen_ipv6=YES
pasv_min_port=40000
pasv_max_port=40010
listen_port=21
#超时与并发
idle_session_timeout=300
data_connection_timeout=600
max_clients=3000
max_per_ip=3000
#虚拟用户
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/userconf
virtual_use_local_privs=YES
#日志与传输
xferlog_enable=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
#其他配置
use_localtime=YES
ftpd_banner=Welcome to blah FTP service.
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
dirmessage_enable=YES
connect_from_port_20=YES
async_abor_enable=YES
9 重启服务使配置生效
systemctl restart vsftpd
验证:
部署samba服务
1. yum install samba -y
2. mkdir -p /samba
chmod -R 777 /samba
3. useradd -M samba #创建系统用户不创建属主目录
smbpasswd -a samba #为其设置samba密码
4. vim /etc/samba/smb.conf
[samba]
comment = IMMENGXIN ##共享的描述性注释
path = /samba ##共享目录的实际路径
public = yes ##表明允许未授权的用户访问该共享
browseable = yes ##表示这个共享在网络中是可见的
read only = no ##意味着客户端对该共享目录具备读写权限
5. systemctl start smb nmb
systemctl enable smb nmb
systemctl restart smb nmb
6.验证 smbclient //192.168.43.63/samba -U samba