1、安装
yum -y install vsftpd db4-utils (db_load工具,用户加密用户名密码文件,生成.db文件)
2、生成验证用户名密码数据库
vim /etc/vsftpd/login.txt
aaa (用户名)
123456 (密码)
bbb (用户名)
asdf(密码)
ccc (用户名)
7654(密码)
保存退出
保存虚拟帐号和密码的文本文件无法被系统帐号直接调用哈~我们需要使用db_load命令生成db口令数据库文件
db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db
3、修改数据库文件访问权限
数据库文件中保存着虚拟帐号的密码信息,为了防止非法用户盗取哈,我们可以修改该文件的访问权限。生成的认证文件的权限应设置为只对root用户可读可写,即600
[root@red-hat-5 /]# chmod 600 /etc/vsftpd/vsftpd_login.db
[root@red-hat-5 /]# ll /etc/vsftpd/vsftpd_login.db
-rw------- 1 root root 12288 12-25 23:12 /etc/vsftpd/vsftpd_login.db
4、配置PAM文件
为了使服务器能够使用数据库文件,对客户端进行身份验证,需要调用系统的PAM模块.PAM(Plugable Authentication Module)为可插拔认证模块,不必重新安装应用系统,通过修改指定的配置文件,调整对该程序的认证方式。PAM模块配置文件路径为/etc/pam.d/目录,此目录下保存着大量与认证有关的配置文件,并以服务名称命名。
[root@red-hat-5 /]# cat /etc/pam.d/vsftpd (把原先的内容都注视掉,加入两行新内容)
#%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 required pam_shells.so
#auth include system-auth
#account include system-auth
#session include system-auth
#session required pam_loginuid.so
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
注意:db=/etc/vsftpd/login 格式是这样的,去掉.db后缀
注意:如果是64位系统,请填写路径为/lib64/security/pam_userdb.so
如果是32位系统,则直接写/lib/security/pam_userdb.so
5、建立虚拟用户所对应的本地用户 (如果需要设置较为复杂的权限,可以创建多个本地用户,在虚拟用户配置文件中将虚拟用户映射为本地用户,来进行授权)
# useradd -s /sbin/nologin -d /ftp vsftp 设置vsftp 用户家目录即为FTP主目录
为FTP设置权限:
chmod -R 775 /data/ftp
chown -R vsftp.vsftp /data/ftp
笔者在生产环境下用的配置:
[root@demo-PG vsftpd]# cat vsftpd.conf| grep -v "^#"
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=120
ftpd_banner=Please must be use english name for file or directory!
listen=YES
max_clients=100
max_per_ip=50
pasv_enable=YES
pasv_min_port=65500
pasv_max_port=65530
user_config_dir=/etc/vsftpd/login
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
syslog_enable=yes在其日志(/var/log/xferlog和/var/log/vsftpd.log)中不能正常的显示中文,将系统安装成为默认为中文 的系统也不行 ,将系统的字符集改成zh_CN.gb等 都不行 ,最后 查看vsftpd.conf的系统帮助文件(使用man vsftpd.conf命令),发现有一个syslog_enable=yes的参数,编辑vsftpd.conf,加入syslog_enable=yes,再重启vsftpd ,通过查看/var/log/messages,日志中的Vsftpd日志信息显示出来了,而且比较全面,删除信息也有。
user_config_dir=/etc/vsftpd/login :这段配置文件就是告诉vsftpd,当虚拟用户登录成功后(也许是在登陆时)就会读取这个目录下的与虚拟用户名一直的配置文件,注意 user_config_dir的值是目录的名称,而且此目录下一定要有和虚拟用户名称一样的配置文件
[root@demo-PG vsftpd]# ll login/
总计 16
-rw-r--r-- 1 root root 117 09-17 15:53 administrator
-rw-r--r-- 1 root root 115 09-17 16:27 bbb
-rw-r--r-- 1 root root 115 09-17 16:27 ccc
虚拟用户的权限设置:
anon_upload_enable=YES
是否允许匿名用户上传文件
anon_mkdir_write_enable=NO
匿名用户是否有创建目录的权限
anon_other_write_enable=NO
匿名用户是否有删除和重名名文件的权限
anon_world_readable_only=NO
匿名用户只能下载全局可读的文件,即文件的属组,属主,其他用户都有读权限
[root@demo-PG vsftpd]# cat login/administrator 用户可以完全修改ftp中的内容
guest_enable=YES
guest_username=vsftp
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
[root@demo-PG vsftpd]# cat login/aaa (aaa用户只允许下载ftp中的内容)
guest_enable=YES 开启此虚拟用户的登录FTP权限
guest_username=vsftp 映射此虚拟用户对应的本地系统用户
anon_world_readable_only=NO
[root@demo-PG vsftpd]# cat login/bbb (bbb用户只允许上传ftp中的内容)
guest_enable=YES
guest_username=vsftp
anon_upload_enable=YES
提醒:如果需要添加虚拟用户:
1、直接在login.txt中设置用户名及密码
2、执行db_load语句
3、在login目录里增加刚才添加的虚拟用户名文件,进行权限编辑
4、重启vsftpd服务即可
service vsftpd restart
配置完成!
转载于:https://blog.51cto.com/yyzll/995060