详解vsftpd搭建ftp和ftps(2)

三、vsftpd的工作特性
在/etc/vsftpd/vsftpd.conf中定义了vsftpd的工作特性
[root@stu2~]# grep -v "^#" /etc/vsftpd/vsftpd.conf | grep -v "^$"
anonymous_enable=YES//允许匿名用户访问,若禁止使用NO
local_enable=YES//允许本地用户访问,若禁止则使用NO
write_enable=YES//表示是否允许本地用户有上传权限的,YES表示可以,NO表示禁止,也取决于客户端连接时使用的客户端工具
local_umask=022//设置本地用户上传建立文件时的权限掩码
dirmessage_enable=YES//用户切换进入目录时显示.message(如果存在)文件的内容
xferlog_enable=YES//是否开启传输日志的
connect_from_port_20=YES//连接控制端口为20
xferlog_std_format=YES//启动标准xferlog的日志格式,若禁用此项,将使用vsftpd自己的日志格式
listen=YES//是否以独立运行的方式监听服务
pam_service_name=vsftpd//设root
userlist_enable=YES//表明启动本地用户
tcp_wrappers=YES//是否开启tcp_wrappers主机访问控制
除此之外还有注释掉的,有些可以启动的具体为:
#anon_upload_enable=YES#是否匿名用户上传文件
#anon_mkdir_write_enable=YES#匿名用户具有创建目录的权限
可以加一条
Anon_other_write_enable=YES#其他权限,可是设置文件的属主属组,删除等操作
#xferlog_file=/var/log/xferlog#记录传输日志内容的
#idle_session_timeout=600#命令连接的超时时间
#data_connection_timeout=120#数据连接的超时时间
#chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list

chroot: 禁锢用户于其家目录中,实现方式有两种:
    1、所有的本地用户都被锁定在家目录下了
    chroot_local_user=YES
[root@station92~]# ftp 172.16.2.1
Connectedto 172.16.2.1 (172.16.2.1).
220 (vsFTPd2.2.2)
Name(172.16.2.1:root): gentoo
331 Pleasespecify the password.
Password:
230 Loginsuccessful.
Remotesystem type is UNIX.
Usingbinary mode to transfer files.
ftp> pwd
257"/"            //本地用户被锁定在家目录下
ftp> ls
227Entering Passive Mode (172,16,2,1,195,144).
150 Herecomes the directory listing.
-rw-r--r--    1 500    500          921 Aug 19 00:16fstab
-rw-rw-r--    1 500    500      73175088 Jul 10 03:18linux-3.10.tar.xz
226Directory send OK.
ftp> cd/
250Directory successfully changed.
ftp> ls
227Entering Passive Mode (172,16,2,1,231,75).
150 Herecomes the directory listing.
-rw-r--r--    1 500    500          921 Aug 19 00:16fstab
-rw-rw-r--    1 500    500      73175088 Jul 10 03:18linux-3.10.tar.xz
226Directory send OK.

2、禁锢/etc/vsftpd/chroot_list中的指定用户,黑名单
[root@stu2vsftpd]# touch chroot_list
[root@stu2vsftpd]# vim chroot_list
在chroot_list中写上CentOS 和gentoo两个用户,用户hailian没写入,进行验证
            chroot_list_enable=YES
            chroot_list_file=/etc/vsftpd/chroot_list
[root@station92~]# ftp 172.16.2.1
Connectedto 172.16.2.1 (172.16.2.1).
220 (vsFTPd2.2.2)
Name(172.16.2.1:root): centos
331 Pleasespecify the password.
Password:
230 Loginsuccessful.
Remotesystem type is UNIX.
Usingbinary mode to transfer files.
ftp> pwd
257"/"                //锁定用户的家目录
ftp> bye
221Goodbye.
[root@station92~]# ftp 172.16.2.1
Connectedto 172.16.2.1 (172.16.2.1).
220 (vsFTPd2.2.2)
Name(172.16.2.1:root): gentoo
331 Pleasespecify the password.
Password:
230 Loginsuccessful.
Remotesystem type is UNIX.
Usingbinary mode to transfer files.
ftp> pwd
257"/"                //锁定用户的家目录
ftp> bye
221Goodbye.
[root@station92~]# ftp 172.16.2.1
Connectedto 172.16.2.1 (172.16.2.1).
220 (vsFTPd2.2.2)
Name(172.16.2.1:root): hailian
331 Pleasespecify the password.
Password:
230 Loginsuccessful.
Remotesystem type is UNIX.
Usingbinary mode to transfer files.
ftp> pwd
257"/home/hailian"      //没有锁定

3、不禁锢/etc/vsftpd/chroot_list中的指定用户,白名单
            chroot_local_user=YES           
            chroot_list_enable=YES
            chroot_list_file=/etc/vsftpd/chroot_list
进行验证:
[root@station92~]# ftp 172.16.2.1
Connectedto 172.16.2.1 (172.16.2.1).
220 (vsFTPd2.2.2)
Name(172.16.2.1:root): gentoo
331 Pleasespecify the password.
Password:
230 Loginsuccessful.
Remotesystem type is UNIX.
Usingbinary mode to transfer files.
ftp> pwd
257"/users/gentoo"
ftp> bye
221Goodbye.
[root@station92~]# ftp 172.16.2.1
Connectedto 172.16.2.1 (172.16.2.1).
220 (vsFTPd2.2.2)
Name(172.16.2.1:root): centos
331 Pleasespecify the password.
Password:
230 Loginsuccessful.
Remotesystem type is UNIX.
Usingbinary mode to transfer files.
ftp> pwd
257"/users/centos"
ftp> bye
221Goodbye.
[root@station92~]# ftp 172.16.2.1
Connectedto 172.16.2.1 (172.16.2.1).
220 (vsFTPd2.2.2)
Name(172.16.2.1:root): hailian
331 Pleasespecify the password.
Password:
230 Loginsuccessful.
Remotesystem type is UNIX.
Usingbinary mode to transfer files.
ftp> pwd
257"/"


