0.ftp 1.LocalUser 2.VirtualUser 3.ftps FAQ last
0.ftp
数据传输通道的建立方式分为:主动模式(active)、被动模式(passive);
- active模式的建立过程;
- 客户端发送自己的地址、端口给服务端;
- 客户端请求服务端传输数据;
- 服务端发起数据传输连接;
- 数据传输通道建立。
- passive模式的建立过程;
- 客户端要求服务端进入被动传输模式;
- 服务端提供给客户端自己的地址、端口;
- 客户端发起数据传输请求;
- 数据传输通道建立。
1.系统用户
1.1.添加用户
添加系统用户,禁止登录系统,设定用户目录权限。

[root@tri work]# useradd -d /data/vsftpd -s /sbin/nologin pub [root@tri work]# passwd pub [root@tri work]# chmod 500 /data/vsftpd [root@tri work]# mkdir /data/vsftpd/upload [root@tri work]# chown -R pub:pub /data/vsftpd [root@tri work]# rm /data/vsftpd/.*
1.2.编辑vsftpd.conf
编辑配置,设定白名单。

[root@tri work]# grep -v "^#" /etc/vsftpd/vsftpd.conf local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES #default is YES understand. passive mode pasv_enable=YES pasv_min_port=51000 pasv_max_port=52160 #pasv_address=0.0.0.0 connect_from_port_20=NO xferlog_std_format=YES chroot_local_user=YES listen=YES listen_ipv6=NO #listen_port=21 #listen_address=0.0.0.0 pam_service_name=vsftpd userlist_enable=YES userlist_deny=NO tcp_wrappers=YES [root@tri work]# cat /etc/vsftpd/user_list # vsftpd userlist # If userlist_deny=NO, only allow users in this file # If userlist_deny=YES (default), never allow users in this file, and # do not even prompt for a password. # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers # for users that are denied. pub
2.VirtualUser
- 虚拟用户访问ftp;
- vsftpd.conf,配置vsftpd;
# Standalone mode listen=YES listen_address=0.0.0.0 listen_port=10021 max_clients=2000 max_per_ip=50 # Access rights anonymous_enable=NO local_enable=YES write_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO # Security chroot_local_user=YES guest_enable=YES guest_username=virtual anon_world_readable_only=YES connect_from_port_20=YES hide_ids=YES pasv_min_port=30000 pasv_max_port=39999 pam_service_name=vsftpd # Features xferlog_enable=YES ls_recurse_enable=NO ascii_download_enable=NO async_abor_enable=YES # Performance idle_session_timeout=120 data_connection_timeout=300 accept_timeout=60 connect_timeout=60 anon_max_rate=1048576000
服务独立启动,监听10021端口;
拒绝匿名用户,使用非匿名用户;
启用虚拟用户,指定文件系统位置;
关闭修改功能; - login.db,创建虚拟用户信息库;
db_load -T -t hash -f login.txt login.db
创建虚拟用户;
useradd -d /opt/ftpsite -s /sbin/nologin virtual chmod 500 /opt/ftpsite
- /etc/pam.d/vsftpd
auth required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/login account required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/login
- 此用户仅仅可以完成下载功能;
- 多用户配置;
- 在配置配件添加配置选项:
user_config_dir=/etc/vsftpd/conf.d
- 读取权限
anon_world_readable_only=NO
- 上传权限
write_enable=YES anon_upload_enable=YES anon_world_readable_only=NO anon_mkdir_write_enable=YES
- 删除权限
write_enable=YES anon_upload_enable=YES anon_world_readable_only=NO anon_mkdir_write_enable=YES anon_other_write_enable=YES
3.ftps

[root@tri work]# vi /etc/vsftpd/vsftpd.conf 下边三,默认为NO ssl_enable=YES ssl_tlsv=YES ssl_sslv3=YES 下边俩,默认就是YES force_local_data_ssl=YES force_local_logins_ssl=YES 下边壹,为默认值 rsa_cert_file=/usr/share/ssl/certs/vsftpd.pem 默认为none,默认时认为私钥在上边文件中 rsa_private_key_file=/etc/vsftpd/ssl/vsftpdKey.pem
FAQ
1.530
没有指定验证模块“pam_service_name=vsftpd”,
[root@payqa1 work]# ftp localhost Trying 127.0.0.1... Connected to localhost (127.0.0.1). 220 (vsFTPd 3.0.2) Name (localhost:root): pub 331 Please specify the password. Password: 530 Login incorrect. Login failed. ftp>
2.500 oops
ftp的登用用了系统用户,但是该用户又放在了其他用户目录下。就一直这么报错
[root@localhost ~]# ftp localhost Trying ::1... ftp: connect to address ::1拒绝连接 Trying 127.0.0.1... Connected to localhost (127.0.0.1). 220 (vsFTPd 2.2.2) Name (localhost:root): pub 331 Please specify the password. Password: 500 OOPS: cannot change directory:/home/work/manager_file Login failed. ftp>