linux 安装 ftp并配置用户目录-ftp报错数字含义

简介: linux 文件传输--自动化部署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

# 将ftp账户密码写入配置文件


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

# 将密码生成密钥


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

# 创建ftp 用户的家目录


     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


################################ftp报错含义#############################

FTP 数字代码的意义

110 重新启动标记应答。

120 服务在多久时间内ready。

125 数据链路埠开启,准备传送。

150 文件状态正常,开启数据连接端口。

200 命令执行成功。

202 命令执行失败。

211 系统状态或是系统求助响应。

212 目录的状态。

213 文件的状态。

214 求助的讯息。

215 名称系统类型。

220 新的联机服务ready。

221 服务的控制连接埠关闭,可以注销。

225 数据连结开启,但无传输动作。

226 关闭数据连接端口,请求的文件操作成功。

227 进入passive mode。

230 使用者登入。

250 请求的文件操作完成。

257 显示目前的路径名称。

331 用户名称正确,需要密码。

332 登入时需要账号信息。

350 请求的操作需要进一部的命令。

421 无法提供服务,关闭控制连结。

425 无法开启数据链路。

426 关闭联机,终止传输。

450 请求的操作未执行。

451 命令终止:有本地的错误。

452 未执行命令:磁盘空间不足。


500 格式错误,无法识别命令: 服务器处理:ftp 500 用户ftp配置文件绑定了不存在的家目录路径


501 参数语法错误。

502 命令执行失败。

503 命令顺序错误。

504 命令所接的参数不正确。

530 未登入。

532 储存文件需要账户登入。


550 未执行请求的操作:  没有读写权限


551 请求的命令终止,类型未知。

552 请求的文件终止,储存位溢出。

553 未执行请求的的命令,名称不正确。

目录
相关文章
|
4月前
|
存储 Linux
Linux 目录名称
Linux系统目录结构简介:根目录(/)下包含各类功能目录,如/bin存放用户命令,/etc存储配置文件,/home为用户主目录,/var记录日志等可变数据,/usr存放用户工具,/tmp用于临时文件。各目录分工明确,保障系统有序运行。(238字)
289 5
|
6月前
|
Ubuntu Linux
计算机基础知识:linux系统怎么安装?
在虚拟机软件中创建一个新的虚拟机,并选择相应操作系统类型和硬盘空间大小等参数。将下载的 ISO 镜像文件加载到虚拟机中。启动虚拟机,进入安装界面,并按照步骤进行安装。安装完成后,可以在虚拟机中使用 Linux 系统。
|
4月前
|
安全 Linux iOS开发
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
313 6
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
|
4月前
|
消息中间件 Kafka Linux
Linux下安装Kafka 3.9.1
本文介绍Kafka 3.9.1版本的安装与配置,包括通过ZooKeeper或KRaft模式启动Kafka。涵盖环境变量设置、日志路径修改、集群UUID生成、存储格式化及服务启停操作,适用于Linux环境下的部署实践。
543 0
|
6月前
|
网络协议 关系型数据库 Linux
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
在App Service for Linux环境中,无法像Windows一样直接使用网络排查工具抓包。本文介绍了如何通过TCPDUMP在Linux环境下抓取网络包,包括SSH进入容器、安装tcpdump、执行抓包命令及下载分析文件的完整操作步骤。
316 5
|
6月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
6月前
|
Ubuntu 安全 Linux
Linux这5款微型发行版,体积小+精简,比win7运行还快,值得安装
以上5款微型发行版体积小且精简,如果你有台旧电脑,不妨试试?
|
6月前
|
安全 Ubuntu Linux
如何安装Linux操作系统?
此时,您可以选择重新启动计算机,然后从硬盘上的Linux系统启动。以上是一个大致的安装过程。请注意,不同的Linux发行版可能会在细节上有所差异,因此在进行安装之前,请确保您阅读并理解了相应发行版的安装指南或文档。