背景:
实验室有一台Windows电脑,一台Ubuntu台式机;我常常在电脑上写写报告,收发文档啥的,在台式机上写写代码,瞧瞧数据。并且这两台笔记本又常常须要互相传数据,一个图片,一小段代码啥的,之前总是用U盘传数据。并且用U盘总归太麻烦,作为共产主义的接班人linux使用ftp传输文件,如何能把宝贵的生命浪费在如此没有意义的事情上呢。因而决定在ubuntu上搭一个ftp服务器linux系统编程,一来便捷自己传文件,二来还可以实验室同事之间的数据共享也容易了不少。
目标:
搭建一个可以用的ftp服务器
环境:
ubunt18.04笔记本一台
Windows笔记本一台
同在一个局域网下orUbuntu有网段ip
要求:
熟悉Ubuntu控制台基本操作
步骤(在Ubuntu上执行):
1安装vsftpd
sudo apt-get install vsftpd -y
vsftpd是在Linux上被广泛使用的FTP服务器linux教程,支持三种登录形式:
2检测服务器是否运行
sudo netstat -nltp | grep 21
若果没有运行
sudo systemctl start vsftpd.service
FTP合同默认使用21端口作为服务端口。
3配置用户目录
新建用户目录
sudo mkdir /home/ftp
新建一个用户
sudo useradd -d /home/ftp -s /bin/bash ftpuser
为用户设置密码
sudo passwd ftpuser
删掉掉pam.d中vsftpd,由于该配置文件会造成使用用户名登陆ftp失败:
sudo rm /etc/pam.d/vsftpd
设置用户只能通过ftp访问
sudo usermod -s /sbin/nologin ftpuser
此时我们输入
tail /etc/passwd
查看用户
ftp用户:这个用户就是ftp服务器中的匿名用户,其主目录是/srv/ftp。
ftpuser用户:这个用户是我们创建的本地用户linux使用ftp传输文件,其主目录就是/home/ftp。/sbin/nologin指的是不能像别的用户使用shell登录,只能通过ftp登入。
4配置服务器
更改vsftpd配置
sudo chmod a+w /etc/vsftpd.conf
更改/etc/vsftpd.conf文件中的配置:
vim /etc/vsftpd.conf
直接将如下配置添加到配置文件最下方
# 限制用户对主目录以外目录访问
chroot_local_user=YES
# 指定一个 userlist 存放允许访问 ftp 的用户列表
userlist_deny=NO
userlist_enable=YES
# 记录允许访问 ftp 用户列表
userlist_file=/etc/vsftpd.user_list
# 不配置可能导致莫名的530问题
seccomp_sandbox=NO
# 允许文件上传
write_enable=YES
# 使用utf8编码
utf8_filesystem=YES
之后创建vsftpd.user_list文件
sudo touch /etc/vsftpd.user_list
sudo chmod a+w /etc/vsftpd.user_list
将ftpuser用户添加到vsftpd.user_list中,占一行。
vim /etc/vsftpd.user_list
5配置目录
设置主目录访问权限(只读):
sudo chmod a-w /home/ftp
新建公共目录,并设置权限(读写):
sudo mkdir /home/uftp/public && sudo chmod 777 -R /home/uftp/public
重启服务,大功告成
sudo systemctl restart vsftpd.service
6试一下
打开windows我的笔记本,根据如下格式输入
ftp://用户名:密码@Ubuntu主机的ip
像我的主机IP是192.168.38.119,密码假定是111
这么我就要像下列图片一样输入.
这么成功以后图示如下
public就是我们之前创建的文件夹,uftp1和uftp2以后会说到。此时我们就可以直接向public中拖拽传输文件了。
在Ubuntu上也是这么
7进阶一下下
输入指令看一下public文件夹的权限
ls -al /home/ftp/
见到public的权限是rwxrwxrwx,也就是说谁都可以在这个文件夹下边创建和删掉文件。自己用其实没问题。
假如实验室有两个朋友也想把数据保存在这台ftp服务器上,这么继续使用public文件夹储存文件就不太合适了。
每位朋友须要的应当是这样的文件夹:1、自己有创建、删除的权限2、其他人只有下载和查看的权限。
步入到/home/ftp文件夹下
sudo mkdir ufp1
新建用户
sudo useradd -d /home/ftp -s /bin/bash ufp1
设置密码
sudo passwd ufp1
将用户加入到vsftpd.user_list中
vim /etc/vsftpd.user_list
更改ufp1文件夹权限
sudo chmod 755 uftp1
sudo chown ufp1 uftp1
sudo chgrp ufp1 uftp1
此时只有ufp1用户能够在uftp1文件夹下创建和删掉文件,而其他用户只能查看和下载uftp1中的文件。
至此,一个简易的ftp服务器就搭建成功了。