晓夏

YoungCheung

Zhang Sir's technical way

FTP服务搭建

浏览量:887

基础环境

[root@youngcheung ~]# uname -r                
2.6.32-573.el6.x86_64
[root@kyg ~]# cat /etc/redhat-release      
CentOS release 6.7 (Final)

基础环境关闭防火墙及selinux

[root@youngcheung~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@youngcheung~]# getenforce
Disabled

部署vsftpd及虚拟用户登录

[root@youngcheung~]# yum install -y vsftpd       #vsftpd安装程序
[root@youngcheung~]# yum install -y pam* db4*    #vsftpd虚拟登陆账户必要依赖包

修改/etc/vsftpd/vsftpd.conf

anonymous_enable=NO           #不允许匿名用户登录
local_enable=YES              #允许本地用户登录
write_enable=YES              #开启全局上传
local_umask=022               #设置上传umask值为系统默认umask值
dirmessage_enable=YES         #允许为配置目录显示信息
xferlog_enable=YES            #打开日志记录功能
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=YES       #是否禁锢chroot_list中的用户
chroot_list_file=/etc/vsftpd/chroot_list    # chroot_list文件保存位置
listen=YES                   #是否作为一个独立守护进程运行
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES             #开启虚拟用户
guest_username=www           #FTP虚拟用户对应的系统用户
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/ftplogin     #授权FTP虚拟用户所在目录
pam_service_name=vvsftpd      #PAM认证文件

改前备份

[root@youngcheung~]# cd /etc/vsftpd/
[root@youngcheung vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@youngcheung  vsftpd]# cp vsftpd.conf vsftpd.conf.ori
[root@youngcheungvsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh  vsftpd.conf.ori

建立相关文件及目录

[root@youngcheungvsftpd]# touch /etc/vsftpd/chroot_list
[root@youngcheungvsftpd]# mkdir /etc/vsftpd/ftplogin

创建FTP虚拟登录账号

创建FTP虚拟账号明文文件:

[root@youngcheung vsftpd]# touch vuser
[root@youngcheungvsftpd]# cat vuser
tank
123456
boy
123456

生成pam校验数据库文件

[root@youngcheungvsftpd]# db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/login.db
[root@youngcheungvsftpd]# chmod 600 vuser

为了安全起见,建议在生成校验数据库之后,删除vuser文件; 或者修改vuser权限,不让别的用户读

添加新的pam service

[root@youngcheungpam.d]# touch /etc/pam.d/vvsftpd
[root@youngcheungpam.d]# cat vvsftpd
#%PAM-1.0
##auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
##account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/login
(注意如果是32位系统,那就用32位的校验,本例是64位的)

FTP虚拟用户赋予权限(增加权限配置文件)详解

配置文件存放路径,就是conf中的user_config_dir,本文就是/etc/vsftpd/ftplogin,文件名必须和用户名相同

文件配置详解,默认路径需要提前用mkdir建立好,目录拥有者设置为conf中的guest_username,本文为www

 

#有上传/下载/修改权限

anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
local_root=/data/upload/

#只有上传/修改权限

anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
local_root=/data/upload/

#只有下载权限

anon_world_readable_only=NO
local_root=/data/upload/

建立本地映射用户并设置宿主目录权限

所有的FTP虚拟用户需要使用一个系统用户(www),这个系统用户不需要密码。

[root@youngcheung~]# useradd -d /data/upload www -s /sbin/nologin -M
[root@youngcheung~]# mkdir /data/upload -p
[root@youngcheung~]# chown -R www.www /data/upload
 
[root@youngcheung~]# cd /etc/vsftpd/ftplogin/
[root@youngcheungftplogin]# cat tank      #创建一个以FTP虚拟用户命名的文件
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
local_root=/data/upload/

启动ftp服务

[root@youngcheungftplogin]# /etc/init.d/vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]
[root@youngcheungftplogin]# netstat -lntup|grep vsftpd
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      1554/vsftpd

浏览器利用虚拟用户登录

ftp://ip地址(10.10.10.100

blob.png

 

12FTP客户端利用虚拟用户登录

blob.png 

 

 


神回复

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。