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

Linux服务器组建与管理

部署并配置DNS服务器

yum install bind bind-utils -y

再编辑/etc/named.conf

修改 listen-on port 53 { any; };

 allow-query     { any; };

创建并编辑正向区域文件 /var/named/cyxcyxcyx.com.zone

创建并编辑反向区域文件 /var/named/80.168.192.in-addr.arpa.zone:

编辑 /etc/named.rfc1912.zones 文件,添加正向和反向区域的引用:

启动并设置开机自启

systemctl start named

systemctl enable named

在另外一台服务器上添加一个dns解析地址,解析到这台服务器

vi /etc/sysconfig/network-scripts/ifcfg-ens33

DNS1=192.168.80.128

在另一台主机上测试是否能解析

在测试是否可以解析到ftp服务器和samba服务器

安装ftp服务我使用脚本

#!/bin/bash

# 全局变量定义

VUSER_HOME="/data/ftp"

VUSER_CONF_DIR="/etc/vsftpd/vsftpd_user_conf"

VUSER_DB="/etc/vsftpd/vsftpd_login.db"

VUSER_LIST="/etc/vsftpd/vusers.list"

SYSTEM_USER="vuser"

# 函数定义

log_info() { echo -e "\033[34m[INFO] $1\033[0m"; }

log_error() { echo -e "\033[31m[ERROR] $1\033[0m"; }

check_command() { command -v $1 >/dev/null || { log_error "$1未安装,安装失败!"; exit 1; } }

# 环境检查

log_info "开始环境检查..."

check_command yum

check_command db_load

# 一、安装依赖包

log_info "开始安装vsftpd及依赖..."

yum install vsftpd libdb libdb-utils -y >/dev/null

if [ $? -ne 0 ]; then

    log_error "yum安装失败,请检查网络连接或系统状态!"

    exit 1

fi

# 二、关闭防火墙和SELinux

log_info "关闭防火墙..."

systemctl stop firewalld >/dev/null

systemctl disable firewalld >/dev/null

log_info "关闭SELinux..."

setenforce 0 >/dev/null

if ! grep -q "SELINUX=disabled" /etc/selinux/config; then

    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

fi

# 三、创建虚拟用户

log_info "创建虚拟用户列表..."

cat > "$VUSER_LIST" <<EOF

oppic

123456

userA

123456

userB

123456

EOF

# 四、生成虚拟用户数据库

log_info "生成认证数据库..."

db_load -T -t hash -f "$VUSER_LIST" "$VUSER_DB" >/dev/null

if [ $? -ne 0 ]; then

    log_error "数据库生成失败,请检查$VUSER_LIST格式!"

    exit 1

fi

chmod 600 "$VUSER_DB"

# 五、配置PAM认证

log_info "配置PAM认证..."

mv /etc/pam.d/vsftpd{,.bak} >/dev/null 2>&1

cat > /etc/pam.d/vsftpd <<EOF

#%PAM-1.0

auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required pam_userdb.so db=/etc/vsftpd/vsftpd_login

EOF

# 六、创建系统映射用户

log_info "创建虚拟用户主目录..."

mkdir -p "$VUSER_HOME"/{oppic,userA,userB}

chmod 755 "$VUSER_HOME"

log_info "创建系统映射用户..."

useradd -d "$VUSER_HOME" -s /sbin/nologin "$SYSTEM_USER" >/dev/null 2>&1

if [ $? -ne 0 ]; then

    log_error "用户$SYSTEM_USER创建失败,请检查权限!"

    exit 1

fi

chown -R "$SYSTEM_USER":"$SYSTEM_USER" "$VUSER_HOME"

# 七、配置vsftpd主文件

log_info "配置vsftpd主文件..."

cat > /etc/vsftpd/vsftpd.conf <<EOF

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_file=/var/log/xferlog

xferlog_std_format=YES

listen=YES

listen_ipv6=NO

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

guest_enable=YES

guest_username=$SYSTEM_USER

allow_writeable_chroot=YES

chroot_local_user=YES

user_config_dir=$VUSER_CONF_DIR

pasv_enable=YES

pasv_min_port=30000

pasv_max_port=30999

EOF

# 八、配置用户独立权限

log_info "创建用户独立配置..."

mkdir -p "$VUSER_CONF_DIR"

cat > "$VUSER_CONF_DIR/oppic" <<EOF

local_root=$VUSER_HOME/oppic

write_enable=YES

virtual_use_local_privs=YES

EOF

cat > "$VUSER_CONF_DIR/userA" <<EOF

local_root=$VUSER_HOME/userA

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

write_enable=YES

virtual_use_local_privs=YES

EOF

cat > "$VUSER_CONF_DIR/userB" <<EOF

local_root=$VUSER_HOME/userB

anon_upload_enable=YES

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

write_enable=YES

virtual_use_local_privs=YES

EOF

# 九、启动服务

log_info "启动vsftpd服务..."

systemctl restart vsftpd >/dev/null 2>&1

if [ $? -ne 0 ]; then

    log_error "服务启动失败,请检查配置文件!"

    exit 1

fi

systemctl enable vsftpd >/dev/null

# 十、验证测试

log_info "开始验证测试..."

FTP_SERVER_IP=$(hostname -I | awk '{print $1}')

echo -e "open $FTP_SERVER_IP\noppic\ntoppic\nexit" | ftp -n >/dev/null 2>&1

if [ $? -eq 0 ]; then

    log_info "\n安装成功!\n虚拟用户:oppic/userA/userB\n密码:123456/123456/123456"

    log_info "服务器地址:ftp://$FTP_SERVER_IP"

    log_info "被动模式端口范围:30000-30999"

