简单描述搭建过程, 使用 windows 系统连接的过程, 以及中间遇到的问题
软件安装
1.线上安装使用 yum 命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 查看镜像仓库有什么, 我一般都使用阿里云的镜像仓库, 如果需要改 yum 的镜像源, 可以参考文章: yum修改镜像源
$ yum repolist
# 安装服务, 所有询问皆为 yes (-y)
$ yum -y install vsftpd
# 进入配置文件夹
$ cd /etc/vsftpd/
# 修改配置文件
$ vim vsftpd.conf
# 启动服务
$ systemctl restart vsftpd
# 添加系统用户, vsftp 可以用 linux 的用户进行登录, 但是为了系统安全, 我们设置用户为nologin状态
# 也就是说, 有这个用户, 但是不能用这个用户登录当前服务器, 只能用作登录 ftp 服务
# -d 为指定用户的工作目录(home dir, ftp服务上传文件默认就是 home 文件夹
$ useradd gomyck -s /sbin/nologin -d /home/gomyck
# 修改 gomyck 用户的密码
$ passwd gomyck
# 在 /bin/shell 文件中添加 /sbin/nologin
$ echo /sbin/nologin >> /etc/shells
# 可能需要添加防火墙规则
$ firewall-cmd --permanent --add-service=ftp
$ firewall-cmd --reload
注意事项: 配置文件使用默认的就好, 一般来说啥也不用改
关于 /etc/shells 的解释
The /etc/shells is a Linux / UNIX text file which contains the full pathnames of valid login shells. This file is used by various commands including chsh command. Please note that there are programs which consult this file to find out if a user is a normal user. For example, ftp daemons such as ftpd disallow access to users with shells not included in this file.
客户端连接
windows 客户端连接
1
2
3
4
5
6
7
8
1. win + e
2. 右键选择添加网络位置
3. 输入: ftp://192.168.1.xxx (ftp 服务器地址)
4. 取消勾选匿名登录, 并在下方输入框输入: gomyck (添加的用户)
5. 点击下一步, 输入网络位置名称, 点击完成
6. 双击添加的网络文件夹, 如果提示输入密码, 则输入: xxxxx (gomyck 用户的密码)
macOS 客户端连接
1
2
3
4
5
1. command + k
2. 在输入框里输入 ftp://192.168.1.xxx (ftp 服务器地址)
3. 点击完成, 按照提示操作即可
遇见的问题
一开始新建 nologn 用户, 使用客户端连接不了, 最后发现, /bin/shells 文件里没有 nologin 配置, 加上即可
VSFTP 配置
配置文件 | 文件路径 |
---|---|
vsftpd的可执行文件 | /usr/sbin/vsftpd |
vsftpd启动脚本 | /etc/rc.d/init.d/vsftpd |
vsftpd主配置文件 | /etc/vsftpd/vsftpd.conf |
vsftpd的PAM认证文件 | /etc/pam.d/vsftpd |
禁止使用vsftpd的用户列表文件 | /etc/vsftpd/ftpusers |
禁止或允许使用vsftpd的用户列表文件(默认是禁止列表) | /etc/vsftpd/user_list |
匿名用户主目录 | /var/ftp |
常用的全局配置
listen_address=192.168.245.128 | 设置监听的IP地址 |
listen=YES | 是否以独立运行的方式监听服务 |
listen_port=21 | 设置监听FTP服务的端口号 |
write_enable=YES | 是否启用写入权限 |
download_enable=YES | 是否允许下载文件 |
max_clients=0 | 限制并发客户端连接数 |
max_per_ip=0 | 限制同一IP地址的并发连接数 |
pasv_enable=yes | 设置最小的被动端口号 |
pasv_min_port=9981 | 设置最小的被动端口号 |
pasv_max_port=9981 | 设置最大的被动端口号 |
dirmessage_enable=yes | 是否显示目录说明文件 |
xferlog_enable=yes | 是否记录ftp传输过程 |
xferlog_file=/var/log/vsftpd.log | 日志的路径和名字 |
xferlog_std_format=yes | 是否使用标准的ftp xferlog |
chown_username=username | 是否改变上传文件的属主,如果是则需要输入一个系统用户名 |
idle_session_timeout=600 | 设置默认不活跃session时间 |
date_connection_timeout=120 | 设置数据传输超时时间 |
本地用户访问限制:
userlist_enable=YES | 是否启用user_list列表文件 |
userlist_deny=YES | 是否禁用user_list中的用户 |
本地用户权限控制:
local_enable=YES | 是否启用本地系统用户 |
local_umask=022 | 本地用户所上传文件的权限掩码 |
local_root=/var/ftp | 设置本地用户的FTP根目录 |
chroot_local_user=YES | 是否将用户禁锢在主目录 |
local_max_rate=0 | 限制最大传输速率(字节/秒) |
chroot_list_enable=YES | 配合下面的文件使用 |
chroot_list_file=/etc/vsftpd/chroot_list | 配合使用,列表中的用户将被禁锢在目录中 |
匿名权限控制:
anonymous_enable=YES | 启用匿名访问 |
anon_umask=022 | 匿名用户所上传文件的权限掩码 |
anon_root=/var/ftp | 匿名用户的FTP根目录 |
anon_word_readable_only=YES | 允许匿名下载 |
anon_upload_enable=YES | 允许上传文件anon_mkdir_write_enable=YES:允许创建目录 |
anon_other_write_enable=YES | 开放其他写入权 |
anon_max_rate=0 | 限制最大传输速率(字节/秒) |