一、安装直接通过yum来安装。yuminstallvsftpd安装成功通过vsftpd-v来查看安装的版本。二、vsftpd配置1、创建系统账号(用于更改vsftpd的宿主用户以及虚拟用户)useraddvsftpd-s/sbin/nologinuseraddwww-s/sbin/nologin2、备份配置文件并修改:
一、安装
直接通过yum来安装。
yum install vsftpd
安装成功通过vsftpd -v 来查看安装的版本。
二、vsftpd配置
1、创建系统账号(用于更改vsftpd的宿主用户以及虚拟用户)
useradd vsftpd -s /sbin/nologin
useradd www -s /sbin/nologin
2、备份配置文件并修改:
备份文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
vsftpd.conf文件做如下修改,里面有简单注释说明。
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
connect_from_port_20=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chown_uploads=NO
#chown_username=whoever
#idle_session_timeout=600
#data_connection_timeout=120
nopriv_user=vsftpd
#宿主主机
#设定支持异步传输功能。
async_abor_enable=YES
#设定支持ASCII模式的上传和下载功能。
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd/banned_emails
#将虚拟用户限制在其目录下
chroot_local_user=YES
#启用特殊用户不受限制
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#禁止用户登陆FTP后使用"ls -R"的命令。
ls_recurse_enable=NO
#
listen=YES
#listen_ipv6=YES
pam_service_name=vsftpd
#设定userlist_file中的用户将不得使用FTP。
userlist_enable=YES
tcp_wrappers=YES
#默认没有,需要手动添加
guest_enable=YES
#设定启用虚拟用户功能。
guest_username=www
#指定虚拟用户的宿主用户。
virtual_use_local_privs=YES
#设定虚拟用户的权限符合他们的宿主用户。
user_config_dir=/etc/vsftpd/vconf
#设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同。
创建和设置日志文件及相关目录
touch /etc/vsftpd/chroot_list
touch /var/log/vsftpd.log
chown vsftpd.vsftpd /var/log/vsftpd.log
mkdir -p /etc/vsftpd/vconf
三、设定PAM验证文件,并指定虚拟用户数据库文件进行读取。
通过上面的配置文件,我们已经启用了pam认证方式(pam_service_nam属性,以及guest_enable=YES下面那些配置)。这里需要创建我们要登录的ftp用户和密码。
1、设置PAM文件
查看并备份
cat /etc/pam.d/vsftpd
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup
修改/etc/pam.d/vsftpd文件,尾部加入下面2行
echo "auth
sufficient
/lib64/security/pam_userdb.so
db=/etc/vsftpd/virtusers" >>/etc/pam.d/vsftpd
echo "account sufficient
/lib64/security/pam_userdb.so
db=/etc/vsftpd/virtusers" >>/etc/pam.d/vsftpd
同时做如下修改
auth required
pam_shells.so
换为
auth sufficient
pam_shells.so
完整内容如下:
#%PAM-1.0
session optional
pam_keyinit.so force revoke
auth
required pam_listfile.so item=user
sense=deny file=/etc/vsftpd/ftpusers Onerr=succeed
auth sufficient
pam_shells.so
auth
include password-auth
account include
password-auth
session required
pam_loginuid.so
session include
password-auth
auth sufficient
/lib64/security/pam_userdb.so
db=/etc/vsftpd/virtusers
account sufficient
/lib64/security/pam_userdb.so
db=/etc/vsftpd/virtusers
2、创建虚拟用户和密码
touch /etc/vsftpd/virtusers
#用户 密码 格式很简单:“一行用户名,一行口令”。
db_load -T -t hash -f /etc/vsftpd/virtusers
/etc/vsftpd/virtusers.db #生成用户密码数据文件。
chmod 600 /etc/vsftpd/virtusers.db
3、创建虚拟用户对应的配置
/etc/vsftpd/vconf下创建用户名文件,并指定访问路径。这里在/etc/vsftpd/vconf下创建steven文件(和用户名一致),内容:
local_root=/data/web/
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=300
data_connection_timeout=90
max_clients=1
max_per_ip=1
local_max_rate=25000
4、做好了上面的配置后需要在系统中添加该用户,并且对要访问的目录设置下权限。
useradd steven -s /sbin/nologin
chown -R www.www /data/web/
四、启动和停止vsftpd
做好了上面的相关配置后可以通过下面的命令来启动和停止服务。
service vsftpd start
service vsftpd stop
service vsftpd restart
五、新增一个用户流程
1、添加系统用户css
useradd ccs -s /sbin/nologin
2、virtusers 中加入用户和密码,并生成db文件
/etc/vsftpd/virtusers 加入
ccs
ccs111
生成db文件
db_load -T -t hash -f /etc/vsftpd/virtusers
/etc/vsftpd/virtusers.db
3、/etc/vsftpd/vconf下创建用户名文件,并指定访问路径。
4、给访问路径设置chown
chown -R www.www /data/web/php/
5、如果启用了目录限制,想不受限制,在/etc/vsftpd/chroot_list指定,这样就不受限制。
六、可能碰见的错误汇总
1、查看日志
tail -f /var/log/secure
2、bad bool value in config file for: chroot_local_user
chroot_local_user=yes 后面多了一个空格 汗
3、check pass; user unknown
useradd steven -s /sbin/nologin
4、Refused user steven for service vsftpd
在/etc/vsftpd/ftpusers里的用户都不能登录ftpd ,将steven从中移除掉。
5、530 Permission denied.
user_list 文件中 将steven移除掉。
6、user 'steven' granted access,但是提示530.
/etc/pam.d/vsftpd中
auth required
pam_shells.so
换为
auth sufficient
pam_shells.so
7、查看当前用户
/etc/passwd