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

简介: 安装并创建ftp用户
#!/bin/bash
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 下载文件以及常用命令 ----------------
#open                   # 与ftp服务器相连接;
#send(put)             # 上传文件
#get:                  # 下载文件
#mget:                 # 下载多个文件;
#cd:                           # 切换目录;

# 脚本执行:wget eisc.cn/file/shell/vsftpd.sh ; sh vsftpd.sh
目录
相关文章
|
存储 数据管理 Linux
区分Linux中.tar文件与.tar.gz文件的不同。
总之,".tar"文件提供了一种方便的文件整理方式,其归档但不压缩的特点适用于快速打包和解压,而".tar.gz"文件通过额外的压缩步骤,尽管处理时间更长,但可以减小文件尺寸,更适合于需要节约存储空间或进行文件传输的场景。用户在选择时应根据具体需求,考虑两种格式各自的优劣。
2188 13
|
安全 Linux
Linux赋予文件000权限的恢复技巧
以上这些步骤就像是打开一扇锁住的门,步骤看似简单,但是背后却有着严格的逻辑和规则。切记,在任何时候,变更文件权限都要考虑安全性,不要无谓地放宽权限,那样可能
509 16
|
存储 Linux 数据处理
深入剖析Linux中一切即文件的哲学和重定向的机制
在计算机的奇妙世界中,Linux的这套哲学和机制减少了不同类型资源的处理方式,简化了抽象的概念,并蕴藏着强大的灵活性。就像变戏法一样,轻轻松松地在文件、程序与设备之间转换数据流,标准输入、输出、错误流就在指尖舞动,程序的交互和数据处理因此变得既高效又富有乐趣。
272 4
|
Ubuntu Linux
"unzip"命令解析:Linux下如何处理压缩文件。
总的来说,`unzip`命令是Linux系统下一款实用而方便的ZIP格式文件处理工具。本文通过简明扼要的方式,详细介绍了在各类Linux发行版上安装 `unzip`的方法,以及如何使用 `unzip`命令进行解压、查看和测试ZIP文件。希望本文章能为用户带来实际帮助,提高日常操作的效率。
3870 12
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
470 4
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
752 3
linux文件重命名命令
本指南介绍Linux文件重命名方法,包括单文件操作的`mv`命令和批量处理的`rename`命令。`mv`可简单更改文件名并保留扩展名,如`mv old_file.txt new_name.txt`;`rename`支持正则表达式,适用于复杂批量操作,如`rename 's/2023/2024/' *.log`。提供实用技巧如大小写转换、数字序列处理等,并提醒覆盖风险与版本差异,建议使用`-n`参数预览效果。
|
Oracle 关系型数据库 Linux
MyEMS开源系统安装之CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux
本指南介绍如何在CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux服务器上部署MyEMS开源能源管理系统。内容涵盖系统准备、数据库配置、多个MyEMS服务(如myems-api、myems-admin、myems-modbus-tcp等)的安装与配置,以及Nginx服务器设置和防火墙规则调整。通过完成所有步骤,您将能够访问MyEMS Admin UI和Web UI,默认端口分别为8001和80,初始登录凭据已提供。
959 0
|
数据安全/隐私保护
ftp下载显示进度
经常用到ftp get命令下载东西,但是遇到大的文件不知道是挂了还是在运行,要是能显示就好了,于是就有了下文。。。   注: 红色 字体是我敲击的命令 “#” 是注释语   [root@localhost server]# ftp 10.
1385 0
|
Ubuntu 安全 网络安全
在Ubuntu系统下使用vsftpd配置FTP服务器的步骤
以上就是在Ubuntu系统下使用vsftpd配置FTP服务器的步骤。这些步骤都是基础的,但足够让你建立一个简单的FTP服务器。如果你需要更高级的功能,例如SSL加密、虚拟用户等,你可能需要进一步研究vsftpd的配置选项。
974 13