一、实验环境:
主机名 IP(Static) 系统 配置 用途
FTPServer 192.168.220.203 CentOS-6.4-x86_64-mini 2CPU,1G RAM,40G DISK,1网卡 FTPServer
二、FTP用户:
admin 上传/下载/修改/删除权限。
upload 上传/下载权限。
user 下载权限。
三、系统配置:
1、基础配置:
[root@ftpserver ~]# vi /etc/selinux/config
SELINUX=enforcing -------------> SELINUX=disabled
[root@ftpserver ~]# service iptables stop
[root@ftpserver ~]# service ip6tables stop
[root@ftpserver ~]# chkconfig --level 3 iptables off
[root@ftpserver ~]# chkconfig --level 3 ip6tables off
[root@ftpserver ~]# reboot
2、创建FTP目录并设置权限:
[root@ftpserver ~]# mkdir /ftp
[root@ftpserver ~]# chmod -R 777 /ftp
3、安装必要软件:
[root@ftpserver ~]# yum -y install vsftpd pam* db4*
[root@ftpserver ~]# chkconfig --level 3 vsftpd on
4、创建FTP虚拟宿主账户:
[root@ftpserver ~]# useradd developer -s /sbin/nologin //建立虚拟账户宿主,不用于登录。
[root@ftpserver ~]# useradd vsftpd -s /sbin/nologin
[root@ftpserver ~]# cd /etc/vsftpd/
[root@ftpserver vsftpd]# vi vsftpd.conf
#不允许匿名用户访问,默认是允许
anonymous_enable=NO
#设定本地用户可以访问。注意:如果该项目设定为NO那么所有虚拟用户将无法访问。
local_enable=YES
#设定可以进行写操作。
write_enable=YES
#设定上传后文件的权限掩码.
local_umask=022
#禁止匿名用户上传
anon_upload_enable=NO
#禁止匿名用户建立目录
anon_mkdir_write_enable=NO
#设定开启目录标语功能
dirmessage_enable=YES
#设定开启日志记录功能
xferlog_enable=YES
#设定端口20进行数据连接
connect_from_port_20=YES
#设定禁止上传文件更改宿主
#chown_uploads=YES
#拥有匿名用户上传文件所有权的用户
#chown_username=whoever
#设定Vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来,并且由于这里更改了Vsftpd的服务宿主用户为手动建立的Vsftpd。必须注意给与该用户对日志的写入权限,否则服务将启动失败。
xferlog_file=/var/log/xferlog
#设定日志使用标准的记录格式
xferlog_std_format=YES
#设定空闲连接超时时间,这里使用默认
idle_session_timeout=600
#设定单次最大连续传输时间,这里使用默认
data_connection_timeout=120
#设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题,比如日志文件就必须给与该用户写入权限等
#nopriv_user=ftpsecure
nopriv_user=vsftpd
#设定支持异步传输功能
async_abor_enable=YES
#设定支持ASCII模式的上传和下载功能
ascii_upload_enable=YES
ascii_download_enable=YES
#设定Vsftpd的登陆标语
ftpd_banner=Welcome to EZCloud FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd/banned_emails
# users to NOT chroot().
#将所有用户锁定在主目录
chroot_local_user=YES
#禁止用户登出自己的FTP主目录
chroot_list_enable=NO
#chroot_list_file=/etc/vsftpd/chroot_list
#禁止用户登陆FTP后使用"ls -R"的命令。该命令会对服务器性能造成巨大开销。如果该项被允许,那么挡多用户同时使用该命令时将会对该服务器造成威胁
ls_recurse_enable=NO
#设定该Vsftpd服务工作在StandAlone模式下
listen=YES
listen_ipv6=NO
#设定PAM服务下Vsftpd的验证配置文件名
pam_service_name=vsftpd
#设定userlist_file中的用户将不得使用FTP
userlist_enable=NO
#服务器使用tcp_wrappers作为主机的访问控制方式
tcp_wrappers=YES
#设定启用虚拟用户功能
guest_enable=YES
#指定虚拟用户的宿主用户
guest_username=developer
#设定虚拟用户的权限符合他们的宿主用户
# virtual_use_local_privs=YES
#设定虚拟用户个人Vsftp的配置文件存放路径
user_config_dir=/etc/vsftpd/vconf
#设定PAM服务下Vsftpd的验证配置文件名
pam_service_name=vsftpd
#放开匿名用户浏览权限
anon_world_readable_only=NO
5、创建配置文件存放路径:
[root@ftpserver vsftpd]# mkdir vconf
[root@ftpserver vsftpd]# cd vconf
6、创建虚拟用户:
[root@ftpserver vconf]# vi vir_user
admin
admin123456
upload
upload123456
user
user123456
7、生成数据库:
[root@ftpserver vconf]# db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db
8、设置数据库文件访问权限:
[root@ftpserver vconf]# chmod 600 /etc/vsftpd/vconf/vir_user.db
[root@ftpserver vconf]# chmod 600 /etc/vsftpd/vconf/vir_user
修改/etc/pam.d/vsftpd内容:
[root@ftpserver vconf]# vi /etc/pam.d/vsftpd
#%PAM-1.0
#session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-auth
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vconf/vir_user
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vconf/vir_user
9、创建用户配置文件,文件名要与vir_user一致:
[root@ftpserver vconf]# vi admin
local_root=/ftp
virtual_use_local_privs=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
[root@ftpserver vconf]# vi upload
local_root=/ftp
local_umask=022
virtual_use_local_privs=NO
download_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
[root@ftpserver vconf]# vi user
local_root=/ftp
virtual_use_local_privs=YES
write_enable=NO
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
10、设置语言:
[root@ftpserver vconf]# vi /etc/sysconfig/i18n
LANG="zh_CN.GB18030"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:zh_CN.GB2312:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
11、重启FTP服务:
[root@ftpserver vconf]# service vsftpd restart
关闭 vsftpd:[确定]
为 vsftpd 启动 vsftpd:[确定]