FTP
-----------------FTP匿名、实名用户 tcp21----------------------
实现匿名账户使用VSFTP(仅下载) 实现实体账户使用VSFTP
#yum install vsftpd -y[安装FTP服务]
1)配置文件不需要修改 1)配置文件不需要修改
2)启动vsftpd 2)启动vsftpd
3)客户端安装ftp客户端程序 3)客户端安装ftp客户端程序
#yum install ftp -y #yum install ftp -y
4)客户端使用匿名账户登陆 4)客户端使用实名账户登陆
#ftp 192.168.1.5 #ftp 192.168.1.5
匿名账户:ftp 密码:随意 实体账户:snow 码:123456
开启匿名上传及建立目录机制:
1)修改vsftpd.conf配置文件
将29行注释取消
anon_upload_enable = YES
将33行注释取消
anon_mkdir_wirte_enable = YES
2)启动vsftpd
运行vsftpd需要的非特权账户,默认:nobodynopriv_user=ftpsecure
3)修改/var/ftp/pub目录权限,使ftp匿名账户具备写权限
#chown -R ftp.ftp pub
4)客户端测试
开启匿名账户修改、删除权限:
1)修改vsftpd.conf配置文件
于33行下增加
anon_other_wirte_enable = YES
2)启动vsftpd
3)修改/var/ftp/pub目录权限,使ftp匿名账
户具备写权限
#chown -R ftp.ftp pub
4)客户端测试
# ftp 192.168.10.5 [ftp登录]
#get 文件名[下载]←不需要加路径
#put 文件名[上传]
如果ftp客户端发送async ABOR指令时,此设定才会启用;但非常不安全,不推荐使用:async_abor_enable=YES
用于拒绝email作为口令登录deny_email_enable=YES
是否允许递归查询,大型ftp site启用此选项可允许远程用户查询目录中的内容
ls_recurse_enable=YES
用于拒绝某些email作为口令登录,可写入至banned_emails文件中
banned_email_file=/etc/vsftpd/banned_emails
FTP其他限制
1)限定最大并发连接数为100
max_clients=100
2)限定每客户端最多同时可以发起的链接个数
max_per_ip=1
3)限定匿名用户最大下载速率(单位:字节)
anon_max_rate=81920
4)设定有效实体账户最大下载速率
local_max_rate=102400
5)设定pasv模式使用端口的范围
pasv_min_port=50000
pasv_max_port=60000
6)设置最大超时时间(单位:秒)
idle_session_timeout=120
data_connection_timeout=300
connection_timeout=60
ftp模板所在位置
#cd /usr/share/doc/vsftpd-*/EXAMPLE/
------------ FTP实现chroot-------------
1.#yum install vsftpd -y #systemctl start vsftpd[安装启动]
2.#cd /etc/vsftpd
#vim vsftpd.conf [修改配置文件]
如果打算使用chroot_list列表来指定允许不用
chroot的用户请将101及102行注释取消。并建立chroot_list文件,将账户写入里面,如:
#cat /etc/vsftpd/chroot_list
snow
chuai
值得注意的是chroot_list文件里的账户是不被chroot的[chroot意思是被锁]
chroot出现错误解决方法
在vsftpd.conf中增加
allow_writeable_chroot=YES
4.#cd /etc/vsftpd
#ls -l ftpusers ←在此文件中的账户无法登陆
ftp
#ls -l user_list ← 有vsftpd.conf中的
userlist_enable语句控制
当 userlist_enable=NO 时 user_list列表不生效,列表内和列表外的用户都可登录
当 userlist_enable=YES及userlist_deny=YES同时写到配置中时user_list列表内的用户不可以登录,列表外用户可登录
当 userlist_enable=YES及userlist_deny=NO同时写到配置中时user_list只允许列表以外的用户登录,并且必需是以命令行的方式
客户端测试
# ftp 192.168.10.5 [ftp登录]
#get 文件名[下载]←不需要加路径
#put 文件名[上传]
--------------- FTP虚拟账户-------------
1)建立虚拟账户文件
#vim ~/ftpusers.txt
ck007 ←账户
123 ←密码
lisa ←账户
123 ←密码
hah
123
注意:要有一个真实的用户对应
2)生成账户的数据库
#db_load -T -t hash -f /root/ftpusers.txt /etc/vsftpd/ftpusers.db
#ls -l /etc/vsftpd/ftpusers.db
#rm -rf ~/ftpusers
-T:允许使用文本文件信息加载到数据库中
-t :指定加密算法
-f : 指定文件
3)通过PAM验证虚拟账户
#cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
#cp /usr/share/doc/vsftpd*/EXAMPLE/VIRTUAL_USERS/vsftpd.pam /etc/pam.d/vsftpd
4)修改vsftp验证文件
#vim /etc/pam.d/vsftpd
将so模块路径去除,仅保留模块
将db=/etc/vsftpd_login改为数据库文件名。
如auth required pam_userdb.so db=/etc/vsftpd/ftpusers
account required pam_userdb.so db=/etc/vsftpd/ftpusers
//*特别提示,在pam中的验证数据库不用加.db
5)创建与虚拟账户管理的实体账户
#useradd ck007
#chmod 777 -Rv /home/ck007←对应真实账户
//*如出现” 500 OOPS: vsftpd: refusing to runwith writable root inside chroot()” 请将/home/test目录写权限去除
#chmod a-w /home/ck007
6)修改vsftpd.conf配置文件
在其下增加
guest_enable=YES
guest_username=ck007←对应真实账户
7)重启vsftpd
#systemctl restart vsftpd
//*客户端测试*//