VSFTP(FTP)环境支持系统用户与虚拟用户两种形式
一、使用系统用户登入
1、环境:ftp为vsftp。被限制用户名为test。被限制路径为/home/test
2、建用户:在root用户下:
useradd -d /home/test test //增加用户test,并制定test用户的主目录为/home/test
chown -R test.test /home/data01/itim/
passwd test //为test设置密码
3、更改用户相应的权限设置:
usermod -s /sbin/nologin test //限定用户test不能telnet,只能ftp
usermod -s /sbin/bash test //用户test恢复正常
usermod -d /test test //更改用户test的主目录为/test
4、限制用户只能访问/home/test,不能访问其他路径
修改/etc/vsftpd/vsftpd.conf如下:
chroot_list_enable=YES //限制访问自身目录
# (default follows)
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
编辑 vsftpd.chroot_list文件,将受限制的用户添加进去,每个用户名一行
改完配置文件,不要忘记重启vsFTPd服务器
[root@linuxsir001 root]# /etc/init.d/vsftpd restart
5、如果需要允许用户修改密码,但是又没有telnet登录系统的权限:
usermod -s /usr/bin/passwd test //用户telnet后将直接进入改密界面
6、FTP 开启被动模式并指定端口段
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50050
listen_port=5001
ftp_data_port=5000
pasv_address=222.83.7.145
connect_from_port_20=YES
7、从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,
就会报错误:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项:
allow_writeable_chroot=YES
8、解决500 OOPS: vsftpd: cannot locate user specified in 错误
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
找到:
anonymous_enable=YES
修改为:
anonymous_enable=NO
二、配置ftp 虚拟用户
1、root@localhost ~]#vi /etc/vsftpd/vsftpd.conf
取消下面内容前面的注释或添加
anonymous_enable=YES/NO 是否允许匿名用户访问
chroot_list_enable=YES 限定用户不可以离开主目录
chroot_list_file=/etc/vsftpd/chroot_list
loca_enable=YES/NO 本地用户是否可以访问 注:如果为NO 则所有虚拟用户都将不能访问原因:虚拟用户访问在主机上其实是以本地用户访问的
pam_service_name=vsftpd pam认证文件名在/etc/pam.d/vsftpd
guest_enable=YES 启用虚拟用户功能
guest_username=ftp 指定虚拟用户的宿主用户 –centos 里面已经有内置的ftp用户了(注:此用户在chroot_list_file=/etc/vsftpd/chroot_list文件里所指定的用户)
user_config_dir=/etc/vsftpd/users 设置虚拟用户个人vsftp的服务配置文件
2、编辑个人服务配置文件
cd /etc/vsftpd/users
[root@slave45 users]# ls
dpi3g dpi4g gwdpi
[root@slave45 users]# vim dpi3g
local_root=/home/dpi3g/ftp
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
3. 创建虚拟用户目录(密码文本)
[root@localhost ~]#vi /etc/vsftpd/vm_user.txt(奇数行为用户名 ,偶数行为密码)
gwdpi
gwdpi_XXXX!@#123
dpi3g
dpi3g_XXXX!@#123
dpi4g
dpi4g_XXXX!@#123
4、生成虚拟用户的db文件
#db_load -T -t hash -f /etc/vsftpd/vm_user.txt /etc/vsftpd/vm_user.db
#chmod 600 /etc/vsftpd/vm_user.db
4、新建一个虚拟用户的PAM文件。加上如下两行内容:
#vi /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/vm_user
account required pam_userdb.so db=/etc/vsftpd/vm_user
5、给文夹权限(否则不能上传 权限可自定 本人给的是 777)
chmod 777 /var/www/