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

本文涉及的产品
运维安全中心(堡垒机),免费版 6个月
运维安全中心(堡垒机),企业双擎版 50资产 7天
简介: 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 未执行请求的的命令,名称不正确。

目录
相关文章
|
3月前
|
Ubuntu Linux 网络安全
Linux服务器之Ubuntu的安装与配置
Ubuntu Desktop是目前最成功、最流行的图形界面的Linux发行版;而Ubuntu Server也在服务器端市场占据了较大的份额。今天为大家详细介绍了Ubuntu Server的安装与配置,希望对你能有所帮助。关于VMware、VirtualBox等虚拟化软件的使用,朱哥还会在后续的文章中为大家详细介绍,敬请关注!
|
27天前
|
存储 Linux 开发工具
Linux环境下使用Buildroot配置软件包
使用Buildroot可以大大简化嵌入式Linux系统的开发和维护工作,但它需要对Linux系统和交叉编译有深入的理解。通过上述步骤,可以有效地配置和定制软件包,为特定的嵌入式应用构建高效、稳定的系统。
156 11
|
4月前
|
Kubernetes Linux 网络安全
Rocky Linux 8.9配置Kubernetes集群详解,适用于CentOS环境
初始化成功后,记录下显示的 `kubeadm join`命令。
250 0
|
6月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
451 11
|
5月前
|
Linux 网络安全 开发工具
在Linux下配置gitee与Github的远程仓库
注意,git push后,是输入你的账号与密码。这个步骤可以通过特殊设置省去,但是一开始还是不要太省。
305 0
|
7月前
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
297 10
|
7月前
|
人工智能 Kubernetes Ubuntu
linux配置IP
linux配置IP
673 1
|
Web App开发 安全 Unix
Linux 配置FTP服务器 + vsftpd服务安装配置 (Good篇)
Linux 配置FTP服务器 + vsftpd服务安装配置 (Good篇)
448 1
|
网络协议 Linux 网络安全
Linux文件服务配置FTP服务
之前学习了网络管理,在平时我们去各网站下载电影或者文件,比如去电影天堂下载电影的时候,细心的会发现网站的前缀是ftp://,这篇文章就开始学习怎么配置ftp服务器供客户端进行下载文件。
998 2