Kylin V10 SP1 安装ftp服务器+客户端

由于业务需求,本文以离线方式安装ftp服务器和客户端并完成记录

安装

离线安装

参考Linux本地下载软件包并离线安装

在线安装

如果不需要离线安装,则使用命令

apt-get install vsftpd
apt-get install ftp

安装完成后,笔者的机器在/etc​目录生成了ftp配置文件,也有可能在/etc/vsftpd​目录下。

配置 & 启动

修改配置文件/etc/vsftpd.conf

囫囵吞枣版

# 如果存在则只需要去掉注释,如果不存在则追加

listen=NO
listen_ipv6=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
enonymous_enable=NO
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=YES
tcp_wrappers=YES
local_root=/home/testuser	# 本地ftp用户目录,在之后的步骤会创建
allow_writeable_chroot=YES
write_enable=YES	# 允许写操作
local_umask=022		# 设置本地文件上传时的权限掩码
anon_upload_enable=NO	# 禁止匿名用户上传文件

打破沙锅版

# 如果存在则只需要去掉注释,如果不存在则追加

# 当设置为 NO 时,vsftpd 将不会监听 IPv4 地址的 FTP 连接,而是默认使用 IPv6 地址。
# 若设置为 YES,则表示监听 IPv4 地址。此项与 listen_ipv6 配合使用。
listen=NO

# 当设置为 YES 时,vsftpd 会监听所有 IPv6 地址。
# 如果你的服务器只使用 IPv6 地址,这项设置是必需的。设置为 NO 则禁用 IPv6。
listen_ipv6=YES

# 启用后,本地用户(非匿名用户)将被限制在其home目录内,
# 无法访问home目录外的任何目录。常用于提升安全性。
chroot_local_user=YES

# 启用后,`chroot_list_file` 中列出的用户将不受 `chroot_local_user` 的限制,
# 即可以访问其home目录之外的目录。
chroot_list_enable=YES

# 该文件列出了不受 `chroot_local_user` 限制的用户。
# 用户列表中的用户将被允许访问其home目录以外的目录。
chroot_list_file=/etc/vsftpd/chroot_list

# 该选项控制是否允许匿名用户访问 FTP 服务。
# 设置为 NO 时,禁止匿名用户访问;设置为 YES 时,允许匿名用户访问。
enonymous_enable=NO

# 指定使用的 PAM 服务名称,用于身份验证。通常情况下保持默认设置即可。
pam_service_name=vsftpd

# 启用此选项时,`userlist_file` 中列出的用户会被控制。
# 如果 `userlist_deny=YES`,则列出的用户无法访问 FTP 服务;如果 `userlist_deny=NO`,则只有列出的用户可以访问 FTP 服务。
userlist_enable=YES

# 配合 `userlist_enable=YES` 使用。
# 设置为 YES,则 `userlist_file` 中列出的用户会被拒绝访问 FTP 服务;
# 设置为 NO,则只有 `userlist_file` 中列出的用户能够访问 FTP 服务。
userlist_deny=YES

# 启用 TCP Wrappers 功能,允许通过 `/etc/hosts.allow` 和 `/etc/hosts.deny` 文件对 FTP 服务的访问进行控制。
# 设置为 YES 时,启用基于主机的访问控制。
tcp_wrappers=YES

# 设置本地ftp用户的根目录,用户登录时将进入该目录。这个目录通常是用户的home目录。
# 如果配置了 `chroot_local_user=YES`,用户将只能在此目录下操作。
local_root=/home/testuser

# 启用此选项后,允许本地用户在启用了 `chroot_local_user=YES` 的情况下拥有可写权限的home目录。
# 如果未启用该选项,将无法在home目录内执行写操作,除非目录具有额外的权限。
allow_writeable_chroot=YES

# 启用此选项后,允许本地用户(和匿名用户,具体取决于其他设置)进行文件写入操作。
# 设置为 YES 时,FTP 用户可以上传文件、修改文件、删除文件等。
# 通常需要配合 `local_root` 和 `anon_upload_enable` 配置项来决定哪些用户可以进行写操作。
write_enable=YES

# 设置本地用户上传文件时的文件权限掩码。常见的 `umask` 设置:
#   022 - 文件权限为 `644`,目录权限为 `755`(标准设置)。
#   027 - 文件权限为 `640`,目录权限为 `750`。
#   002 - 文件权限为 `664`,目录权限为 `775`。
local_umask=022

# 控制匿名用户是否可以上传文件。设置为 YES 时,允许匿名用户上传文件;设置为 NO 时,禁止匿名用户上传文件。
# 通常,如果不希望允许匿名上传,应该设置为 NO。
anon_upload_enable=NO

创建测试用户

命令行创建用户和设置密码

useradd testuser
passwd testuser
> 输入密码...

在Linux下,ftp用户通常与系统用户绑定。

创建用户目录并授权

mkdir -p /home/testuser
chown -R testuser:testuser /home/testuser

创建允许访问的用户名单,加入前面创建的用户

vim /etc/vsftpd.chroot_list

image

启动

# 启动
systemctl start vsftpd

# 重启,每次修改配置文件后都需要
systemctl restart vsftpd

# 停止
systemctl stop vsftpd

# 查看状态
systemctl status vsftpd

# 查看端口状态(默认端口21)
lsof -i :21

尝试登录

在文件资源管理器文件地址栏输入ftp://ip地址​,也可以在终端输入(需要安装ftp客户端)ftp ip地址​,使用刚刚创建的testuser登录。

终端登录成功后,测试上传下载

image

put /home/test.txt test.txt

image

get test.txt /home/root/test.txt

image

Debug

553 Could not create file.

image

550 Permission denied.

image

530 Permission denied.

image

  1. 检查/etc/vsftpd.chroot_list​是否加入了用户名

  2. 检查用户目录/home/testuser​或目标目录/home/testuser/data​的权限

image

500 OOPS: could not read chroot() list file:/etc/vsftpd.chroot_list

image

500 OOPS: cannot read user list file:/etc/vsftpd.user_list

image

  1. 检查文件是否创建