else

    log_error -e "\n安装失败,请检查以下内容:"

    log_error "1. 确认SELinux已完全关闭"

    log_error "2. 检查$VUSER_DB权限是否为600"

    log_error "3. 检查防火墙是否已关闭"

fi

结果测试

挂载一块新磁盘分别创建PV、卷组和逻辑卷,将磁盘分区格式化后挂载到/data目录

部署samba服务并设置开机自启

yum install -y samba samba-client

systemctl start smb

systemctl enable smb 

挂载一块新磁盘/dev/sdb,分区并格式化(xfs)

开机自动挂载到/data目录

john用户属于manager经理组,对/data/manager目录拥有读写权限

mike用户属于market市场组,对/data/market目录拥有读写权限

admin用户属于管理员组,对上述两个目录均拥有读写权限

#!/bin/bash

#Samba本地用户认证共享配置脚本

#使用系统本地用户+组认证

#保持DNS服务器配置

#定义变量

DOMAIN="cyxcyxcyx.com"            

DNS_SERVER="192.168.80.129"   

SHARE_GROUPS=("manager" "market" "admin")

SHARE_USERS=(                       

    "john:manager"

    "mike:market"

    "admin:admin"

)

#安装必要软件包

yum install -y samba samba-client policycoreutils-python-utils

#配置DNS指向

cat > /etc/resolv.conf << EOF

search $DOMAIN

nameserver $DNS_SERVER

EOF

#配置Samba主文件

cat > /etc/samba/smb.conf << EOF

[global]

    workgroup = WORKGROUP

    security = user

    passdb backend = tdbsam

    printing = cups

    printcap name = cups

    load printers = yes

    cups options = raw

[shared]

    path = /data/share

    valid users = @users

    writable = yes

    browseable = yes

    create mask = 0664

    directory mask = 0775

[manager]

    path = /data/manager

    valid users = @manager, @admin

    writable = yes

    browseable = yes

    create mask = 0664

    directory mask = 0775

    force group = manager

[market]

    path = /data/market

    valid users = @market, @admin

    writable = yes

    browseable = yes

    create mask = 0664

    directory mask = 0775

    force group = market

EOF

#创建系统用户和组

for group in "${SHARE_GROUPS[@]}"; do

    groupadd -f $group

done

for user_info in "${SHARE_USERS[@]}"; do

    IFS=':' read -ra user_data <<< "$user_info"

    user=${user_data[0]}

    group=${user_data[1]}

    

    useradd -M -s /sbin/nologin -G $group $user

    echo "为 $user 设置SMB密码:"

    smbpasswd -a $user

done

#创建共享目录并设置权限

mkdir -p /data/{share,manager,market}

chmod 2775 /data/share /data/manager /data/market

chown :manager /data/manager

chown :market /data/market

chown :users /data/share

#配置SELinux

setsebool -P samba_export_all_rw=1

semanage fcontext -a -t samba_share_t "/data/share(/.*)?"

semanage fcontext -a -t samba_share_t "/data/manager(/.*)?"

semanage fcontext -a -t samba_share_t "/data/market(/.*)?"

restorecon -Rv /data

#防火墙配置

firewall-cmd --permanent --add-service=samba

firewall-cmd --reload

#重启服务

systemctl restart smb

systemctl enable smb

#验证命令提示

echo "配置完成!验证步骤:"

echo "1. 检查共享列表: smbclient -L localhost -U%"

echo "2. 访问共享示例:"

echo "   - 经理共享: smbclient //$(hostname)/manager -U john"

echo "   - 市场共享: smbclient //$(hostname)/market -U mike"

echo "   - 管理员测试: smbclient //$(hostname)/manager -U admin"

测试结果

在/data/manager目录创建测试文件sa.txt,并写入“samba test.”内容 将/var/log/secure文件复制到/data/market目录下

在客户端上使用john和admin用户访问”\\samba.abc.com”,查看测试文件sa.txt

在客户端上使用mike用户mount挂载到本地的目录,“mount -t cifs //samba.abc.com/market /opt/market -o username=mike,password=123456”,查看测试文件secure

相关文章:

  • 使用 Selenium 构建简单高效的网页爬虫
  • 4.1 代码随想录第三十二天打卡
  • ​Android 集成 Facebook 登录
  • 2025.4.6机器学习笔记:文献阅读
  • AI与.NET技术实操系列(四):使用 Semantic Kernel 和 DeepSeek 构建AI应用
  • Sink Token
  • Java关于抽象类和抽象方法
  • 使用Python解析PPT文件并生成JSON结构详解
  • 25 python 迭代器与生成器
  • 教你快速理解linux中的NUMA节点探测是干什么用的?
  • 配置多区域集成IS-IS和抓包分析
  • Python 机器学习库:Scikit-learn
  • Mysql之事务(上)
  • 后端思维之高并发处理方案
  • AI日报 - 2025年4月2日
  • 汇编学习之《test, cmp 指令》
  • vscode中的【粘滞滚动】的基本概念和作用,关闭了以后如何开启
  • 蚂蚁集团医疗AI战略启示:国产算力驱动下的医疗生态重构与场景深耕
  • WPF 浅述IsHitTestVisible属性
  • 上海某海外视频平台Android高级工程师视频一面
  • MSCI中国指数5月调整:新增5只A股、1只港股
  • 视频|王弘治:王太后,“先天宫斗圣体”?
  • 山东省市监局“你点我检”专项抽检:一批次“无抗”鸡蛋农兽药残留超标
  • 外交部亚洲司司长刘劲松会见印度驻华大使罗国栋
  • 技术派|更强的带刀侍卫:从054B型战舰谈谈世界护卫舰发展
  • 美英贸易协议|不,这不是一份重大贸易协议