vsftd及虚拟用户
临时需要搭建一个ftp,突然忘记怎么搞了,重新整一下,以后备用
vsftd及虚拟用户
1.安装vsftpd
yum install vsftpd
2.添加用户(用于虚拟用户映射)
adduser seedftp -s /sbin/nologin
3.修改配置文件
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
userlist_enable=YES
tcp_wrappers=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30090
guest_enable=YES #启用虚拟用户
guest_username=seedftp #虚拟用户映射的真实用户
pam_service_name=vsftpd.vu #指定PAM文件路径
user_config_dir=/etc/vsftpd/user_conf #配置虚拟用户配置文件路径
4.关于主动及被动
开启被动模式:
connect_from_port_20=NO(默认为YES) #设置是否允许主动模式
pasv_enable=YES(默认为YES) #设置是否允许被动模式
pasv_min_port=30000(default:0(use any port))
pasv_max_port=40000(default:0(use any port))
开启主动模式的配置:
connect_from_port_20=YES
pasv_enable=NO
5.修改PAM
vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login
6.配置虚拟用户
vim /tmp/caiuser
caiuser
xmks89232
7.建立数据文件
db_load -T -t hash -f /tmp/login.txt /etc/vsftpd/vsftpd_login.db
8.创建用户宿主目录
chmod 700 /home/seedftp/
mkdir ftp
创建初始目录:
cd ftp/
mkdir cklpub
chown -R seedftp.seedftp cklpub
chmod 700 cklpub #安全设置必须,这个目录用户组和其它没有写权限
9.配置用户配置文件
vim user_conf/nili
local_root=/data/release_pub/NILI
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
cmds_denied=DELE,RMD #禁止删除和修改
10.重启服务器
systemctl restart vsftpd.service
10.备注
227 Entering Passive Mode (11,7,14,177,207,77).
ftp: connect: Connection timed out
如果报错,一定要查看pasv模式端口是否打开
iptables -I INPUT -m state –state NEW -p tcp -m tcp –dport 30000:31000 –syn -j ACCEPT
端口范围不能写错
pasv_min_port=30000
pasv_max_port=30090
vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误的解决方法
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项:
allow_writeable_chroot=YES