在Linux上配置FTP服务器以实现用户隔离,通常使用vsftpd(Very Secure FTP Daemon)作为示例。用户隔离意味着每个用户在登录后只能访问自己的主目录,不能访问其他用户的文件或目录。以下是配置步骤:
首先,确保你已经安装了vsftpd。如果没有安装,可以使用以下命令进行安装:
sudo apt-get update
sudo apt-get install vsftpd
编辑vsftpd的配置文件 /etc/vsftpd.conf
:
sudo nano /etc/vsftpd.conf
在配置文件中添加或修改以下行:
# 启用本地用户登录
local_enable=YES
# 启用写权限
write_enable=YES
# 启用chroot jail(用户隔离)
chroot_local_user=YES
# 如果你希望允许某些用户不被隔离,可以使用以下配置
# chroot_list_enable=YES
# chroot_list_file=/etc/vsftpd.chroot_list
# 允许用户上传文件
allow_writeable_chroot=YES
# 禁止匿名用户登录
anonymous_enable=NO
# 启用被动模式
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
# 启用日志记录
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
# 启用用户列表
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
创建一个新用户并设置其主目录:
sudo adduser ftpuser
sudo passwd ftpuser
确保用户的主目录权限正确:
sudo chown ftpuser:ftpuser /home/ftpuser
sudo chmod 755 /home/ftpuser
如果你希望某些用户不被隔离,可以创建一个chroot列表文件 /etc/vsftpd.chroot_list
并添加这些用户的用户名:
sudo nano /etc/vsftpd.chroot_list
在文件中添加用户名,每行一个:
ftpuser
anotheruser
保存并关闭配置文件后,重启vsftpd服务以应用更改:
sudo systemctl restart vsftpd
如果你使用的是防火墙,确保开放FTP所需的端口:
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 1024:1048/tcp
使用FTP客户端连接到服务器,验证用户隔离是否生效。你应该只能访问该用户的主目录。
通过以上步骤,你可以在Linux上配置一个支持用户隔离的FTP服务器。