第二步:配置VSFTP
(做这一步的时候貌似不成功,而是修改了/etc/vsftpd.conf 里面的local_enable=YES后重启才可以用本地用户登录的,可能是版本不同吧)
a)使本地用户能登录FTP。按照上面的源码安装配置我们的FTP还不能让本地用户登录,因为缺少一个认证PAM文件,在源码目录下有一个RedHat/vsftpd.pam认证文件,把它复制到/etc/pam.d/ftp。
#cp RedHat/vsftpd.pam /etc/pam.d/ftp
测试一下,假设有一个本地用户test,登录FTP:
#ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 1.2.1)
Name (127.0.0.1:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
看来情况很好:)
b)配置匿名用户有浏览,读写,创建目录权限的FTP。这种配置的FTP是极度不安全的FTP,但在某些FTP网站上可能希望能匿名用户能上传文件,因此有必要讲解一下:
编辑配置VSFTP的配置文件vsftpd.conf,在文件加入下面几行:
anon_world_readable_only=NO //关闭匿名用户只读权限,这个选项是控制匿名用户只能下载具有可读权限的文件,绝不允许有其他权限,特别是写权限,因此要使匿名用户有写权限,应该禁止它anon_upload_enable=YES //匿名用户上传权限开放
anon_mkdir_write_enable=YES //匿名用户写和创建目录权限开放
write_enable=YES //这是VSFTP控制用户改变文件系统的权限的选项,若任何用户要使用改变文件系统命令(如,读写,删除等等操作)都必须使它开放,默认值是NO
OK,保存后退出。
测试:
#ftp127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 1.2.1)
Name (127.0.0.1:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put mp3.txt
local: mp3.txt remote: mp3.txt
227 Entering Passive Mode (127,0,0,1,25,17)
150 Ok to send data.
226 File receive OK.
682 bytes sent in 0.00885 secs (75 Kbytes/sec)
测试成功,匿名用户已经有了上传的权限。
几点说明:
1, anon_other_write_enable选项可以使匿名用户删除文件目录,一般不开启。
2,匿名用户要拥有上传的权限除应该在上面VSFTP的配置文件里设置几项之外,还应该使目录的其他组权限有写的权限。
c)其他的几种有用的配置选项。
1,开启ACSII上传下载传输模式
ascii_download_enable=YES //开启了下载时的ASCII模式数据传输
ascii_upload_enable=YES //开启了上传时的ASCII模式数据传输
因为二进制传输不用进行二进制和ASCII码之间的相互转化,因而速度较ASCII模式快,VSFTP在默认情况下是不开启ASCII码传输模式的,上述两个语句使ASCII上传下载传输模式分别开启。
2,更改FTP服务器默认监听端口
listen_port=2121 //改变默认的21端口号为2121
3,设置用户会话的空闲中断时间
idle_session_timeout=300 //连接服务器的用户在5分钟时间内没有任何动作将被断开,默认为300
4,设置空闲的数据连接的中断时间
data_connection_timeout=300 //数据连接空闲5分钟将被断开,默认为300秒
5,设置客户端空闲时的自动中断和激活连接的时间
accept_timeout=60 //客户端建立PASV模式数据连接空闲1分钟自动中断,默认为60秒
connect_timeout=60 //客户端在中断1分钟后自动激活连接,默认为60秒
6,设置最大传输速率限制
local_max_rate=50000 //本地用户最大传输速率为50kbytes/s
anon_max_rate=30000 //匿名用户最大传输速率为30kbytes/s
若把上述的数值设为0则为不限速,这也是VSFTP的默认值。
7,设置最大客户端连接数
max_clients=30 //服务器最大连接数设为30,默认为0,即不加以限制,安全的FTP应该加以限制
8,设置客户端连接时的端口范围
pasv_min_port=50000
pasv_max_port=60000
上述语句使客户端连接端口范围在50000至60000之间,这有利于提高服务器的安全。默认两个值都是0,即不限制,使用任意端口。
9,把用户限制在家目录,即设置chroot()
chroot_local_user
chroot_list_enable
chroot_list_file
要设置chroot(),可以使用
chroot_local_user=YES
上述语句是使全部的本地用户都被限制在家目录,这无法只限制特定的用户,要限制特定用户,使用下面的方法:
chroot_local_user=NO //关闭本地用户chroot()
chroot_list_enable=YES //开启要设置chroot()用户项
chroot_list_file=/etc/vsftpd.chroot_list //指定要设置chroot()的特定用户
文件,这个文件的格式应该每个用户名占用一行
11,开启进站或进入目录的欢迎或说明性文字
dirmessage_enable=YES //开启目录文字选项
message_file=.welcome //欢迎或说明性文字文件设为.welcome,在默认是.message
这样在目录下建立文件.welcome(默认是.message),在用户进入目录时可把该文件的内容显示出来。
10,开启FTP服务器的日志功能
xferlog_enable=YES //启动日志记录功能,记录在xferlog_file指明的文件里xferlog_file=/var/log/ftp.log //日志记录在文件/var/log/ftp.log里,默认值
为/var/log/xferlog
上面不是默认配置,默认配置是如下语句
xferlog_enable=YES
vsftpd_log_file=/var/log/vsftpd.log //日志记录在/var/log/vsftpd.log里,默认也是这个文件
默认配置xferlog_std_format语句没有启用。