乌班图快速创建ftp
需求:乌班图22.04安装配置ftp,然后配置一个用户,用户名deviceftp密码aaaa,并且设置端口为60021,并且限制在/app/deviceftp目录下,不允许匿名登录
在Ubuntu 22.04上安装和配置FTP服务器的步骤如下:
-
安装FTP服务器:
- 你可以使用vsftpd(非常安全的FTP守护进程),它是一个稳定、安全且快速的FTP服务器。
- 安装命令:
sudo apt-get install vsftpd
-
配置FTP服务器:
- 编辑vsftpd的配置文件:
sudo nano /etc/vsftpd.conf
- 在文件中进行以下设置:
- 禁用匿名登录:确保
anonymous_enable=NO
- 启用本地用户登录:
local_enable=YES
- 允许用户上传文件:
write_enable=YES
- 设置用户根目录:
chroot_local_user=YES
- 添加或取消注释:
user_sub_token=$USER
和local_root=/app/$USER
- 禁用匿名登录:确保
- 保存并关闭文件。
- 编辑vsftpd的配置文件:
-
添加FTP用户:
- 添加用户:
sudo adduser deviceftp
- 按提示设置密码(例如,你指定的
aaaaa
)。 - 将用户的主目录设置为
/app/deviceftp
:sudo usermod -d /app/deviceftp deviceftp
- 添加用户:
-
创建并设置目录:
- 创建目录:
sudo mkdir -p /app/deviceftp
- 设置目录权限:
sudo chown deviceftp:deviceftp /app/deviceftp
- 设置适当的读写权限。
- 创建目录:
-
更改FTP端口:
- 再次编辑vsftpd配置文件:
sudo nano /etc/vsftpd.conf
- 更改端口,添加或修改:
listen_port=60021
- 保存并关闭文件。
- 再次编辑vsftpd配置文件:
-
重启FTP服务:
- 重启vsftpd服务以应用更改:
sudo systemctl restart vsftpd
- 重启vsftpd服务以应用更改:
-
配置防火墙(如果需要):
- 如果你的服务器运行了防火墙,你需要允许FTP端口(在这里是60021):
sudo ufw allow 60021/tcp
- 启用防火墙:
sudo ufw enable
(如果尚未启用)
- 如果你的服务器运行了防火墙,你需要允许FTP端口(在这里是60021):
-
测试FTP连接:
- 你可以使用FTP客户端软件,如FileZilla,来测试设置。
- 确保使用新配置的端口60021以及创建的用户凭据进行连接。
请注意,FTP协议本身不是加密的,因此可能不适合传输敏感数据。如果需要安全传输,考虑使用SFTP或FTPS。
要通过命令行测试FTP服务器连接,你可以使用ftp
或lftp
命令。这里是如何使用它们的步骤:
使用 ftp
命令
-
安装 ftp 客户端(如果尚未安装):
sudo apt-get install ftp
-
连接到FTP服务器:
- 使用命令
ftp -p [服务器IP] 60021
来连接服务器。 - 在提示时输入用户名和密码(在这个例子中是
deviceftp
和aaaaa
)。
- 使用命令
-
测试命令:
- 登录后,你可以使用FTP命令如
ls
,put
,get
等来测试。 - 例如,输入
ls
查看远程目录列表。
- 登录后,你可以使用FTP命令如
-
退出FTP:
- 完成测试后,输入
bye
或quit
来退出FTP会话。
- 完成测试后,输入
使用 lftp
命令
lftp
是一个更强大的FTP客户端,支持FTP、FTPS和SFTP。
-
安装 lftp 客户端(如果尚未安装):
sudo apt-get install lftp
-
连接到FTP服务器:
- 使用命令
lftp -u deviceftp -p 60021 [服务器IP]
来连接服务器。 - 输入密码(
aaaaa
)。
- 使用命令
-
测试命令:
- 在
lftp
命令行中,同样可以使用如ls
、put
、get
等命令来测试服务器。
- 在
-
退出lftp:
- 使用命令
exit
退出。
- 使用命令
请确保你使用的是服务器的正确IP地址。如果你在本地机器上测试,这通常是127.0.0.1
或localhost
。如果服务器位于你的本地网络之外,请确保使用正确的外部IP地址,并且所需端口在任何网络防火墙和路由器上都已开放。
错误信息 “500 OOPS: vsftpd: refusing to run with writable root inside chroot()” 表明 vsftpd 配置中有一个安全限制。在启用了 chroot
隔离的情况下,vsftpd 不允许用户的根目录是可写的。这是为了增加服务器的安全性。
要解决这个问题,你有两个选择:
选项 1: 修改用户的根目录权限
这个选项涉及改变/app/deviceftp
目录的权限,使其变为不可写。
-
更改目录权限:
执行以下命令使根目录变为只读:sudo chmod a-w /app/deviceftp
-
创建一个子目录供上传和下载:
你可能还需要在/app/deviceftp
下创建一个子目录,以便deviceftp
用户可以上传和下载文件:sudo mkdir /app/deviceftp/upload sudo chown deviceftp:deviceftp /app/deviceftp/upload
选项 2: 调整 vsftpd 配置以允许可写的根目录
如果你确实需要让根目录是可写的,可以通过在vsftpd配置中添加一个设置来允许这种行为。
-
编辑 vsftpd 配置文件:
sudo nano /etc/vsftpd.conf
-
添加或取消注释配置:
在配置文件中添加以下行:allow_writeable_chroot=YES
-
重启 vsftpd:
保存文件并重启 vsftpd 服务:sudo systemctl restart vsftpd
完成这些步骤后,再次尝试使用 lftp
连接并执行 ls
命令,看看问题是否得到解决。记住,选项 2 降低了安全性,因此如果你的FTP服务器不是面向公网或安全性要求不高,可以考虑使用这个选项。如果安全性很重要,则建议使用选项 1。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!