1.切换到root用户
2.查看是否安装vsftp,我这个是已经安装的。
1
2
|
[root@localhost vsftpd]
# rpm -qa |grep vsftpd
vsftpd-3.0.2-11.el7_2.x86_64
|
3.如果没有发现,则安装。
1
|
yum
install
vsftpd* -y
|
4.启动vsftpd服务,以及重启命令(centos7.0以上版本)
1
2
|
[root@localhost vsftpd]
# /bin/systemctl start vsftpd.service
[root@localhost vsftpd]
# /bin/systemctl restart vsftpd.service
|
低版本试一下这些命令:
1
|
/etc/init
.d
/vsftpd
restart
|
1
2
3
4
5
6
7
8
|
启动
ftp
命令
#service vsftpd start
停止
ftp
命令
#service vsftpd stop
重启
ftp
命令
#service vsftpd restart
|
设置自启:
1
|
chkconfig vsftpd on
|
5.测试一下能否登录FTP了,先安装一个ftp客户端组件。
1
|
yum -y
install
ftp
|
尝试登录一下
1
|
ftp
localhost
|
输入用户名ftp,密码随便(因为默认是允许匿名的)
登录成功,就代表ftp服务可用了。
但是,外网是访问不了的,所以还要继续配置。
6.取消匿名登录
1
|
vi
/etc/vsftpd/vsftpd
.conf
|
把第一行的 anonymous_enable=YES ,改为NO
重启
1
|
[root@localhost vsftpd]
# /bin/systemctl restart vsftpd.service
|
7.创建一个组,用于存放ftp用户
1
|
groupadd ftpgroups
|
8.创建ftp用户,并加入ftpgroups组,/home/ftp是自己建的目录,不存在就自己创建一个
1
|
useradd
-d
/home/ftp/ftptest
-g ftpgroups ftptest
|
设置密码
1
|
passwd
ftptest
|
设置不允许用于用户登录
1
|
usermod
-s
/sbin/nologin
ftptest
|
可以看到已经建好了
1
|
[root@localhost vsftpd]
# ls /home/ftpftpn ftptest
|
这时候重启一下vsftpd服务
1
|
/bin/systemctl
restart vsftpd.service
|
登录一下看,可以登录了,但是发现也能访问上层目录,甚至根目录,这不是我们希望的,修改一下配置文件让其只能访问自身目录
1
|
vi
/etc/vsftpd/vsftpd
.conf
|
如下设置
1
2
3
4
5
|
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=
/etc/vsftpd/chroot_list
local_root=
/home/ftpftpn
|
另外,从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列项:
1
|
allow_writeable_chroot=YES
|
好了,这样就只能访问自身所属目录。
如果希望某个用户可以访问根目录,把用户名加入
1
|
/etc/vsftpd/chroot_list
|
不存在就创建这个文件,一行一个用户名。
如果还是登陆不了ftp,那很有可能是selinux的问题,这个东西把他关掉就行
1
2
|
vi
/etc/selinux/config
SELINUX=enforcing
#设置成SELINUX=disabled
|
重启一下服务器
1
|
reboot
|
重启完了别忘了把vsftpd服务打开,默认是自启的。
如果连接不上,很可能是防火墙阻止了,尝试关闭防火墙
1
2
3
|
systemctl stop firewalld.service
#停止firewall
systemctl disable firewalld.service
#禁止firewall开机启动
firewall-cmd --state
#查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
|
如果出现远程文件夹无法显示的情况,请使用主动模式连接,在你的ftp工具上设置。
------------------------------------------------------------------------------------------------------------------------
如新建一个admin用户,若指定admin只能访问/home /uftp目录下的administer目录。则:
(1) 首先要存在administer目录,并且保证administer目录不具备可写的权限,否则将造成登录失败。可使用“chmod a-w + 目录”进行权限的修改。
(2) “vi / etc/vsftpd.conf”,在文件末位添加local_root=/home/uftp/administer.其中administer即是限制访问的目录。
(3) 将chroot_list_enable=YES,chroot_list_file=/etc/vsftpd/vsftpd.chroot_list,注释去掉。
(4) 若没有vsftpd.chroot_list文件,则新建vsftpd.chroot_list文件:“vi / etc/vsftpd/vsftpd.chroot_list”.
(5) 在文件里添加“admin”用户。
(6) 重启ftp服务器。“service vsftpd restart”。
在默认配置下,本地用户登入FTP后可以使用cd命令切换到其他目录,这样会对系统带来安全隐患。可以通过以下三条配置文件来控制用户切换目录。
chroot_list_enable=YES/NO(NO)
设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。
chroot_list_file=/etc/vsftpd.chroot_list
用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。
chroot_local_user=YES/NO(NO)
用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。
通过搭配能实现以下几种效果:
①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
②当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
③当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
④当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。