收藏文章 楼主

linux centos 手动和自动搭建 ftp 创建虚拟用户 并使用 ftp 命令上传和下载文件

版块:自动化运维linux   类型:精华/置顶   作者:小绿叶技术博客   查看:3158   回复:5   获赞:0   时间:2020-12-08 00:09:51

l

 #  手动搭建

wget www.eisc.cn/file/shell/centos-yum.sh ; sh centos-yum.sh

                                                                        # 切换yum 源

yum -y install vsftpd                                       # 安装ftp 软件

find /etc/vsftpd -name "vsftpd.conf"             # 查找ftp 配置文件




 #  自动搭建

#!/bin/bash

setenforce 0 临时关闭selinux

getenforce # 查看selinux状态

sed -i "s/SELINUX\=.*/SELINUX=disabled/g" /etc/selinux/config

# 永久关闭selinux,重启系统生效

repo="centos-yum.sh"

if [ ! -e $repo ]; then                 # -e 判断文件存在;参考:Shell if 条件判断文件或目录

yum install -y wget

wget www.eisc.cn/file/shell/centos-yum.sh ; sh centos-yum.sh

else

echo "yum已经切换"

fi

vsftpdinstall(){

vsftpdc=(`find /etc/vsftpd -name "vsftpd.conf" | sed "s/ //g"`) # shell 小括号属性是 定义数组变量 lsnginx   它的值是一条命令的执行结 果

echo "

vsftpd 配置文件总个数为:${#vsftpdc[*]}

列出 nginx 配置文件"    ${vsftpdc[*]}         # [*]  星号列出所有元素, 星号改成1 为指定角标1,含义为第二个元素,默认从0开始

if [ ${#vsftpdc[*]} -lt 1 ]                     # -lt 小于; $ 为空,! 非运算; $? 判断上一条命令执行状态,0正常;  参考:linux shell $$,$! 等的特殊用法

then

echo "

配置文件为空,#开始安装vsftpd

安装vsftp需要的密码验证模块等环境"

#yum -y install pam pam-devel db4 de4-devel db4-tcl vsftpd

yum -y install vsftpd

mkdir -p /var/ftp/virtual                               # -p 自动创建父目录文件夹: [?v?? t??(?) l] 虚拟

useradd vsftpd -M -s /sbin/nologin      # 创建 vsftpd 用户: ,如果此目录不存在,则同时使用-m选项,可以创建主目录。

                                                                # -s Shell文件 指定用户的登录Shell。

useradd ftpvload -d /var/ftp/ -s /sbin/nologin

                                                                #  -d 目录 指定用户主目录

sleep 3                                                 # 等待 3 秒

chown -R ftpvload.ftpvload /var/ftp/    # -R 目录拥有者ftpvload:ftpvload  其中 . 可以换成 :

sleep 5

echo "#-------------------------- 开始配置vsftpd --------------------------#"

mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back

                                                                # mv 重命名

# 注意配置文件每行末尾不能有空格或注释

echo "

pasv_promiscuous=YES

#[prəˈmɪskjʊəs] 混杂    ,否则导致被动模式无法ls查看文件

anonymous_enable=NO

#  [?? n? n? m? s] 匿名:匿名登录

local_enable=YES

#  [?l?? k(?)l] 本地          [?? ne? b(?)l] 允许

write_enable=YES

#  [r?? t] 写,权限

local_umask=022

#umask = 022 时,新建的目录 权限是755,文件的权限是 644

#umask = 077 时,新建的目录 权限是700,文件的权限时 600

#vsftpd的local_umask和anon_umask借鉴了它

anon_upload_enable=NO

# anonymous 的简写:匿名,上传文件

anon_mkdir_write_enable=NO

dirmessage_enable=YES

# 允许为目录配置显示信息,显示每个目录下面的message_file文件的内容。

xferlog_enable=YES

# 启用记录上传/下载活动日志功能。

connect_from_port_20=YES

# [k?? n? k t] 连接  启用FTP数据端口的连接请求

chown_uploads=NO

# 是否具有上传权限.用户由chown_username参数指定。

xferlog_file=/var/log/vsftpd.log

# 日志目录

xferlog_std_format=YES

# 使用标准的ftpdxferlog日志格式

async_abor_enable=no

# 强烈建议不要启用该选项,否则将可能导致出错!

ascii_upload_enable=YES

ascii_download_enable=YES

# ascii 编码的上传下载启动

ftpd_banner=Welcome to FTP Server

# [?ba n?] 标语

chroot_local_user=YES

# 虚拟列表用户是不受限制目录

ls_recurse_enable=NO

listen=YES

#  [?l? s(?)n] 听,监听端口

hide_ids=YES

# [h??d] 隐藏

pam_service_name=vsftpd

# 设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d/

userlist_enable=YES

tcp_wrappers=NO

# [?r? p?z] 包装   在VSFTPD中使用TCP_Wrappers远程访问控制机制,强烈建议改为 NO  否则ls 无法

guest_enable=YES

# [?? s t] 客人

guest_username=ftpvload

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/vconf

# 用户的配置文件,类似于nginx多网站一样

#------- 配置被动模式  ----------

pasv_enable=YES

pasv_min_port=63000

pasv_max_port=65535

" > /etc/vsftpd/vsftpd.conf             # 将echo 打印的内容写入配置文件

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup

                                                                        # cp 复制,备份文件

sed -i s/^/#/g /etc/pam.d/vsftpd                        # 删除开头为 # 符号的行

echo "auth    sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers

account sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers" >> /etc/pam.d/vsftpd

sleep 3

echo "#-------------------------- 配置虚拟用户 --------------------------#"

touch /var/log/vsftpd.log

chown vsftpd.vsftpd /var/log/vsftpd.log

mkdir /etc/vsftpd/vconf/ -p

sleep 3

echo -e "test\ntest1234" >> /etc/vsftpd/virtusers

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

                                                                        # 生效虚拟用户配置

mkdir /var/ftp/virtual/test

echo "

# 允许可写

allow_writeable_chroot=YES

#设定支持ASCII模式的上传和下载功能

ascii_upload_enable=YES

ascii_download_enable=YES

local_root=/var/ftp/virtual/username

#指定虚拟用户的具体主路径

anonymous_enable=NO

#设定不允许匿名用户访问

write_enable=YES

#设定允许写操作

local_umask=022

#设定上传文件权限掩码

anon_upload_enable=NO

#设定不允许匿名用户上传

anon_mkdir_write_enable=NO

#设定不允许匿名用户建立目录

idle_session_timeout=600

#设定空闲连接超时时间

data_connection_timeout=120

#设定单次连续传输最大时间

max_clients=10

#设定并发客户端访问个数

max_per_ip=5

#设定单个客户端的最大线程数,这个配置主要来照顾Flashget、迅雷等多线程下载软件

#local_max_rate=50000

#设定该用户的最大传输速率,单位b/s" >> /etc/vsftpd/vconf/vconf.tmp

cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/test

sed -i s/username/test/g /etc/vsftpd/vconf/test

echo "完成"

else

echo "已经安装vsftpd"

fi

}

vsftpdinstall

echo "

#----------------  创建虚拟用户 ----------------

请输入ftp账户名确认后输入密码

 "

if read -t 5 -p "Please enter you name: " username

then

   if [ -f /etc/vsftpd/vconf/$username ]  #判断用户是否存在

   then

      echo "The $username is exists, please input another name."

   else

      read -s -p "Please enter your password: " passwd

          echo -e "$username\n$passwd" >> /etc/vsftpd/virtusers

          db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

      mkdir -p /var/ftp/virtual/$username

      chown -R ftpvload.ftpvload /var/ftp

      cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/$username

      sed -i s/username/$username/g /etc/vsftpd/vconf/$username

      echo "The config is over."

   fi

else

   echo -e "\n 您超过5s没有配置信息,系统自动创建默认ftp账户

ftp 用户名:eisc   密码:eisc.cn  默认路径:/var/ftp/virtual/eisc

"

   echo -e "eisc\neisc.cn" >> /etc/vsftpd/virtusers

   db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

   mkdir -p /var/ftp/virtual/eisc

   chown -R ftpvload.ftpvload /var/ftp

   cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/eisc

   sed -i s/username/eisc/g /etc/vsftpd/vconf/eisc   # 修改用户家目录

fi


chmod 755 /var/ftp/*

systemctl restart firewalld

firewall-cmd --permanent --add-port=21/tcp

firewall-cmd --permanent --add-port=63000-65535/tcp

                            # 开放端口范围:3000到4000


systemctl restart firewalld vsftpd

# 开放防火墙端口和重启vsftpd

#----------------  win 文件管理访问ftp出现问题 ----------------

#解决办法:设置IE浏览器>>Internet选项>>高级>>将“使用被动FTP(用于防火墙和DSL调制解调器的兼容)”选项去掉>>确定即可

#----------------  ftp 下载文件以及常用命令 ----------------

先输入ftp 进入ftp 命令行

#open                   # 与ftp服务器相连接;

#send(put)             # 上传文件

#get:                  # 下载文件

#mget:                 # 下载多个文件;

#cd:                           # 切换目录;


# 脚本执行:wget eisc.cn/file/shell/vsftpd.sh ; sh vsftpd.sh

# IE  --- inter 选项 ---- 高级 ---- 取消勾选被动模式

有些梦虽然遥不可及,但并不是不可能实现。 
回复列表
默认   热门   正序   倒序

回复:linux centos 手动和自动搭建 ftp 创建虚拟用户 并使用 ftp 命令上传和下载文件

Powered by ddoss.cn 12.0

©2015 - 2024 ddoss

头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息