当前位置: 首页 > news >正文

Linux centos 7 常用服务器搭建

准备两台centos 7服务器

一台用来做dns服务 另一台做samba和ftp服务

要求:服务需求 DNS服务器

为公司局域网内各主机提供域名解析

各主机均能通过域名访问FTP及Samba服务器

FTP服务器:

为公司员工提供图片存储和访问服务

公司UI设计师能够上传下载图片

外包人员能够上传浏览图片

Samba服务器:

为公司员工提供文件共享服务

可以直接修改服务器上的文件

安全需求:

加强系统账号安全

加强系统引导和登录安全

下面是配置dns的脚本:

#!/bin/bash
#function: 搭建主域名服务器脚本
#author: 20250325   IT小旋风# 判断是否是root用户
if [ "$USER" != "root" ]; thenecho "不是root用户,无法进行安装操作"exit 1
fi# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld && echo "防火墙已经关闭"
sed -i 's/SELINUX=*/SELINUX=disabled/g' /etc/selinux/config && setenforce 0 && echo "关闭selinux"# 安装bind服务
yum install bind bind-utils -y# 测试是否安装成功
if [ $? -eq 0 ]; thenecho "bind安装成功"
elseecho "bind安装失败,即将退出"exit 0
fi# 提示用户输入信息
read -p "请输入主服务器的 IP 地址: " MASTER_IP
read -p "请输入域名: " DOMAIN# 提取 IP 地址的网络段
NETWORK=$(echo $MASTER_IP | cut -d '.' -f 1-3)
REVERSE_NETWORK=$(echo $NETWORK | awk -F. '{print $3"."$2"."$1}')# 配置主服务器的 named.conf
cat << EOF > /etc/named.conf
options {listen-on port 53 { 127.0.0.1; $MASTER_IP; };listen-on-v6 port 53 { ::1; };directory       "/var/named";dump-file       "/var/named/data/cache_dump.db";statistics-file "/var/named/data/named_stats.txt";memstatistics-file "/var/named/data/named_mem_stats.txt";recursing-file  "/var/named/data/named.recursing";secroots-file   "/var/named/data/named.secroots";allow-query     { any; };recursion yes;dnssec-enable yes;dnssec-validation yes;bindkeys-file "/etc/named.iscdlv.key";managed-keys-directory "/var/named/dynamic";pid-file "/run/named/named.pid";session-keyfile "/run/named/session.key";
};logging {channel default_debug {file "data/named.run";severity dynamic;};
};zone "." IN {type hint;file "named.ca";
};zone "$DOMAIN" IN {type master;file "$DOMAIN.zone";
};zone "$REVERSE_NETWORK.in-addr.arpa" IN {type master;file "$REVERSE_NETWORK.rev";
};include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
EOF# 创建正向区域文件
cat << EOF > /var/named/$DOMAIN.zone
\$TTL 86400
@       IN      SOA     ns1.$DOMAIN. admin.$DOMAIN. ($(date +%Y%m%d01)      ; Serial3600            ; Refresh1800            ; Retry604800          ; Expire86400 )         ; MinimumIN      NS      ns1.$DOMAIN.
ns1     IN      A       $MASTER_IP
www     IN      A       $MASTER_IP
EOF# 创建反向区域文件
MASTER_LAST_OCTET=$(echo $MASTER_IP | cut -d '.' -f 4)
cat << EOF > /var/named/$REVERSE_NETWORK.rev
\$TTL 86400
@       IN      SOA     ns1.$DOMAIN. admin.$DOMAIN. ($(date +%Y%m%d01)      ; Serial3600            ; Refresh1800            ; Retry604800          ; Expire86400 )         ; MinimumIN      NS      ns1.$DOMAIN.
$MASTER_LAST_OCTET IN      PTR     ns1.$DOMAIN.
EOF# 修改文件权限
chown named:named /var/named/$DOMAIN.zone
chown named:named /var/named/$REVERSE_NETWORK.rev# 启动并设置开机自启
systemctl start named
systemctl enable namedecho "主服务器配置完成!"

脚本完成图:

添加以下解析

[root@localhost ~]# vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.168.133
nameserver 192.168.168.2

验证:

部署ftp服务

下面是部署的脚本

