sudo apt install vsftpd
现在用你的ftp工具,输入IP、你的ubuntu的账号密码 、端口22,就可以访问了,对,就是这么简单。
此时,通过ftp访问的就是你的家目录。理论上来说,在没有更改配置文件的情况下,任何可以登录linux的正常用户都可以访问ftp,但是,在我本人的实践中,有些用户即使账号密码正确,也不能正常访问该目录,具体原因我未深究。
另外安装后会生成一个ftp账号,其他文章说可以访问,但是我试了后并不能访问,需要去掉/etc/passwd 中ftp账号后的bin/false才可以访问去,原因是/etc/ftpuser中禁止了bin/false,详细内容可以查看:ubuntu vsftpd 530 Login incorrect 根本原因和解决方案 - 简书 (jianshu.com)
但是此时你只有读取的权限,而且默认读取的是‘home/你的用户名‘这个目录,如果你想上传文件,那么请往下看。
安装软件后,默认会创建一个/srv/ftp的目录,我们将我们的ftp目录放在这个目录下。
首先,我们需要给该目录一个足够大的盘符(对于盘符不了解的同学可以好好看看鸟哥笔记),这里需要用到挂载,这里需要用到/etc/fstab
该目录是在linux启动阶段读取的一个文件,指定了目录和硬盘分区的关系,按顺序执行里面的命令就把目录自动挂载成功了
这里,我们编辑fstab目录,新增挂载盘和目录的对应
sudo vim /etc/fstab
/dev/sda1 /srv/ftp ext4 default 00
执行下面命令,ubuntu将会自动重新挂载所有盘符
sudo mount -a
我们在该挂载目录下新增一个目录,用于存放我们的ftp文件
sudo mkdir /srv/ftp/RD_Release
1、新增一个公共用户,访问ftp
sudo useradd –m fibocom -d /srv/ftp/RD_Release
sudo passwd fibocom
------------------------------------------------------------废弃-------------------------------------------------------------
如果没有指定目录,默认会生成一个目录,这时你需要更改默认目录
更改默认目录并删除原家目录,实际上就是更改 /etc/passwd 文件
sudo mkdir /opt/ftpShare
sudo usermod -d /opt/ftpShare fibocom
如果用户被占用,使用kill杀死进程
usermod: user fibocom is currently used by process 23434
yjl@fibocom:~$ sudo kill -9 23434
yjl@fibocom:~$ sudo usermod -d /opt/ftpShare/f1 fibocom
usermod: user fibocom is currently used by process 23550
yjl@fibocom:~$ sudo kill -9 23550
更改后,/etc/passwd中的fibocom用户应该显示如下,如果不是,手动更改
fibocom:x:1009:1010::/opt/ftpShare:/bin/bash
-----------------------------------------------------------废弃-------------------------------------------------------------
4、使用ftp访问,此时用我们新建的用户访问
此时,上传一个文件,如果失败了,可以看看你的家目录权限是否正确,不正确使用下面的命令修改
sudo chown ftp用户:ftp用户组 RD_Release/
试试上传下载,都是OK的
----------------------------------------------------------待商榷--------------------------------------------------------------
1、配置ftp可读写
a、配置ftp可以上传,取消下面一行的注释,然后重启ftp
sudo vim /etc/vsftpd.conf
write_enable=YES
b、重启服务器
sudo service vsftpd restart
或
sudo systemctl restart vsftpd.service
----------------------------------------------------------待商榷--------------------------------------------------------------
上面的说法来源于:如何在Ubuntu 18.04上使用VSFTPD设置FTP服务器 (myfreax.com),但是我们上面已经试过了,在没有开启write_enable时,也是可以读写的
2、限制用户只能打开某个目录
我们关注配置文件中的三个参数
关于这三个参数的关系,我们摘录文章内容如下:vsftpd 配置:chroot_local_user与chroot_list_enable详解_Laurence的技术博客-CSDN博客_chroot_list
- chroot_local_user #是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)
- chroot_list_enable #是否启动限制用户的名单 YES为启用 NO禁用(包括注释掉也为禁用)
- chroot_list_file=/etc/vsftpd/chroot_list #是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于chroot_local_user的值,我们可以这样记忆: chroot_local_user总是一个全局性的设定,其为YES时,全部用户被锁定于主目录,其为NO时,全部用户不被锁定于主目录。那么我们势必需要在全局设定下能做出一些“微调”,即,我们总是需要一种“例外机制",所以当chroot_list_enable=YES时,表示我们“需要例外”。而”例外“的含义总是有一个上下文的,即,当”全部用户被锁定于主目录“时(即chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(即chroot_local_user=NO),"例外"“就是:要被锁定的用户是哪些。这样解释和记忆两者之间的关系就很清晰了!
对于chroot_local_user与chroot_list_enable的组合效果,可以参考下表:
chroot_local_user=YES chroot_local_user=NO chroot_list_enable=YES 1.所有用户都被限制在其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制 1.所有用户都不被限制其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,受到限制 chroot_list_enable=NO 1.所有用户都被限制在其主目录下 2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户 1.所有用户都不被限制其主目录下 2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户
需要注意的是:
所以,我修改vsftpd.conf ,释掉了chroot_local_user=YSE的井号,相当于上表中的左下角的,所有用户都只能访问自己目录下的列表,没有例外
yjl@fibocom:~$ sudo vim /etc/vsftpd.conf
再次刷新
sudo service vsftpd restart
或
sudo systemctl restart vsftpd.service
实际试了下,重启成功了
但我我发现修改了改文件并没有任何效果,这个ftp用户既可以访问上层目录,也可以上传文件,还可以删除文件,也就是说,上面的配置对vsftp一点用也没有。
vsftpd.conf不生效的原因探究一(可以跳过)
关于这个问题,网上讨论的人很少,有两种解决方案
1、更换其他ftp软件 configuration - vsftpd disregards changes to config file - Server Fault,在这个答案中提问者使用了bftpd,他认为原因应该是没有在 systemd 中加载 vsftpd 服务,这个暂未研究
2、,vsftpd修改配置后不能马上生效的问题-chenjintao_ii-ChinaUnix博客 这篇文章提到,由于之前的连接占用了进程,该进程并未读取新的配置文件,这个我试过,删除所有相关pid后,改配置文件仍然不生效
ps -eLf |grep vsftpd |grep -v grep
sudo kill -9 PID
vsftpd.conf不生效的原因探究二
一次偶然的操作,我暂停了vsftpd服务器,在linux中使用ftp localhost连接本地ftp提示连接失败,但是在windows中连接依然连接成功,这成功引起了我的怀疑:修改配置文件不生效的原因是否是因为服务器上还有另一个ftp server在运行?
ps -ef |grep ftp
yjl 29603 29602 0 14:41 ? 00:00:00 /usr/lib/openssh/sftp-server
yjl 30553 30552 0 15:00 ? 00:00:00 /usr/lib/openssh/sftp-server
tester1 31082 31081 0 15:08 ? 00:00:00 /usr/lib/openssh/sftp-server
tester1 31191 31190 0 15:10 ? 00:00:00 /usr/lib/openssh/sftp-server
tester1 31385 30845 0 15:16 pts/2 00:00:00 ftp localhost
tester1 31486 31485 0 15:18 ? 00:00:00 /usr/lib/openssh/sftp-server
tester1 31694 31693 0 15:21 ? 00:00:00 /usr/lib/openssh/sftp-server
yjl 31957 29441 0 15:31 pts/0 00:00:00 grep --color=auto ftp
使用ps命令查看当前有哪些ftp在运行,看到一串sftp-server,这是什么呢?
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。
来源:Linux sftp命令详解 - 小a玖拾柒 - 博客园 (cnblogs.com)
通过上面的说明我明白了,我是用错了工具,我一直使用windows的filezilla连接linux的vsftpd,但是我使用的是sftp协议,根据上面的说明,这个sftp不是一个程序,而是ssh自带的工具,所以说,即使没有安装vsftpd,也可以通过filezilla连接到linux!我一直以为是修改配置文件不生效,原来原因根本和配置文件没关系,我一直在用一个和vsftpd不相干的东西来调试vsftpd,我真是醉了。。
vsFTP配置总结之虚拟用户及权限管控_u011457628的专栏-CSDN博客_vsftp虚拟用户配置
vsftpd Sample Configuration with user_list [FastHandle - IT Operations Examples]
一、bug描述:执行 sudo systemctl restart vsftpd.service 后不生效
原因:可能是/etc/init.d下没有vsftpd ,导致vsftpd.conf不生效 ,我没有研究怎么把vsftpd加入到init.d中(当然你也可以花时间研究一下),而是采用了重启vsftpd,再次访问ftp就正常了。(我的vsftp 启动不了呢???)
sudo service vsftpd restart
二、ftp连接时提示500 OOPS: priv_sock_get_result
原因是我屏蔽了/etc/vsftpd.conf中的pam_service_name=vsftpd
参考LinuxQuestions.org - vsftpd problem 500 oops:socket
三、530 Login incorrect.
原因是 /etc/ftpuser中禁止了bin/false,详细内容可以查看:ubuntu vsftpd 530 Login incorrect 根本原因和解决方案 - 简书 (jianshu.com)
启用本地用户 FTP 访问
现在,如果需要,您可以使本地用户使用其帐户登录到FTP服务器。为此,我们需要在/etc/vsftpd.conf上启用以下设置
local_enable=YES
使用此选项,用户可以登录到服务器。要进行测试,只需执行以下命令
ftp localhost
来源:
How To Install An FTP Server On Ubuntu With Vsftpd
linux ftp服务器设置,只允许用户访问指定的文件夹,禁止访问其他文件夹
如何在Ubuntu 18.04上使用VSFTPD设置FTP服务器
FTP Server
如何使用 Ubuntu Server 設定 Linux FTP Server (manjaro.site)