centos7安装配置ftp(自定义用户版)

个人认为在配置自定义用户版之前,先学会配置匿名用户版,那个比较容易,那个懂了,这个也能理解不少了,正所谓学习要由浅入深...https://blog.csdn.net/qq_41020714/article/details/88068082

一:安装配置ftp

1.检查是否安装vsftpd:rpm -q vsftpd

2.若想删除vsftpd:rpm –e vsftpd-3.0.2-25.el7.x86_64

3.安装vsftpd: yum -y install vsftpd

5.设置vsftpd开机启动:systemctl enable vsftpd.service

6.查看vsftpd启动状态,确保vsftpd是启动状态

即启动!

此时ftp初步安装配置好
 


二:配置虚拟用户

1.启动ftp:systemctl start vsftpd.service

2.开放21端口:

firewall-cmd --zone=public --add-port=21/tcp --permanent

firewall-cmd --reload

若出现 FirewallD is not running  的错误
解决方法:查看防火墙是否开启:systemctl status firewalld.service
                  开启防火墙:systemctl start firewalld.service

3.关闭匿名用户:vim /etc/vsftpd/vsftpd.conf

修改以下三项:anonymous_enable=NO

#anon_upload_enable=YES

#anon_mkdir_write_enable=YES

4.重启ftp:systemctl restart vsftpd.service

通过以上四个步骤,匿名用户不可以登录了。


5.配置虚拟用户:useradd 用户名 -s /sbin/nologin

设置密码:passwd 用户名

查看用户:cut -d : -f 1 /etc/passwd

删除用户:userdel -r 用户名(-r代表把用户相对应的目录一并删除)

6.查看ftp状态:getsebool -a|grep ftp

若出现  getsebool:  SELinux is disabled  的错误
解决方法:vim /etc/selinux/config
修改:SELINUX=1,然后重启Linux

将红框内的内容设置为“on”

setsebool -P allow_ftpd_full_access on

setsebool -P tftp_home_dir on

7.配置vsftpd.conf(限制用户锁定在/home/用户名 目录)

如果设置为
chroot_local_user=YES
chroot_list_enable=YES(这行可以没有, 也可以有)
chroot_list_file=/etc/vsftpd.chroot_list
那么, 凡是加在文件vsftpd.chroot_list中的用户都是不受限止的用户
即, 可以浏览其主目录的上级目录.

chroot_local_user=NO
chroot_list_enable=YES(这行必须要有, 否则文件vsftpd.chroot_list不会起作用)
chroot_list_file=/etc/vsftpd.chroot_list
那么,把所有不希望有这种浏览其主目录之上的各目录权限的用户添加到文件vsftpd.chroot_list(此时, 在该文件中的用户都是不可以浏览其主目录之外的目录的)中即可(一行一个用户名).

这里采用第二种配置方法:

chroot_local_user=NO

chroot_list_enable=YES #(这行必须要有, 否则文件vsftpd.chroot_list不会起作用)

chroot_list_file=/etc/vsftpd/chroot_list

由于默认chroot_list不存在,所以要新建

vim /etc/vsftpd/chroot_list

然后加入上面新建的用户名(如下,一行一个用户名)

8.重启vsftpd:systemctl restart vsftpd.service

9.验证客户端是否可以访问ftp

输入:ftp://IP地址

输入用户名和密码

成功!!!(此时ftp仅允许同一局域网内访问ftp

10.开启http和ftp服务(开启后允许外网访问)

firewall-cmd --list-services(查看防火墙开启了哪些服务)

如上,则没有开通http和ftp服务

firewall-cmd --permanent --add-service=http

firewall-cmd --permanent --add-service=ftp

systemctl restart firewalld.service(重启防火墙!)

通过上面两个指令后,查看开启的服务(firewall-cmd --list-services)

则开启成功!

使用外部登陆遇到的问题如下:

1.遇到 500 OOPS: vsftpd: refusing to run with writable root inside chroot() 的问题。

解决方法:https://blog.csdn.net/qq_41020714/article/details/88338653

2.遇到 530 Permission denied

解决方法:

vim /etc/vsftpd.user_list
vim /etc/vsftpd.ftpusers

打开以上两个文件,将root注释掉(在root前加#)

3.遇到 227 Entering Passive Mode

解决方法:https://blog.csdn.net/qq_41020714/article/details/88341978

通过以上十个步骤,可以成功在外网访问虚拟用户登陆的ftp,并查看默认文件(/home/用户名)


11.修改虚拟用户存储文件路径,而非默认路径

vim /etc/vsftpd/vsftpd.conf

在文末加:

local_root=/var/zhiding

chroot_local_user=YES

anon_root=/var/zhiding

(这里我我用户指定访问的的文件是/var/zhiding

mkdir /var/zhiding(创建如上的指定文件夹,任何一个用户ftp登录到这个服务器上都会chroot到/var/zhiding目录下)

此时,客户端访问服务器的ftp,会自动到/var/指定的目录下,若没有在文件夹下加任何东西,显示文件夹为空。

mkdir hhh(在/var/zhiding目录下,再创建一个文件夹)

重启vsftpd服务(service vsftpd restart或systemctl restart vsftpd.service)

此时,再登陆到服务器的ftp,会显示hhh文件夹。

12.为指定目录设置访问权限(只查看)

cd /var/zhiding

ls -l (查看原来的权限)

chmod 774 -R /var/zhiding(为其他用户授予只读权限)

ls -l (更改完成)

在客户端访问ftp,只可查看,上传文件被拒绝,表示授权成功!!!

 

13.为指定目录设置访问权限(全部权限),将本地文件test.txt上传到hhh文件夹

cd /var/zhiding

chmod 777 -R /var/zhiding(重新授权全部权限)

ls -l (查看权限)

在本地客户端测试,test.txt可以上传到服务器,表示授权成功!!!

之后创建的用户登陆到服务器的ftp时,都会访问到/var/zhiding文件夹

 尝试了网上很多创建用户时就指定访问文件的方法,都不可行,出现无法登陆的问题(421,530等错误),找了很多方法,修改了很多配置文件都不行,快要放弃的时候找到了以上的办法,亲测有效!!


注意:在服务器后台(安全组规则)要打开21端口!

(开放方法:https://blog.csdn.net/qq_41020714/article/details/88080192

参考文献:https://www.cnblogs.com/zhi-leaf/p/5983550.html

猜你喜欢

转载自blog.csdn.net/qq_41020714/article/details/88069393