vsftp 服务器的用户有两种
1.匿名用户
不需要密码,可以直接访问ftp服务器的公开资料,通常只允许下载一般用于共享一些资料。
用户名:anonymous (有些版本可以为空)
密码:(空)
登陆后的默认路径: /var/ftp
2.系统用户
系统中的普通用户和超级用户
用户名:user(系统中的用户名 或者 root)
密码: 和系统中一致
登陆后的默认路径: /home/user
访问控制 设置 在vsftpd 的配置文件中,默认路径为: /etc/vsftpd/vsftpd.conf (修改前最好先备份)
上边写的 两种用户是否能正常访问 FTP服务器 都受配置文件的控制。
配置文件中与用户控制有关的字段如下:
anonymous_enable 匿名用户访问许可 YES 表示允许匿名访问,NO 表示不能匿名访问(或者直接用#注释掉)
local_enable = YES 允许本地用户访问
write_enable = YES 允许上传
#anon_upload_enable=YES 允许匿名用户上传
#anon_mkdir_write_enable=YES 允许匿名用户创建目录 此两项一般情况下 都设置为禁止
userlist_enable = YES
userlist_feny = YES
userlist_file = /etc/vsftpd/user_list
/etc/vsftpd/user_list 文件中指定的用户不能访问FTP服务器
例如 : 按照以上配置,我将Kevin用户写入 /etc/vsftpd/user_list , 当再用Kevin用户登录时会显示如下提示,没有权限,登陆失败。
此外还有一个 限制用户登录的 文件 /etc/vsftpd/ftpusers, 当Kevin被写入 /etc/vsftpd/ftpusers(没有写入/etc/vsftpd/user_list)时,用Kevin登陆会是如下提示:
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
当按照以下配置时只有写入 user_list的用户才能访问FTP服务器。
即使是root也不例外。
这里有一个有意思的问题:当userlist_deny = NO Kevin 用户写入 user_list 的同时 也写入 ftpusers中 会是什么情况?具体情况如下:
及按照 /etc/vsftpd/ftpusers 文件的限制 禁止用户登录。
当用普通用户登录FTP 服务器的时候 会发现 cd / 的时候 是可以切换到Linux的根目录的,如下:
这是非常危险的, 此时 pwd 会发现 你是可以看到整个文件系统的(有权限的)
chroot_local_user=YES 在FTP服务中,用户把自己的宿主目录当作根目录,及其他目录是可不见的,设置过程如下
[root@Mr vsftpd]# vi ./vsftpd.conf
将 的注释取消掉,再登陆FTP服务器 pwd 会发现 自己的 宿主目录编程了 根目录。
设置指定的用户不执行chroot
创建 /etc/vsftpd/chroot_list 文件,并将Kevin写入,退出保存,重启vsftpd服务器后,使用Kevin用户登录FTP pwd
发现 自己仍然是在 自己的宿主目录下,并没有把自己的宿主目录当作是根目录。
ftpd_banner=Welcome to the FTP service. //登陆FTP服务器时的欢迎信息,(可以掩盖使用的ftp服务器的版本)
如下为没有欢迎信息,及注释掉 ftpd_banner=
如下是没有注释掉的情况
idle_session_timeout=600 #10分钟无操作,将自动断开连接
max_clients=50 #总的并发连接数为50
max_per_ip=3 #每台客户机的最大连接数为3
listen_port=10010 #指定非标准端口 , 此时登陆时需要 ftp 192.168.176.128:10010
anon_max_rate=100000 #匿名用户最大传输速率为100KB/s
xferlog_enable=YES #打开FTP记录日志
xferlog_std_format=YES #日志采用标准格式
xferlog_file=/var/log/xferlog #日志保存位置