user_list:定义ftp用户白名单和黑名单:
        1、白名单:
            userlist_enable=YES
            userlist_deny=NO
        2、黑名单:
            userlist_enable=YES
            userlist_deny=YES


传输速率限定,默认单位为字节:
        anon_max_rate=10240#定义匿名用户的最大传输速率,单位为字节
        local_max_rate=10240#限定本地用户最大的下载速度为10KB/s
连接数限定:
        max_clients=100
        max_per_ip=2
修改配置文件后要重新加载服务
servicevsftpd reload
注:
 1)由于此配置文件检查要求比较严格,不可随意出现任意空白字符,例如write_enable=YES之前不可出现任何空白字符;等号两侧不可出现任何空白字符。
  2)当更改这个文件中的这些权限时一定要确保SElinux是关闭的,不然会被阻止的。
验证:
在服务器端的主配置文件/etc/vsftpd/vsftpd.conf
write_enable=YES//表示是否允许本地用户有上传权限的,YES表示可以,NO表示禁止,也取决于客户端连接时使用的客户端工具,匿名用户不可以上传
[root@station92~]# ftp 172.16.2.1
Connectedto 172.16.2.1 (172.16.2.1).
220 (vsFTPd2.2.2)
Name(172.16.2.1:root): ftp
331 Pleasespecify the password.
Password:
230 Loginsuccessful.
Remotesystem type is UNIX.
Usingbinary mode to transfer files.
ftp> put/etc/fstab
local:/etc/fstab remote: /etc/fstab
227Entering Passive Mode (172,16,2,1,50,195).
550Permission denied.//匿名用户不允许有上传权限
本地用户:
[root@station92~]# ftp 172.16.2.1
Connectedto 172.16.2.1 (172.16.2.1).
220 (vsFTPd2.2.2)
Name(172.16.2.1:root): gentoo
331 Pleasespecify the password.
Password:
230 Loginsuccessful.
Remotesystem type is UNIX.
Usingbinary mode to transfer files.
ftp> put/etc/fstab
local:/etc/fstab remote: /etc/fstab
227Entering Passive Mode (172,16,2,1,90,137).//ftp工作在被动模式下
553 Couldnot create file.//表明上传功能没问题,但无法创建文件
ftp> pwd
257"/users/gentoo"

上述无法上传文件的原因是因为客户端工具问题,用lftp既可以实现上传功能
[root@station92~]# lftp gentoo@172.16.2.1
Password:
lftpgentoo@172.16.2.1:~> ls     
-rw-rw-r--    1 500    500      73175088 Jul 10 03:18linux-3.10.tar.xz
lftpgentoo@172.16.2.1:~> put /etc/fstab
921 bytestransferred    //实现了上传功能
lftpgentoo@172.16.2.1:~> ls
-rw-r--r--    1 500    500          921 Aug 19 00:16fstab
-rw-rw-r--    1 500    500      73175088 Jul 10 03:18linux-3.10.tar.xz

启动匿名用户可以上传文件的,在服务器端的主配置文件/etc/vsftpd/vsftpd.conf中启用anon_upload_enable=YES
# servicevsftpd reload
用匿名用户连接服务器时,仍不能上传文件,原因是匿名用户在/var/ftp/没用创建目录的功能,需要在服务器端进行设置:
[root@stu2~]# cd /var/ftp/
[root@stu2ftp]# ll
total 4
drwxr-xr-x2 root root 4096 Aug 18 01:58 pub
[root@stu2ftp]# mkdir upload
[root@stu2ftp]# setfacl -m u:ftp:rwx upload/
[root@stu2ftp]# getfacl upload/
# file: upload/
# owner:root
# group:root
user::rwx
user:ftp:rwx
group::r-x
mask::rwx
other::r-x

然后在客户端实现上传功能
[root@station92~]# lftp 172.16.2.1
lftp172.16.2.1:~> ls
drwxr-xr-x    2 0      0            4096 Aug 17 17:58 pub
drwxrwxr-x    2 0      0            4096 Aug 19 02:54upload
lftp172.16.2.1:/> cd upload/
lftp172.16.2.1:/upload> ls
lftp172.16.2.1:/upload> put /etc/fstab
921 bytestransferred

需要注意的是vsftpd要求对/var/ftp/这个目录只有root用户具有写权限,其他任何用户都不允许
启用#anon_mkdir_write_enable=YES#匿名用户具有创建目录的权限
[root@station92~]# lftp 172.16.2.1
lftp172.16.2.1:~> ls
drwxr-xr-x    2 0      0            4096 Aug 17 17:58 pub
drwxrwxr-x    2 0      0            4096 Aug 19 08:16upload
lftp172.16.2.1:/> cd upload/p
cd: Accessfailed: 550 Failed to change directory. (/upload/p)
lftp172.16.2.1:/> cd upload/
lftp172.16.2.1:/upload> ls
-rw-------    1 14      50            921 Aug 19 03:46fstab
-rw-------    1 14      50            103 Aug 19 08:16issue
lftp172.16.2.1:/upload> mkdir test
mkdir ok,`test' created
lftp172.16.2.1:/upload> ls
-rw-------    1 14      50            921 Aug 19 03:46fstab
-rw-------    1 14      50            103 Aug 19 08:16issue
drwx------    2 14      50          4096 Aug 19 08:21test

ftp的传输是明文的,要实现加密功能则需要ftps

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/d677b7d6f104c01f87b5d3e4639cf26c.html