记一次搭建ftp服务器

今天早上刚到公司,老大给了个任务,需要在阿里云上搭建一台Ftp服务器。接到任务的时候,心里想着,一台ftp服务器而已,上学期间就有搭过了~ so easy ~。But … 因为搭建的环境不一样,还是遇到了一些坑,最后还是顺利解决了。下面整理一下思路~

环境介绍:
操作系统:
Linux version 3.13.0-128-generic (buildd@lgw01-39) (gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ) #177-Ubuntu SMP Tue Aug 8 11:40:23 UTC 2017

软件下载:

root@VM-0-11-ubuntu:~# apt-get update #更新apt-get资源列表
root@VM-0-11-ubuntu:~# apt-get install vsftpd  #下载vsftpd
root@VM-0-11-ubuntu:~# service vsftpd status  #查看当前vsftp的状态
vsftpd start/running, process 3045

好啦~ vsftp已经下载好啦,是不是贼简单~ 嘿嘿,下来我们就要来创建用户了

`root@VM-0-11-ubuntu:~# useradd -s /sbin/nologin -md /home/ftp_test ftp_test`

到了这一步用户就创建成功了。如果和我一样菜的人看到这里或许会问,你这useradd 和adduser 的差别在哪里呢??? 还有你useradd后面那一串到底是个啥子东西哟?
别着急,嘿嘿,这里让我们来一起分析一下:

首先,我们来讨论一下adduser和useradd有什么差别?

useradd在使用该命令创建用户是不会在/home下自动创建与用户名同名的用户目录,而且不会自动选择shell版本,也没有设置密码,那么这个用户是不能登录的,需要使用passwd命令修改密码。

那adduser呢?

adduser在使用该命令创建用户是会在/home下自动创建与用户名同名的用户目录,系统shell版本,会在创建时会提示输入密码,更加友好。

Ok,那会儿我看到两条基本上就了解了~ 这两者的区别应该就是会不会自动创建家目录和shell版本的差别了吧~ 但是,还有点问题啊,那就是 -s /sbin/nologin和-d /home/ftp_test 又是啥意思哟?讲到这里,嘿嘿,我也不懂。走,咱们继续百度去~
好了,我回来了~ 百度的结果是这样的

-s是指定用户登录后所使用的shell,默认的/bin/bash
-m 创建家目录
-d是指定用户登录后的主目录

更多详情,请查看https://www.cnblogs.com/irisrain/p/4324593.html

Ok,理解了,那/sbin/nologin又是什么意思呢,字面意思倒是懂了~ 但实际意思是?
没错,这就是你理解的字面意思,就是不让你登录呗~ 但是不让你登录并不代表你无法使用服务器的资源,它只是不会让你登录主机而已~ 当然,如果你担心使用者在遇到This account is currently not available. 一脸懵逼时,你也可以在/etc/nologin.txt编辑你的警告词~
现在让我们来使用ftp_user登录看看~ oh,出现新问题了~

命令:	USER ftp_test
响应:	331 Please specify the password.
命令:	PASS ***********
响应:	530 Login incorrect.
错误:	严重错误: 无法连接到服务器

530 ~ 这个错误我找了下他们说是因为账号密码错误的原因,但是我重新改了密码再重新尝试登录也不可以。经过google,在/etc/shells后添加了/sbin/nologin 就可以登录了。

Ok,基础登录已经完成了~
然后我发现~ 这样的话好像该服务器的全部文件都可以访问呀?那还要家目录干嘛?那还要ftp干嘛?不如直接root账号给你得了。。不行,咱们要改。
首先,改这个东西肯定得从配置入手了吧,但是第一次搭建,肯定要先去百度一下vsftp的配置语句吧~ 说走就走~
https://blog.csdn.net/liwb94/article/details/80090082
最后,其实只要添加下面这两句就可以了 ~

allow_writeable_chroot=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/vsftpd_allow_list

然后在/etc/vsftpd 添加vsftpd_allow_list 进入vsftpd_allow_list
中插入ftp_test,表示我们允许通过的用户名ftp_test

加好了没~ 我们去试试效果~

先重启service vsftpd restart

Ok ~ 测试成功~
Ok,再试试拉去文件夹和新建文件夹~
拉文件没有问题,可是新建文件夹和上传文件就会出现

命令:	STOR 新建文本文档.txt
响应:	550 Permission denied.

权限的问题,ok,我们去看看配置,
write_enable=YES #把这个打开试试

测试结果,可以了~!!

嘿嘿,现在的结果就是基本功能可以实现了~ 当前用户只能在指定的家目录活动~ 无法浏览其他目录~ 如果你不想让该用户登录的话,就不要把该账户添加到/etc/vsftpd/vsftpd_allow_list中去就 可以啦~
当然,在这次实验中我还没有做一些安全相关的配置,可以根据个人实际情况去配置:例如:禁止匿名用户登录anonymous_enable = NO

猜你喜欢

转载自blog.csdn.net/weixin_43776865/article/details/86414371