最近需要在linux下写PHP程序实现ftp文件的上传和下载功能,需实现不同ftp用户登陆到各自目录下,并对其进行相关权限配置,经过
搜索,发现vsftpd使用比较广泛,决定采用vsftpd架设ftp服务器来进行测试。
安装比较简单,直接安装vsftpd及db4的rpm包即可,默认是支持匿名登陆方式的,考虑实际应用,肯定是不允许匿名登陆的,而采用linux系统用户的话安全性也会是一个不容忽视的问题,因此考虑采用虚拟用户的方式,创建一个虚拟用户组,同时采用pam认证的方式
进行密码验证,vsftpd.conf的相关配置网上比较多就不再做详细说明,下面就几个关键的步骤进行一下说明。
1.创建ftpd组用户
建立虚拟用户及所要访问的目录并设置相应权限
[root@mail ftp]# groupadd ftpd
[root@mail ftp]# mkdir /home/ftpd
[root@mail ftp]# useradd -g ftpd -d /home/ftpd/ -s /sbin/nologin -M ftpd
[root@mail ftp]# chmod 700 /home/ftpd/
[root@mail ftp]# chmod 700 /home/ftpd
[root@mail ftp]# chown ftpd.ftpd /home/ftpd
2.创建pam认证文件
首先写一个用户列表文本文件,其中奇数行为用户名,偶数名为密码
然后使用如下命令生成db格式文件并设置其访问权限
[root@mail ftp]# db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
[root@mail ftp]# chmod 600 /etc/vsftpd_login.db
下面一步是关键,我想很多人会遇到即使添加上ftp用户了,可不管如何登陆,vsftpd服务器密码总是验证失败的问题,我开始也是
在网上到处找寻也没找到,最后自己在不经意间测试成功了。
打开/etc/pam.d/vsftpd文件,把其中的认证行全部注释掉,然后添加下面两行认证信息:
auth required pam_userdb.so db=/etc/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd_login
3.配置虚拟用户权限
在ftp目录下新建各个用户的目录(目录名与用户列表文件中的用户名相同),并设置宿主为虚拟用户组(ftpd)
注意如果设置虚拟用户的话需在vsftpd.conf中添加:
guest_enable=YES
guest_username=beinan
chroot_local_user=YES
user_config_dir=/etc/vsftpd_user_conf
其中user_config_dir用于保存各虚拟用户的个人配置文件,文件名与用户名相同,下面一个配置格式:
#绑定用户目录
local_root=/home/ftpd/ftp_e-dfzd
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
一般注意以上几点即可再加上网络上的关于vsftpd配置大全基本上就可以解决vsftpd配置及登陆等相关问题。
写得比较杂乱无章,如有问题,可联系我。