FTP怎么限制用户访问
公司用FTP服务器传资料,结果发现所有人都能进同一个文件夹,甚至删了别人的文件。这种问题其实很常见,关键是怎么把每个用户的权限管住,不让谁都能乱动。
最直接的办法就是给每个用户设置独立的家目录(home directory),让他们登录后只能看到自己的文件夹。以常见的Linux系统搭配vsftpd为例,操作起来并不复杂。
启用本地用户隔离
默认情况下,vsftpd允许本地用户访问整个文件系统。要在配置文件中关闭这个权限:
user_config_dir=/etc/vsftpd/user_conf
chroot_local_user=YES
allow_writeable_chroot=YES加上这两行后,所有本地用户都会被“关”在自己的主目录里,没法跳到上级或其他目录。
为特定用户单独设置
有时候不是所有人要一样限制,比如财务组可以看财务文件,技术组只能传项目文档。这时候可以用用户配置目录来个性化管理。
先在 /etc/vsftpd/user_conf 下创建同用户名的文件:
sudo mkdir /etc/vsftpd/user_conf
sudo nano /etc/vsftpd/user_conf/finance写入以下内容:
local_root=/home/ftp/finance
write_enable=YES这样用户 finance 登录后,一进来就直接进 /home/ftp/finance,别的地方根本看不到。
用虚拟用户更安全
如果不想用系统账号,可以用虚拟用户配合 PAM 验证。这类用户不对应真实的 shell 账号,只用来传文件,安全性更高。
安装 db-util 生成密码数据库:
sudo apt install db-util
echo -e "user1\n123456" > login.txt
db_load -T -t hash -f login.txt /etc/vsftpd/login.db再配置 PAM 文件指向这个数据库,每个虚拟用户也能分配独立根目录,实现完全隔离。
实际使用中,建议结合防火墙和日志监控。比如只让内网IP连FTP,同时打开 vsftpd 的日志记录,谁删了文件、什么时候上传的,查起来一清二楚。
限制访问不是为了折腾人,而是避免误操作或数据泄露。特别是多人共用服务器时,各进各的门,各拿各的东西,才不容易出乱子。