前言
本文基于其他学习地方借鉴,基于centos7系统部署vsftpd,实现ftp服务。
vsftpd服务部署
ftp部署可直接rpm包部署也可编译安装部署,通常我们使用rpm包部署,也可直接通过本地镜像yum方式安装
vsftpd服务rpm包部署
准备:vsftpd的rpm包,一般最好是从公司获取,或网上下载;如vsftpd-3.0.3-9.el7.x86_64.rpm
步骤:
1、服务器命令行执行
#rpm -ivh vsftpd-3.0.3-9.el7.x86_64.rpm
2、安装完成后编辑配置文件/etc/vsftpd/vsftpd.conf
将listen_ipv6=yes修改为listen_ipv6=no,将listen=no改为listen=yes
3、启动服务命令行执行
#systemctl start vsftpd
#systemctl status vsftpd (查看vsftpd运行情况)
4、如果服务器有开启防火墙,则在防火墙上添加
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
5、使用widows访问:ftp://192.168.10.21验证
功能优化配置
1、使用匿名用户登陆ftp,上传文件,在/var/ftp/upload目录下创建文件夹
1.1 编辑配置文件/etc/vsftpd/vsftpd.conf 添加一下内容
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
1.2 再运行setsebool -P ftpd_anon_write on
mkdir /var/ftp/upload;chmod 777 /var/ftp/upload
1.3 验证,登陆lftp 192.168.10.21 再upload目录下创建文件夹ceshi
2、修改匿名用户默认根目录为/var/www/html
2.1 mkdir -p /vat/www/html;touch /var/www/html/aaa.txt
2.2 编辑/etc/vsftpd/vsftpd.conf配置文件中添加以下内容:
anon_root=/var/www/html
allow_writeable_chroot=YES
2.3 运行:systemctl restart vsftpd
2.4 在本地计算机上访问ftp://192.168.10.21验证
3、配置用户test密码123456 用户家目录为/usr/local/test
3.1 useradd -d /usr/local/test -s /sbin/nologin test
echo 123456 | paswd --stdin test
3.2 通过本机访问验证
ftp://test:123456@192.168.10.21/
4、将登陆用户禁锢在家目录中
4.1 编辑配置文件vsftpd.conf添加chroot_local_user=YES
4.2 在另一台服务器192.168.10.22上安装lftp工具验证
rpm -ivh lftp-4.4.8-11.el7.x86_64.rpm
lftp test:123456@192.168.10.21 登陆后切换目录操作均可成功
在192.168.10.21服务器上重启vsftpd,重启后由于改了配置,test账户登陆此服务器vsftpd后无法切换目录则达到禁锢目录的作用了
5、使用test用户进行上传下载文件
setsebool -P ftpd_full_access on
在192.168.10.22服务器上lftp test:123456@192.168.10.21
put 上传文件
get 下载文件
6、实现限制test用户的访问
在/etc/vsftpd/user_list 添加test用户
再用test用户登陆就会提示 登陆失败:530permission denied
7、修改ftp默认端口号为6069
编辑/etc/vsftpd/vsftpd.conf 添加以下内容
listen_port=6069
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30000
pasv_promiscuous=YES
编辑 vim /etc/services 修改成以下内容
ftp 6069/
ftp 6069/
运行
firewall-cmd --zone=public --add-port=30000/tcp --permanent
firewall-cmd --zone=public --add-port=6069/tcp --permanent
firewall-cmd --reload
8、可以使用root用户登陆ftp
8.1 编辑/etc/vsftpd/user_list和/etc/vsftpd/ftpusers两个设置文件脚本,将root账户前加上#号变为注释(即让root账户从禁止登陆的用户列表中排除
8.2 systemctl restart vsftpd
9、开启ftp的日志功能
9.1 编辑/etc/vsftpd/vsftpd.conf添加以下内容
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES
9.2 重启服务systemctl restart vsftpd
登陆ftp测试后查看/var/log下面有vsftpd.log这个文件
其他实用案例
1、更改ftp上传目录
添加的FTP用户默认上传目录是指向“/home/test”下如果需要更改上传目录,需要执行“usermod”命令来更改。
下面举例将test的上传目录指向:/usr/local下testdir文件夹下:
[root@localhost local]# mkdir testdir
更改test目录的属性:
[root@localhost local]# chown test testdir/
[root@localhost local]# chgrp ftp testdir/
[root@localhost local]# chmod 755 testdir/
[root@localhost local]# ll | grep testdir
drwxr-xr-x 2 test ftp 4096 4月 18 16:37 testdir
[root@localhost local]# usermod -d /usr/local/testdir/ test
这个命令有一个风险,如果test正在线上使用,则该命令并不生效.其实在新建test用户时已经采用-d指定上传目录,这个语句显得多余.
查看“Directory”的值是否更改成功:
[root@localhost local]# finger test
Login: ipanelftp Name: (null)
Directory: /usr/local/testdir/ Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.
到这步上传的目录已经更改完成,重新启动vsftp即可:
[root@localhost /]# /usr/local/sbin/vsftpd &
附上编译安装vsftpd案例
1.安装vsftp2.0.5
将“vsftpd-2.0.5.tar.gz.tar”放到/usr/local目录下执行:
[root@localhost local]# tar -zxvf vsftpd-2.0.5.tar.gz.tar
[root@localhost local]# cd vsftpd-2.0.5
[root@localhost vsftpd-2.0.5]# make
make后将等待编译完毕在往下执行:
[root@localhost vsftpd-2.0.5]# make install
等待安装完毕。
[root@localhost vsftpd-2.0.5]# cp vsftpd.conf /etc
查看安装后的vsftp文件,安装完成。
[root@localhost vsftpd-2.0.5]# cp RedHat/vsftpd.pam /etc/pam.d/ftp
[root@localhost vsftpd-2.0.5]# cd ../sbin/
[root@localhost sbin]# ls
vsftpd
2.添加FTP用户
添加一个test用户属于FTP组
[root@localhost /]# adduser -G ftp -s /sbin/nologin test -d /usr/local/test
****这个地方不能用g,否则test会把ftp当做主属主,-d 表示给新建ftp用户指定上传目录,不采用默认的上传目录,****
查看用户是否添加成功:
[root@localhost /]# more /etc/passwd |grep test
test:x:556:50::/usr/local/test:/sbin/nologin
修改密码为:123456
[root@localhost local]# passwd test
Changing password for user ipanelftp.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
3.配置vsftpd.conf文件
下面的配置不适合匿名用户登陆,只适用于系统用户也就是/etc/passwd中用户的登录。这个配置没有考虑到安全性方面。
[root@localhost /]# vi /etc/vsftpd.conf
去掉:
local_enable=YES #说明:在/etc/passwd内的账号才能以实体用户的方式登入vsftpd
write_enable=YES #说明:允许使用者上传资料
local_umask=022
前面的“#”
在文件末尾加入:
chroot_local_user=YES #说明:限制用户的访问只能在自己的家目录内
listen=YES #说明:设定vsftpd 是以 standalone 的方式来启动
4.启动vsftp
前面的配置我们将vsftp设置为采用单独运行模式运行,在运行vsftp需要禁用xinetd方式启动:
[root@localhost ~]# chkconfig vsftpd off
[root@localhost ~]# chkconfig vsftpd --list
显示 vsftp off。
启动vsftp:
[root@localhost /]# /usr/local/sbin/vsftpd &
如果启动提示:
500 OOPS: could not bind listening IPv4 socket
执行:
[root@localhost /]# /etc/rc.d/init.d/xinetd stop
或者检查一下vsftp是否已经启动,结束其进程:
[root@localhost test]# pkill vsftp
学无止境,有不正之处,敬请指正!