ftp

vsftpd
端口:

主动模式: 20/21
被控模式: 21/ >1024

部署ftp服务

#yum install vsftpd -y
#rpm -ql vsftpd

#service vsftpd start
#chkconfig vsftpd on

访问ftp服务器需要登录
有三种方式可以登录到ftp

01 使用匿名用户(ftp、anonymous) 登录时无需密码
登录以后的目录是/var/ftp

02 系统账户登录(需要提供用户名/密码[useradd/passwd])
登录以后的目录是用户自己的家目录,有完全控制权限
(在selinux没有开启的情况下)

03 虚拟账户(所有用户映射一个本地用户)
通常这个本地用户是禁止登录系统的
虚拟账户可以实现一些上述两种用户无法实现的特殊效果


-------------------------------
ftp的客户端命令
#yum install ftp lftp -y

-------------------------------
01 实现匿名下载功能
* vsftpd服务启动以后,默认支持匿名登录下载功能
#touch /var/ftp/pub/test.txt

#wget ftp://172.16.254.101/pub/test.txt
#wget ftp://172.16.254.101/pub/test.txt -O /tmp/test.txt

02 实现匿名上传功能
# vi /etc/vsftpd/vsftpd.conf
-------------------------------
23 anon_umask=022 上传的文件的反掩码
28 anon_upload_enable=YES 允许匿名用户上传文件
-------------------------------
# mkdir /var/ftp/up
# chmod 757 /var/ftp/up
# service vsftpd restart
# ftp 172.16.254.101

03 实现匿名用户创建目录
-------------------------------
anon_mkdir_write_enable=YES
-------------------------------
# service vsftpd restart
# ftp 172.16.254.101

04 创建系统账户,然后登录到ftp服务器进程上传,下载
#useradd user1
#passwd user1
#ftp 172.16.254.101
user:user1
passwd: user1-password
-------------------------------
在网页浏览器使用系统账户登录时可以使用
ftp://user:password@IP

 

对系统用户登录ftp以后的路径问题

# vi /etc/vsftpd/vsftpd.conf

----------------------
96 #chroot_local_user=YES
97 #chroot_list_enable=YES
99 #chroot_list_file=/etc/vsftpd/chroot_list
----------------------

01 只开启chroot_local_user=YES,将所有的系统用户禁锢在自己的家目录

02 开启 96 chroot_local_user=YES
97 chroot_list_enable=YES
99 chroot_list_file=/etc/vsftpd/chroot_list
设置白名单,出现在chroot_list中的用户不受限制的

03 开启 97 chroot_list_enable=YES
99 chroot_list_file=/etc/vsftpd/chroot_list
设置黑名单,出现在chroot_list中的用户受限制


ftp虚拟账户

虚拟账户可以使用用户名/密码登录系统
但是并不是正真的系统用户。
所有的虚拟账户都映射到一个系统账户上
这个系统账户通常会被禁止登录

验证这些虚拟账户的信息使用PAM来做验证

PAM (Plugable Authentication Module)

PAM是由Sun公司开发出来的

使用pam来验证ftp虚拟用户可以验证本地文件,可以验证mysql数据库内的用户信息

本地文件需要做成数据类型,需要使用db4-utils
#yum install db4-utils -y
#cd /etc/vsftpd
#vi vuser.txt 用户/密码文件(奇数行用户;偶数行密码)
---------------
vu1
123456
vu2
654321
---------------
# db_load -T -t hash -f vuser.txt vuser.db
//将明文用户名密码变成数据格式

# file vuser.txt
vuser.txt: ASCII text
# file vuser.db
vuser.db: Berkeley DB (Hash, version 9, native byte-order)

创建系统账户(用来映射虚拟用户)
#useradd vuser -s /sbin/nologin

编辑vsftpd的配置文件
# vi /etc/vsftpd/vsftpd.conf
---------------
117 #pam_service_name=vsftpd //注释点原有pam验证文件
120 guest_enable=YES //启用虚拟用户
121 guest_username=vuser //虚拟用户映射的本地用户
122 pam_service_name=vsftpd.vu //虚拟用户验证是使用的pam文件
---------------

编写pam配置文件

# vi /etc/pam.d/vsftpd.vu
---------------
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
---------------

重启vsftpd服务
# service vsftpd restart

使用客户端命令测试是否可以使用vu1;vu2登录到ftp服务器

如果登录成功,但是提示226 Transfer done (but failed to open directory).
需要添加一条记录,anon_world_readable_only=no

加完以后,重启vsftpd服务

给不同的虚拟用户设置不同的权限

01 定义虚拟用户的自定义配置文件目录

# vi /etc/vsftpd/vsftpd.conf
---------------
user_config_dir=/etc/vsftpd/vuser_config //指定虚拟用户的配置文件目录
--------------- //每个用户在这个目录里有一个与名字相同的配置文件

# mkdir /etc/vsftpd/vuser_config
# vi /etc/vsftpd/vuser_config/vu1
---------------
local_root=/home/vuser/vu1
anon_world_readable_only=no
---------------

# mkdir /home/vuser/vu1
# chown vuser:vuser /home/vuser/vu1
# chmod 700 /home/vuser/ vu1
# service vsftpd restart
#

=================
虚拟用户高级设置
=================

virtual_use_local_privs参数
当virtual_use_local_privs=YES时,
虚拟用户和本地用户有相同的权限;

当virtual_use_local_privs=NO时,
虚拟用户和匿名用户有相同的权限,默认是NO。

virtual_use_local_privs=YES
write_enable=YES
虚拟用户具有写权限(上传、下载、删除、重命名)。

virtual_use_local_privs=NO
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
虚拟用户不能浏览目录,只能上传文件,无其他权限。

virtual_use_local_privs=NO
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=NO
虚拟用户只能下载文件,无其他权限。

virtual_use_local_privs=NO
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
虚拟用户只能上传和下载文件,无其他权限。

virtual_use_local_privs=NO
write_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
虚拟用户只能下载文件和创建文件夹,无其他权限。

virtual_use_local_privs=NO
write_enable=YES
anon_world_readable_only=NO
anon_other_write_enable=YES
虚拟用户只能下载、删除和重命名文件,无其他权限。

posted @ 2016-08-24 14:06  赤叶  阅读(390)  评论(0编辑  收藏  举报