centos 构建ftp服务器
- 先判断是否安装了
vsftpd
rpm -qa | grep vsftpd
如果没有出现任何东西说明,没有安装过。
- 安装
vsftpd
yum -y install vsftpd
- 安装位置为
/etc/vsftpd
具体文件详情为 - 修改端口号,启动
vsftpd
在
/etc/vsftpd
目录下,在vsftpd.conf
添加内容,加上下面一句,也就是listen_port=64421
,启动vsftpd
,执行下面的语句进行启动systemctl start vsftpd # 启动 执行这一句就好 systemctl enable vsftpd # 设置开机自启 systemctl restart vsftpd # 重新启动 systemctl stop vsftpd # 停止 systemctl status vsftpd # 查看状态
这一步还需在防火墙开放端口,执行下面的语句,由于
vsftpd
服务用了64421的端口,因此需要在防火墙开放该端口,具体如下所示:firewall-cmd --query-port=64421/tcp # 防火墙开放该端口 firewall-cmd --reload # 重新加载防火墙 firewall-cmd --list-port # 查看哪些端口是开启的
- 测试是否启动成功先查看服务是否启动,执行下面语句,如下所示:
systemctl status vsftpd
ftp localhost 64421
记得带上端口号不然会出现连接会被拒绝,如下所示 ftp: connect :连接被拒绝,出现如下所示即代表能连接匿名登录
vsftpd
安装完成后,可以在服务器上测试是否能登录成功,默认支持匿名方式的,控制是否能匿名的是在vsftpd.conf
文件中,代码为anonymous_enable=YES
,具体如下所示:非匿名登录
一般ftp服务器是不应该允许匿名登录的,不安全,因此需要指定的用户名和密码才能登录,那么需要建一个新用户来登录,如下所示:
useradd test1 passwd test1
如果用
test1
这个用户来登录会出现无法登录的问题,具体如下解决:vim /etc/pam.d/vsftpd #找到:auth required pam_shells.so #在之前加上#号注释掉。
重启
vsftpd
即可systemctl restart vsftpd
非匿名可能会出现访问不了
ftp
服务器,具体非匿名问题解决参考: vsftp新建用户无法登录? - 配置虚拟用户 重要
由于直接新建的用户登录到
ftp
服务器可以随意切换到服务器目录,会很不安全,因此需要配置虚拟用户。- 新建一个目录,这个目录用于所有用户登录之后都是到这个目录
# 1.这里是在/data/ftp 下新建目录 mkdir ftphome cd ftphome # 2.添加一个新用户,并将ftproot目录交给ftproot这个用户管理 useradd -d /data/ftp/ftphome/ftproot ftproot # 3.在etc/vsftpd下新建一个txt文件,将映射的用户名和密码写在该目录下 cd /etc/vsftpd vim login.txt
具体的内容如下所示:
这表明创建了2个虚拟用户
# 4.将txt文件转换成数据库(db)文件 db_load -T -t hash -f login.txt /etc/vsftpd/login.db
# 5.修改配置文件pam.d,pam.d文件是验证登录配置文件 cd /etc/pam.d # 6.修改vsftpd文件,添加下述内容 vim vsftpd
# 7.修改vsftpd.conf文件 vim /etc/vsftpd/vsftpd.conf
去掉
xferlog_file=/var/log/xferlog
前面的#号。这条语句是指明日志文件所在目录,在配置文件后面添加如下内容:guest_enable=YES guest_username=ftproot // 指定映射关系 user_config_dir=/etc/vsftpd/vuser_conf // 指定虚拟用户根目录
# 8.创建用户权限,当权限内容未指定时,默认使用本地策略 # 1)首先创建/etc/vsftpd/vuser_conf目录 mkdir /etc/vsftpd/vuser_conf # 2)转到/etc/vsftpd/vuser_conf目录 cd /etc/vsftpd/vuser_conf
接下来就是设置虚拟用户权限,这些虚拟用户是在上述的
login.txt
定义的,这里新建和用户名相同的文件,例如,login.txt
里面新建了bob
这个用户,并且密码为123
,那么在/etc/vsftpd/vuser_conf
目录下就需要新建一个bob
的文件,文件的内容是该用户的权限,具体如下所示:# 3) 设置虚拟用户权限 cd /etc/vsftpd/vuser_conf
vim bob
上述的
anon_world_readable_only=YES
代表bob
只有只读属性其他可配置的属性为:
anon_world_readable_only=YES // 只读 anon_upload_enable=YES // 上传 anon_mkdir_write_enable=YES // 可新建目录 anon_other_write_enable=YES // 删除权限
重启
ftp
服务systemctl restart vsftpd
# 修改属主权限,进入/ftphome目录下,将ftproot文件权限修改为777(最高权限)。然后再在/ftproot文件下添加一个文件(添加文件是为了在后面进行验证)。 cd /data/ftp/ftphome/ftproot touch a.txt
- 新建一个目录,这个目录用于所有用户登录之后都是到这个目录
- 验证虚拟用户是否可以登录
ftp
服务器验证可以登录
查看用户进入的目录
- 使用windows自带的ftp功能访问服务器,并测试
首先得打开windows的ftp功能
配置完可以进行查看,上传,删除等功能,但是不具备下载功能
- 配置下载功能
- 首先配置
ftp
的模式根据如下方式进行操作cd /etc/vsftpd vim vsftpd.conf
在
vsftpd.conf
文件最后添加pasv_enable=YES // 开启被动模式 pasv_min_port=65400 // 被动模式服务端开启的端口范围 pasv_max_port=65410
还需要开放防火墙端口:
firewall-cmd --zone=public --add-port=65400-65410/tcp --permanent
查看开放的端口
firewall-cmd --list-port
注意,
ftp
有两种模式,一种是主动模式,一种是被动模式,具体区别参照FTP的主动模式和被动模式 - 配置上传文件的权限
由于上传的文件的权限默认的是只有
600
,对应的是虚拟用户,那么需要在vsftpd.conf
配置文件中配置anon_umask=000
这样上传的文件的权限就是666
了,注意这里无需配置local_umask
的值,该值配置的是本地用户上传的权限。配置文件中umask的含义参考vsftp中的local_umask和anon_umask以及linux下 ftp服务器如何设置上传文件的权限
- 首先配置
参考文章
文章评论