Ubuntu搭建你的专属FTP服务器

·FTP ·Ubuntu ·Linux

ftp服务拥有两种连接模式:主动port和被动passive,客户端连接ftp时现在默认一般的都是使用被动模式的,主动模式需要另外指定,像Windows自带的连接ftp的功能我是找不到指定主动模式的选项的,因此本文章只选择被动模式连接(相比之下,主动模式的配置更加容易)。

安装ftp,ubuntu下是安装vsftpd库,如:

sudo apt-get install vsftpd
systemctl enable vsftpd.service//设置自启动
service vsftpd start//启动
接下来讲解如何以用户的方式远程登录ftp,通常需要先创建一个用于连接ftp的用户:
sudo useradd ftpuser//创建一个名为ftpuser的用户
sudo passwd ftpuser//为此用户设置密码
......
sudo usermod -d /home/ftphome ftpuser//为ftpuser指定它的家目录,需事先创建这个家目录
现在我们需要开放ftp的默认连接端口,被动模式还需要开放大于1024的某范围的端口,这是它与主动模式的最大区别,我们使用ufw开放端口:
ufw allow 21/tcp
ufw allow 20/tcp
ufw allow 7400:7600/tcp//开启某范围端口(自定义)是被动模式必须的
通过用户名和密码的方式登录远程ftp
现在,我们开始为事先的ftpuser用户设置远程ftp权限。首先创建一个目录,并且给这个目录设置它的所属用户,此用户是ftpuser:
mkdir /ftp-share
chmod -R 755 /ftp-share
sudo chown  ftpuser /ftp-share//将此目录所属主设为ftpuser
接着创建'/etc/vsftpd.chroot_list'这个文件,然后打开/etc/vsftpd.conf文件,将文件底部的内容改为如下所示的允许被动模式连接:
ssl_enable=NO
pasv_enable=YES
pasv_max_port=7600
pasv_min_port=7400
继续更改配置文件(文件中没有的便填入,有的就修改)如下:
#限定用户只能操作用户目录
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
#用户目录有写权限,允许写权限
allow_writeable_chroot=YES
#是否允许用户列出目录的内容
#dirlist_enable=YES
#设置登录ftp后允许操作的目录,即事先属于ftpuser的目录
local_root=/ftp-share
然后保存好文件内容,重启vsftpd服务:
sudo restart vsftpd
我们试试用某个客户端主机连接一下ftp,输入用户名ftpuser和它的密码,指定好主机ip,并且确保连接选项为被动passive模式,通常这是默认的。成功连接后,就会显示目录ftp-share中的内容,客户端可以下载和编辑文件,若想禁止编辑,一样可以设置,配置文件修改了相应的目录ftp-share的权限最好也跟着相应更改,这里就不多说了。

通过匿名方式登录远程ftp
ftp同样可以不输入密码直接连接,我们创建一个用于匿名方式登录ftp所操作的目录,如/ftp-open-share并且权限为755,不必设置所属主,默认root即可。然后编辑/etc/vsftpd.conf,在顶部输入如下内容:
#匿名用户访问
anonymous_enable=YES
local_enable=YES
#匿名用户默认目录
anon_root=/ftp-open-share
#anon_upload_enable=YES#允许匿名用户上传文件?
#anon_mkdir_write_enable=YES#允许匿名用户创建目录和写权限?
#anon_other_write_enable=YES#允许匿名用户删除、重命名等其它权限?
#匿名不必输入密码
no_anon_password=YES
write_enable=YES
保存好文件内容,重启vsftpd服务,这样客户端主机就可以直接连接远程ftp而不必输入密码,但只有下载权限(这是安全的)。你仍可以通过ftpuser用户以密码方式登录ftp操作ftp-share目录,两全其美!

来自:计算机系统与软件工具
更新于2022-03-12 10:40:57 发表于2022-03-12 09:56:25


此内容暂不允许评论



公元2024年甲辰龍年,平安健康、龍行天下!