使用 vsftpd 将 FTP 访问限制为仅对 /var/www

使用 vsftpd 将 FTP 访问限制为仅对 /var/www

我在我的 Linux (rasbian) 上运行 vsftpd 作为 ftp 服务器,我以 root 用户身份登录到机器。

我想仍然锁定只使用 /var/www,如何配置 vsftpd conf 来完成它?

答案1

方法一:更改用户主目录

确保以下行存在

chroot_local_user=YES

将用户主目录设置为/var/www/,如果您想更改现有用户,则可以使用:

usermod --home /var/www/ username

然后设置所需的权限/var/www/

方法二:使用user_sub_token

如果您不想更改用户的主目录,则可以使用:

chroot_local_user=YES
local_root=/ftphome/$USER
user_sub_token=$USER

关于user_sub_token

根据模板自动为每个虚拟用户生成主目录。例如,如果通过 guest_username 指定的真实用户的主目录是 /ftphome/$USER,并且 user_sub_token 设置为 $USER,那么当虚拟用户 test 登录时,他最终会(通常是 chroot()'ed)目录/ftphome/test。如果 local_root 包含 user_sub_token,则此选项也会生效。

创建目录并设置权限:

mkdir -p /ftphome/{test,user1,user2}
chmod 770 -R /ftphome
chown -R ftp. /ftphome
usermod -G ftp test

重新启动vsftpd并测试您的设置。

成功输出示例:

[root@mail tmp]# ftp localhost
Connected to mail.linuxian.local.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mput vhosts
mput vhosts? 
227 Entering Passive Mode (127,0,0,1,146,41)
150 Ok to send data.
226 File receive OK.
24 bytes sent in 3.3e-05 seconds (7.1e+02 Kbytes/s)
ftp> ls -rlt
227 Entering Passive Mode (127,0,0,1,97,90)
150 Here comes the directory listing.
-rw-r--r--    1 787      787            24 Oct 11 19:57 vhosts
226 Directory send OK.
ftp> 221 Goodbye.

答案2

你可以这样做:

usermod --home /var/www/ username

答案3

我使用了 Rahul Patil 的建议:

chroot_local_user=YES
local_root=/home/$USER/www-data
user_sub_token=$USER

但我不明白为什么我只能用一个用户登录。然后我发现我们无法 chroot 到/home/$USER/www-data具有写访问权限的根目录(在本例中为 )。所以我用以下命令删除写访问权限:

# chmod a-w /home/$USER/www-data

笔记:$USER与您的用户一起改变。

答案4

检查chroot选项vsftpd.conf并为其创建一个单独的用户,其 homedir 设置为/var/www

相关内容