#!/bin/bash# 1. 安装 Vsftpd 服务
yum install vsftpd -y# 2. 创建 vsftpd 使用的系统用户,主目录为 /home/vsftpd,禁止 ssh 登录, 创建之后所有虚拟用户使用这个系统用户访问文件
useradd vsftpd -d /vsftpd -s /bin/false# 3. 创建虚拟用户主目录,比如虚拟用户叫 ftp1 和 ftp2
mkdir -p /vsftpd/ftp1/
mkdir -p /vsftpd/ftp2/
chown -R vsftpd.vsftpd /vsftpd/*# 4. 创建虚拟用户
echo "ftp1" > /etc/vsftpd/loginusers.conf
echo "123456" >> /etc/vsftpd/loginusers.conf
echo "ftp2" >> /etc/vsftpd/loginusers.conf
echo "456789" >> /etc/vsftpd/loginusers.conf# 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. 启用数据库文件
echo -e "auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers\naccount sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers" > /etc/pam.d/vsftpd# 7. 创建虚拟用户配置文件
mkdir -p /etc/vsftpd/userconf
echo -e "local_root=/vsftpd/ftp1\nwrite_enable=YES" > /etc/vsftpd/userconf/ftp1
echo -e "local_root=/vsftpd/ftp2\nwrite_enable=YES" > /etc/vsftpd/userconf/ftp2# 8. 修改主配置文件
cat << EOF > /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
EOF# 9. 重启服务使配置生效
systemctl restart vsftpdecho "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                ##开启smb服务           
systemctl enable smb nmb               ##开机自启systemctl restart smb nmb             ##重新启动


6.验证           smbclient //samba.hch.com/samba -U samba

samba脚本如下:

#!/bin/bash# 1. 安装 Samba
yum install samba -y
if [ $? -ne 0 ]; thenecho "Samba 安装失败,请检查网络和软件源。"exit 1
fi
echo "Samba 安装成功。"# 2. 创建共享目录并设置权限
mkdir -p /samba
chmod -R 777 /samba
if [ $? -ne 0 ]; thenecho "创建共享目录或设置权限失败,请检查磁盘空间和权限。"exit 1
fi
echo "共享目录创建并设置权限成功。"# 3. 创建系统用户并设置 Samba 密码
useradd -M samba
if [ $? -ne 0 ]; thenecho "创建系统用户失败,请检查用户名是否已存在或权限问题。"exit 1
fi
echo "请输入 samba 用户的 Samba 密码:"
smbpasswd -a samba
if [ $? -ne 0 ]; thenecho "设置 Samba 密码失败,请重试。"exit 1
fi
echo "Samba 用户密码设置成功。"# 4. 配置 Samba 共享
if [ -f /etc/samba/smb.conf ]; thencp /etc/samba/smb.conf /etc/samba/smb.conf.bak
fi
cat << EOF >> /etc/samba/smb.conf
[samba]
comment = IMMENGXIN
path = /samba
public = yes
browseable = yes
read only = no
EOF
if [ $? -ne 0 ]; thenecho "修改 Samba 配置文件失败,请检查权限。"exit 1
fi
echo "Samba 配置文件修改成功。"# 5. 启动、设置开机自启并重启 Samba 服务
systemctl start smb nmb
if [ $? -ne 0 ]; thenecho "启动 Samba 服务失败,请检查配置文件是否正确。"exit 1
fi
systemctl enable smb nmb
if [ $? -ne 0 ]; thenecho "设置 Samba 服务开机自启失败,请检查相关服务状态。"exit 1
fi
systemctl restart smb nmb
if [ $? -ne 0 ]; thenecho "重启 Samba 服务失败,请检查配置文件是否正确。"exit 1
fi
echo "Samba 服务已成功启动、设置开机自启并重启。"


http://www.mrgr.cn/news/96718.html

相关文章:

  • 解决 CMS Old GC 频繁触发线上问题技术方案
  • Spring Boot向Vue发送消息通过WebSocket实现通信
  • 初学STM32系统时钟设置
  • 【SpringBoot + MyBatis + MySQL + Thymeleaf 的使用】
  • Linux基础入门指南:用户管理、基本指令(一)
  • QT 非空指针 软件奔溃
  • RAG优化:python从零实现Proposition Chunking[命题分块]让 RAG不再“断章取义”,从此“言之有物”!
  • SpringIoC和DI
  • Sink Token
  • Day3 蓝桥杯省赛冲刺精炼刷题 —— 排序算法与贪心思维
  • Redis 6.2.6 生产环境单机配置详解redis.conf
  • 深入解析拓扑排序:算法与实现细节
  • 【LeetCode 热题100】347:前 K 个高频元素(详细解析)(Go语言版)
  • nodejs:midi-writer-js 将基金净值数据转换为 midi 文件
  • 如何本地部署RWKV-Runner尝鲜CPU版
  • 动态规划入门:从记忆化搜索到递推
  • TypeError: __init__() got an unexpected keyword argument ‘device_type‘
  • 深度学习--softmax回归
  • 高效内存位操作:如何用C++实现数据块交换的性能飞跃?
  • Time spent invoking a CUDA kernel