检查软件包
在开始安装Vsftpd之前,请确认已经获得以下软件包。
软件包 | 文件说明 |
---|---|
vsftpd-3.0.2-22.el7.x86_64.rpm | vsftpd安装包,必须在centos7版本以上安装。 |
libdb-5.3.21-24.el7.x86_64.rpm、libdb-java-5.3.21-24.el7.x86_64.rpm、libdb-tcl-5.3.21-24.el7.x86_64.rpm、llibdb-utils-5.3.21-24.el7.x86_64.rpm | DB4软件包,用来支持文件数据库 |
安装Vsftpd
- 以root用户登录linux系统;
- 创建vsftpd目录用于存放安装软件;
mkdir /usr/vsftpd
- 利用SSH或WinSCP等工具将vsftpd的安装包上传到
/usr/vsftpd
目录下; - 进入
/usr/vsftpd
目录:
cd /usr/vsftpd
- 安装Vsftpd:
rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm
- 创建vsftpd需要的特殊目录(如果已经存在则跳过此步骤):
mkdir /usr/share/empty
- 根据自己的需要创建ftp目录结构,并全部赋予可读写权限(以小编自己的目录为例):
mkdir /FTP
mkdir /FTP/excelloaddir
mkdir /FTP/main
mkdir /FTP/main/default
mkdir /FTP/unuploaddir
mkdir /FTP/transcode
mkdir /FTP/transcode/HD
mkdir /FTP/transcode/SD
mkdir /FTP/uploaddir
mkdir /FTP/liveEpg
mkdir /FTP/excelloaddir/640x480
mkdir /FTP/nonetranscode
mkdir /FTP/main/channelPoster
mkdir /FTP/main/category
mkdir /FTP/nonetranscode/640x480
mkdir /FTP/un_zip_live_epg
mkdir /FTP/mediaDeficiency
chmod 777 /FTP/*
将需要上传的文件传到对应文件夹下。
安装db4软件包
- 以root用户登录linux系统;
- 利用SSH或WinSCP等工具将db4的软件包
libdb-5.3.21-24.el7.x86_64.rpm、libdb-java-5.3.21-24.el7.x86_64.rpm、libdb-tcl-5.3.21-24.el7.x86_64.rpm、libdb-utils-5.3.21-24.el7.x86_64.rpm
上传到/usr/vsftpd
目录下; - 进入该目录:
cd /usr/vsftpd
- 安装db4软件包,用来支持文件数据库:
rpm -Uvh --nodeps libdb-5.3.21-24.el7.x86_64.rpm
rpm -Uvh libdb-java-5.3.21-24.el7.x86_64.rpm
rpm -Uvh libdb-tcl-5.3.21-24.el7.x86_64.rpm
rpm -Uvh libdb-utils-5.3.21-24.el7.x86_64.rpm
- 检测db4是否安装:
db_load
显示如下信息,则表示db4安装成功:
配置Vsftpd
- 修改/etc/vsftpd/vsftpd.conf文件:
- 备份
/etc/vsftpd/vsftpd.conf
文件:
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
- 打开
/etc/vsftpd/vsftpd.conf
文件:
vim /etc/vsftpd/vsftpd.conf
- 修改/etc/vsftpd/vsftpd.conf文件,将以下内容拷贝到文件中,可以到备份文件中查看各参数的相关说明。(按“i”进入编辑模式,编辑完成后按“ESC”退出编辑模式,按“:wq”保存):
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=NO
tcp_wrappers=YES
#ftp的根目录
local_root=/FTP/
ftpd_banner=Welcome to cms FTP server
#虚拟用户的具体权限配置
user_config_dir=/etc/vsftpd/userconf
- 配置虚拟用户的登录名和密码:
(1)创建用户密码文件vsftpuser.txt:
vim /etc/vsftpd/vsftpuser.txt
(2)编辑/etc/vsftpd/vsftpuser.txt文件,输入如下内容后保存。(按“i”进入编辑模式,编辑完成后按“ESC”退出编辑模式,按“:wq”保存):
root
123456
其中,单数行为用户名,偶数行为密码。
(3)使用db_load生成用户口令库文件:
db_load -T -t hash -f /etc/vsftpd/vsftpuser.txt /etc/vsftpd/vsftpuser.db
(4)查看用户口令文件是否生成
find /etc/vsftpd/vsftpuser.db
(5)修改该口令库文件的权限
chmod 600 /etc/vsftpd/vsftpuser.db
(6)查看该口令库文件权限
ls -l /etc/vsftpd/vsftpuser.db
ls -l /etc/vsftpd/vsftpuser.db
系统显示如下信息,说明修改口令库文件权限成功。
- 编辑虚拟用户所需的PAM配置文件
(1)打开/etc/pam.d/vsftpd文件:
vim /etc/pam.d/vsftpd
(2)2. 修改/etc/pam.d/vsftpd文件,注释掉文件中所有的内容,然后添加:
如果不是64位机器,在文件末尾添加如下两行:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpuser
如果是64位机器,则在文件末尾添加下面两行:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpuser
注意:查看系统是32还是64可以使用 uname -a
命令查看。
- 创建虚拟用户权限配置文件
(1)创建虚拟用户对应权限配置的目录
mkdir /etc/vsftpd/userconf
(2)进入/etc/vsftpd/userconf目录
cd /etc/vsftpd/userconf
(3)创建root配置文件
vim root
(4)编辑root文件,输入如下内容后保存。(按“i”进入编辑模式,编辑完成后按“ESC”退出编辑模式,按“:wq”保存)
guest_enable=YES
#guest_username=ftpusercms
anon_world_readable_only=NO
anon_upload_enable=YES
write_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_max_rate=5000000
anon_umask=022
- 配置root用户访问权限
(1)进入/etc/vsftpd目录
cd /etc/vsftpd
(2)创建chroot_list文件:
vim chroot_list
(3)编辑chroot_list文件,输入如下内容后保存。
root
ftpuser4transcode
- 修改SELinux设置
(1)打开/etc/selinux/config文件:
vim /etc/selinux/config
(2)编辑/etc/selinux/config文件,修改SELINUX的值为disabled。
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
(3)重启Linux系统
reboot
(4)重新登录服务器后,查看是否设置成功:
getsebool -a | grep ftp
系统显示如下信息,说明设置成功。
- 创建4个不能登录系统的用户(ftpusertranscode,ftpusercms,ftpusermain,ftpusercpm)以下语句执行会提示用户已经建立。请仍然将语句执行完。
useradd -d /FTP -s /sbin/nologin ftpusermain
useradd -d /FTP -s /sbin/nologin ftpusercms
useradd -d /FTP -s /sbin/nologin ftpusertranscode
useradd -d /FTP/main -s /sbin/nologin ftpusercpm
- 注意:如果是Redhat6.3 系统,会提示用户已经添加。
启动Vsftpd
- 以root用户登录vsftpd服务器;
- 启动vsftpd服务
systemctl start vsftpd
- 查看状态
systemctl status vsftpd
- 开机自动启动配置
- 打开开机自启动vsftpd服务,命令:
chkconfig vsftpd on
; - 关闭开机自启动vsftpd服务,命令:
chkconfig vsftpd off
;
- 打开开机自启动vsftpd服务,命令:
验证Vsftpd
- 在验证之前,我们需要确认linux系统上的防火墙是否已经关闭,相关具体命令查看博客文章https://blog.csdn.net/houwanle/article/details/98979603;
- 在接下来将要远程登录的用户,在linux系统中的/etc/vsftpd/ftpusers文件里有没有被禁掉;
在完成上面的步骤后,在其他电脑(Windows)上运行cmd,在c盘下创建test.txt文件输入test,进行如下操作:
- 登录
- 测试上传
- 测试下载
用记事本打开test1.txt内容和test.txt一样,说明vsftpd安装正确。
**注意:**在上传和下载的时候会报如下错误:
解决办法:
第一条命令可以解决的话,就不用执行第二条命令了;
//o 表示其他以外的人,+ 表示增加权限,w 表示可写入
sudo chmod o+w /(这里是可访问文件夹的路径) //注意这里写目录的绝对或相对路径,不是直接写根目录'/'
sudo chmod 777 -R /(跟上面一样) //将目前目录下的所有文件与子目录皆设为任何人可读取和执行
sudo systemctl restart vsftpd.service //重启一下服务