vsftpd配置虚拟用户
今天公司同事要修改网站,但我不想去配置vsftpd的本地用户,就选择了虚拟用户,虚拟用户是什么意思呢,就是说你创建的FTP用户,实际上和服务器自身的用户没关系,当你进行FTP操作的时候,他会将FTP用户映射到服务器上的某个用户或组.虚拟用户有着较为灵活的权限控制,可以根据单独的配置文件控制上传和下载权限.
yum -y install db4 db4-devel db4-java db4-utils db4-tcl vsftpd
创建一个所有虚拟用户共用的一个本地用户
useradd vuser -s /sbin/nologin
passwd vuser
创建密码文件,格式如下:
vi /etc/vsftpd/vuser
ftptemp
passwd
temp
passwd
改变密码文件的用户权限
chmod 600 /etc/vsftpd/vuser
转换为DB文件,指令可能是:db4_load
db_load -T -t hash -f vuser vuser.db
chmod 600 /etc/vsftpd/vuser.db
创建基于vuser的PAM授权文件
cp /etc/pam.d/vsftpd /etc/pam.d/ftp.vu
清空加入以下内容,注意如果是64位的操作系统,则路径为/lib64,
vi /etc/pam.d/ftp.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
2.修改配置文件(开启匿名和虚拟账户)
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.old
vi /etc/vsftpd/vsftpd.conf
local_enable=YES
local_umask=022
write_enable=NO
anonymous_enable=YES
anon_root=/var/ftp/pub
anon_upload_enable=YES
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=vuser
user_config_dir=/etc/vsftpd/user_conf
listen=YES
secure_chroot_dir=/tmp
pam_service_name=ftp.vu
connect_from_port_20=YES
xferlog_enable=YES
dual_log_enable=YES
xferlog_file=/var/log/xferlog
vsftpd_log_file=/var/log/vsftpd.log
注意上文红色部分,即为虚拟用户映射到服务上的用户名,vuser
3.创建虚拟账户配置(管理员账户、上传账户)
mkdir /etc/vsftpd/user_conf
vi /etc/vsftpd/user_conf/ftptemp
local_root=/var/www/vhosts/wwwroot
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022
vi /etc/vsftpd/user_conf/temp
local_root=/var/www/vhosts/upload
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_umask=022
4.重启vsftpd配置开机自启动
/etc/init.d/vsftpd restart 或 service vsftpd restart
chkconfig vsftpd on
5.配置iptables和selinux放过ftp
iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
service iptables save
vi /etc/sysconfig/iptables-config
setsebool -P ftpd_disable_trans 1
service vsftpd restart
service iptables restart
在windows下的cmd里,输入ftp ip,如下图
系统:centos 5.5
ip:192.168.10.17
yum -y install db4 db4-devel db4-java db4-utils db4-tcl vsftpd
创建一个所有虚拟用户共用的一个本地用户
useradd vuser -s /sbin/nologin
passwd vuser
创建密码文件,格式如下:
vi /etc/vsftpd/vuser
ftptemp
passwd
temp
passwd
改变密码文件的用户权限
chmod 600 /etc/vsftpd/vuser
转换为DB文件,指令可能是:db4_load
db_load -T -t hash -f vuser vuser.db
chmod 600 /etc/vsftpd/vuser.db
创建基于vuser的PAM授权文件
cp /etc/pam.d/vsftpd /etc/pam.d/ftp.vu
清空加入以下内容,注意如果是64位的操作系统,则路径为/lib64,
vi /etc/pam.d/ftp.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
2.修改配置文件(开启匿名和虚拟账户)
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.old
vi /etc/vsftpd/vsftpd.conf
local_enable=YES
local_umask=022
write_enable=NO
anonymous_enable=YES
anon_root=/var/ftp/pub
anon_upload_enable=YES
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=vuser
user_config_dir=/etc/vsftpd/user_conf
listen=YES
secure_chroot_dir=/tmp
pam_service_name=ftp.vu
connect_from_port_20=YES
xferlog_enable=YES
dual_log_enable=YES
xferlog_file=/var/log/xferlog
vsftpd_log_file=/var/log/vsftpd.log
注意上文红色部分,即为虚拟用户映射到服务上的用户名,vuser
3.创建虚拟账户配置(管理员账户、上传账户)
mkdir /etc/vsftpd/user_conf
vi /etc/vsftpd/user_conf/ftptemp
local_root=/var/www/vhosts/wwwroot
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022
vi /etc/vsftpd/user_conf/temp
local_root=/var/www/vhosts/upload
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_umask=022
4.重启vsftpd配置开机自启动
/etc/init.d/vsftpd restart 或 service vsftpd restart
chkconfig vsftpd on
5.配置iptables和selinux放过ftp
iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
service iptables save
vi /etc/sysconfig/iptables-config
setsebool -P ftpd_disable_trans 1
service vsftpd restart
service iptables restart
在windows下的cmd里,输入ftp ip,如下图
如果登录成功,那恭喜你,如果没有无法连接或登录不上,请检查配置和防火墙.
评论: