1. 预备组件
yum -y install vsftpd install pam* install db4 db4-utils
// 设置开机启动
chkconfig vsftpd on
2.建立虚拟用户
// 以下为四个准备开启虚拟用户名称
user1
user2
user3
user4
// 添加虚拟用户名、密码。奇数行为用户名,偶数行为密码。
vi /etc/vsftpd/vftpuser.txt
user1
passwd12
user2
passwd12
user3
passwd12
user4
passwd12
3.生成虚拟用户口令认证文件
// 把刚添加的vftpuser.txt虚拟用户口令转换成系统的口令认证文件。
db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vu_list.db
4.编辑vsftpd的PAM认证
vim /etc/pam.d/vsftpd
注释掉所有内容 并录入下面两行
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list
5. 建立本地映射用户并设置宿主权限
// 创建用户前,不要创建/disk/ftp
useradd -d /disk/ftp -s /sbin/nologin user1
useradd -d /disk/ftp -s /sbin/nologin user2
useradd -d /disk/ftp -s /sbin/nologin user3
useradd -d /disk/ftp -s /sbin/nologin user4
注: 提示 “useradd: cannot create directory /disk/ftp”,不理会。
// 一次性创建每个虚拟用户根目录
mkdir -p /disk/ftp/user{1..4}
// 目录的权限应该是770,owner是root,group是ftp(这里的用户组应该是当前系统已有的用户组,不存在的用户组无效,用户组为ftp是造成后面编辑无权限)
chmod -R 770 /disk/ftp
chown -R root:hadoop /disk/ftp
6.配置 vsftpd.conf
// 设置虚拟用户配置项,修改成以下属性。
vim /etc/vsftpd/vsftpd.conf
// 12行
anonymous_enable=NO
// 95行
#users to NOT chroot().添加以下部分:
#虚拟用户配置文件存放位置
user_config_dir=/etc/vsftpd/vsftpd_user (注意:这里的" vsftpd_user "目录,可以不用改.但是下面一个根据系统用户而改.)
#开启虚拟用户
guest_enable=YES
#FTP虚拟用户对应的系统用户,注意:这里的"vftpuser是对应挂钩的用户,比如hadoop."
guest_username=vftpuser
// 限定用户只在自己目录, 取消下面几行的注释
xferlog_file=/var/log/vsftpd.log // 39行
chroot_list_enable=YES // 103行
chroot_list_file=/etc/vsftpd/chroot_list // 105行
// 123行
pam_service_name=vsftpd
6.2 新建chroot_list文件
touch /etc/vsftpd/chroot_list
7.虚拟用户权限配置
// 创建虚拟用户放置主目录
mkdir /etc/vsftpd/vsftpd_user
配置用户权限
// 依次创建4个文件,并输入配置信息
vi /etc/vsftpd/vsftpd_user/user{1..4}
// 配置信息,将 * 分别替换成 1,2,3,4
local_root=/disk/ftp/user*
anon_world_readable_only=no
write_enable=yes
anon_upload_enable=yes
anon_other_write_enable=yes
anon_mkdir_write_enable=yes
修改端口默认的连接端口号:
添加此行:117行 listen 下添加: listen_port=21001 //117行
vim +117 /etc/vsftpd/vsftpd.conf
vim +44 /etc/services
将其中的 ftp 21/tcp 改为 ftp 21001/tcp , ftp // 44行
启动 vcftp
/etc/init.d/vsftpd {stop|start|restart|status}
FTP效果验证
// 服务搭载主机ip:开房端口号
123.456.789.012:3456
// 使用ftp 软件即可连接和使用
注意: 防火墙问题
8.常用配置组合:
1.可浏览
local_root=/disk/ftp/tonecan
anon_world_readable_only=no
1-1.禁浏览
local_root=/disk/ftp/tonecan
anon_world_readable_only=yes (默认设置)
2.可上传
local_root=/disk/ftp/tonecan
write_enable=yes
anon_upload_enable=yes
3.浏览+下载+上传
local_root=/disk/ftp/tonecan
anon_world_readable_only=no
write_enable=yes
anon_upload_enable=yes
4.浏览+下载+上传+删除
local_root=/disk/ftp/tonecan
anon_world_readable_only=no
write_enable=yes
anon_upload_enable=yes
anon_other_write_enable=yes
5.浏览+下载+上传+创建目录+删除
local_root=/disk/ftp/tonecan (指定FTP只能登陆到这里)
anon_world_readable_only=no (只读,不能下载)
write_enable=yes (可写入)[不能单独使用,相当于写开关]
anon_upload_enable=yes (可上传)
anon_other_write_enable=yes (可删除)
anon_mkdir_write_enable=yes (可创建目录)
6.浏览+下载+上传+创建目录+不可删除
local_root=/disk/ftp/tonecan
anon_world_readable_only=no
write_enable=yes
anon_upload_enable=yes
anon_other_write_enable=yes
anon_mkdir_write_enable=yes
cmds_allowed=ABOR,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RMD,RNFR,RNTO,SITE,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST
9.查看ftp日志
tail -f /var/log/xferlog
# ABOR - 取消文件传输
# CWD - 更改目录
# DELE - 删除文件
# LIST - 列目录
# MDTM - 返回文件的更新时间
# MKD - 远程新建文件夹
# NLST - 远程目录列表名称
# PASS - 发送密码
# PASV - 进入被动模式
# PORT - 打开一个传输端口
# PWD - 显示当前工作目录
# QUIT - 退出
# RETR - 检索远程下载文件
# RMD - 删除远程目录
# RNFR - rename from 重命名源
# RNTO - rename to 重命名为
# SITE - 站点特定的命令
# SIZE - 返回文件大小
# STOR - 上传文件
# TYPE - 设置传输类型
# USER - 发送用户名
# ACCT* - 发送帐户信息
# APPE - 附加到远程文件(续传)
# CDUP - CWD到当前目录的父
# HELP - 帮助
# MODE - 设置传输模式
# NOOP - 什么都不做
# REIN* - 重新初始化连接
# STAT - 返回服务器状态
# STOU - 存储文件的唯一
# STRU - 设置文件的传输结构
# SYST - 返回系统类型
示例vsftp.conf
”’
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/vsftpd.log
xferlog_std_format=YES
guest_enable=YES
guest_username=vftpuser
user_config_dir=/etc/vsftpd/vsftp_user
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
”’