vsftp是一种ftp搭建工具软件,文章记录了搭建过程和用户配置方法。
系统环境环境:centos 6.5
vsftp安装
yumm install vsftp
ftp系统本地用户认证配置
说明,这个配置文件的作用是允许本地用户访问ftp、并且不能切换到上层目录,每个行尾必须没有空格和其它字符,必须删掉我的注释才能用,不然会启动报错的。系统用户配置文件:
vim /etc/vsftpd.conf
ftpd_banner=ftp.xnow.me
listen=YES
local_enable=yes #是否启用本地用户
write_enable=YES
local_umask=022
anonymous_enable=yes #设置认证模块
pam_service_name=vsftpd
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log #日志文件
xferlog_std_format=YES
userlist_enable=yes
启用用户列表,默认位置:/etc/vsftpd.user_list
userlist_deny=no
# 只有列表文件中的问户可以登陆ftp
#chroot_list_enable=no
#chroot_local_user=yes
local_root=/data/program/cdnwebs #ftp用户登陆后的目录
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.user_list #规定不能访问上层目录的用户
allow_writeable_chroot=YES
最后四句的作用是:不允许用户切换到上一层目录,将用户chroot到指定的local_root目录下! 如果没有最后一句,会报错:
“500 OOPS: vsftpd: refusing to run with writable root inside chroot ()”
因为在新版的vsftp中,chroot的目录不能被写入,必须使用chmod a-w /ftp,加了最后一行,就不用设置目录为不能写入了!重启vsftp再登陆,就发现当前目录是“/”中了!然后,接着配置认证模块和用户列表等:
vim /etc/pam.d/vsftpd
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
useradd -s /sbin/nologin -d /data/program/cdnwebs ftpuser
chown -R ftpuser:ftpuser /data/program/cdnwebs
vim /etc/vsftpd.user_list
ftpuser
touch /etc/ftpusers
由于/etc/pam.d/vsftpd中定义sense=deny,所以/etc/ftpusers里的用户默认会被拒绝,所以只是创建一个空文件,这样,就只有ftpuser这个系统用户能登陆ftp了!
第二种ftp认证—-虚拟用户
这种认证方法把虚拟用户全部映射到一个真实的系统用户上,可以增加ftp的安全性!这个方式的认证依赖于db4-utils,需要使用它的db_load命令生成加密的认证文件!首先配置主配置文件/etc/vsftpd.conf
vim /etc/vsftpd.conf
anonymous_enable=NO
local_enable=yes
write_enable=YES
local_umask=022
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
listen=YES
ftpd_banner=Welcom to my virtual FTP server.
guest_enable=YES #开启虚拟用户认证
guest_username=ftpuser #虚拟用户映射为系统本地用户ftpuser
pam_service_name=ftp.vuser # 认证名为ftp.vuser
chroot_local_user=yes
user_config_dir=/etc/vsftpd/vsftpd_user_conf #虚拟用户的配置文件目录
virtual_use_local_privs=YES
allow_writeable_chroot=YES
新建虚拟用户aaa
mkdir /etc/vsftpd/vsftpd_user_conf
vim /etc/vsftpd/vsftpd_user_conf/aaa
write_enable=yes
local_root=/data
创建账号和密码文件:
vim /etc/vsftpd/vusers.list #文件基数行是用户名,偶数行是密码,中间不要有空格和空行
aaa
123456
生成加密的认证文件:
db_load -T -t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vsftpd_login.db
添加认证模块:
vim /etc/pam.d/ftp.vuser
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
这里注意模块的路径是lib还是lib64,由系统位数决定,后面的路径是生成的认证文件的路径。
启动ftp
service vsftp start