Vsftpd 安装与配置
一 安装软件 vsftpd
1 ) Ubuntu 的软件包里面有 vsftpd 的源,所以直接用 apt-get 命令安装:
sudo apt-get install vsftpd
2 )如果想直接下载源代码安装,则需要保证系统有两个用户 nobody 与 ftp 以及一个空目录。具体过程略。
二 设置目录与用户
1) 添加用户组 vsftpd, 方便权限管理 : sudo groupadd vsftpd
2) 在 /home 目录下新建目录 vsftpd: sudo mkdir vsftpd
设置权限: sudo chown oneusername:vsftpd vsftpd
sudo Chmod 750 vsftpd
设置密码 : sudo passwd oneusername
这里的 oneuser 是一个 ftp 用户名,该用户拥有 vsftpd 目录的全部权限,其用户组只有读的权限,组外的用户没有任何权限。
3) 添加本地 ftp 用户,把 ftp 用户的家目录设置到 /home/vsftpd ,用户组设置为 vsftpd ,同样为了方便权限管理。
sudo useradd –g vsftpd –d /home/vsftpd/username username
可以设置自己的家目录权限
Chmod 750 /
4) 对于本来已经存在的本地用户 (local users) ,如果需要可以把他添加到 vsftpd 用户组。这样该用户才有权限读取 /home/vsftpd/ 目录下的文件与目录。
sudo usermod –G vsftpd username
5 ) vsftpd 的匿名用户为 ftp 或者 anonymous ,他们的家目录为 /srv/ftp. 安装好后这个目录是已经有的,如果没自己新建 :
cd /srv
sudo mkdir ftp
需要改变其权限 :
chown root:ftp /srv/ftp
chmod 755 /srv/ftp
注意: srv/ftp 的权限可以自己根据需要改,但是不能为 777 。否则运行时会报错。
同时我们需要开放一个目录给匿名用户上传(有读与写的权限),另外个目录字用来下载(只有读的权限)
Cd ftp
Sudo mkdir incoming ( 下载 )
Sudo mkdir pub (上传)
Sudo chown root:ftp incoming
Sudo chown root:ftp pub
Sudo chmod 770 pub
Sudo chmod 750 incoming
三参数设置
Vsftpd 的配置文件为 /etc/vsftpd.conf
1 全局设置
write_enable=YES 开放全局用户写权限
dirmessage_enable=YES 切换目录时候显示信息
use_localtime=YES 采用本地时间
2 匿名用户设置
anonymous_enable=YES 允许匿名登录
anon_world_readable_only=NO 当设置为 YES 时候,其他关于写的设置全部失效
anon_other_write_enable=YES 允许匿名用户有写的权限
anon_upload_enable = YES 允许匿名用户上传, anon_other_write_enable 必须为 YES
anon_mkdir_write_enable=YES 关闭匿名用户的创建目录的权限
说明: 这些设置要起作用还需要匿名用户对对应的目录有写的权限(前面已经完成对 /srv/ftp 下的目录权限设置)
no_anon_password=YES 匿名用户不需要密码
3 本地用户设置
local_enable=YES 允许本地用户登录
local_root=/home/vdftpd 本地用户的根目录为 /home/vdftpd
local_umask = 027 设置本地用户的文件生成掩码为 027 ,默认为 077
chroot_list_enable=YES 开启限制本地用户在根目录的功能
chroot_local_user=YES chroot_list_file 文件中的用户可以不受根目录限制
chroot_list_file=/etc/vsftpd.chroot_list 开启限制本地用户的根目录功能时候,该文件才有效果,可以自己创建,一行一个帐号
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list 文件 /vsftpd.user_list 中指定的本地用户可以访问 FTP ,而其他本地用户不可以访问
4vsftpd 性能参数
xferlog_enabel=YES 激活上传和下载日志
pam_service_name = vsftpd 设置 PAM 认证服务的配置文件的名称,存放在 /etc/pam.d 目录
connect_from_port_20=YES 启用 FTP 数据端口的链接请求
xferlog_std_format = YES 使用标准的 FTPD XFERLOG 日志格式
idle_session_timeout=600 空闲 10 分钟后被中断
data_connection_timeout=120 数据连接空闲 2 分钟后中断
accept_timeout=60
connect_timeout = 60 客户端空闲 1 分钟自动中断连接
local_max_rate=50000
anon_max_rate=30000
本地用户的最大传输速率为 50k bytes/sec 匿名为 30
四 vsftpd 服务命令
说明:这些命令都需要管理员权限,所有如果是 ubuntu 系统,在命令前加上 sudo ;如果是 fedora 系统,则只需要在执行命令前,切换到 root 用户,命令为 su 。
1 )启动 Vsftpd 服务其命令为:
service vsftpd start
2 )停止 Vsftpd 服务的命令为:
service vsftpd stop
3 )重新启动 Vsftpd 服务的命令为:
service vsftpd restart
4 )检查 Vsftpd 服务状态的命令为:
service vsftpd status
5 )也可以使用以下命令,实现相同的结果:
/etc/init.d/vsftpd start
/etc/init.d/vsftpd stop
/etc/init.d/vsftpd restart
附: FTP 数字代码的意义
110 重新启动标记应答。
120 服务在多久时间内ready 。
125 数据链路埠开启,准备传送。
150 文件状态正常,开启数据连接端口。
200 命令执行成功。
202 命令执行失败。
211 系统状态或是系统求助响应。
212 目录的状态。
213 文件的状态。
214 求助的讯息。
215 名称系统类型。
220 新的联机服务ready 。
221 服务的控制连接埠关闭,可以注销。
225 数据连结开启,但无传输动作。
226 关闭数据连接端口,请求的文件操作成功。
227 进入passive mode 。
230 使用者登入。
250 请求的文件操作完成。
257 显示目前的路径名称。
331 用户名称正确,需要密码。
332 登入时需要账号信息。
350 请求的操作需要进一部的命令。
421 无法提供服务,关闭控制连结。
425 无法开启数据链路。
426 关闭联机,终止传输。
450 请求的操作未执行。
451 命令终止:有本地的错误。
452 未执行命令:磁盘空间不足。
500 格式错误,无法识别命令。
501 参数语法错误。
502 命令执行失败。
503 命令顺序错误。
504 命令所接的参数不正确。
530 未登入。
532 储存文件需要账户登入。
550 未执行请求的操作。
551 请求的命令终止,类型未知。
552 请求的文件终止,储存位溢出。
553 未执行请求的的命令,名称不正确