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


41

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

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


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

Answers:


65

方法1:更改用户的主目录

确保存在以下行

chroot_local_user=YES

将用户HOME Directory设置为/var/www/,如果要更改现有用户,则可以使用:

usermod --home /var/www/ username

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

方法2:使用 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,则当虚拟用户测试登录时,他将最终(通常是chroot()创建)进入目录/ 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
请注意,您可以在$USERfor 后添加一个后缀local_root,例如/home/$USER/ftp(将用户根ftp目录到其主目录的子目录)。
Benoit Duffez

请注意vsftp FAQ中有关通过用户登录将chroot写入可写文件夹的说明。在放入local_root用户的实际主目录的情况下,这很有可能。
Thomas Urban

在哪里确认“ chroot_local_user = YES”存在?
1

4

你可以这样做:

usermod --home /var/www/ username

5
一到两行的答案通常被认为是低质量的。请考虑在扩展您的帖子时对您的建议进行一些解释,并提供链接或说明您的建议能够实际解决问题的能力的文档。
HalosGhost 2014年

2

我在上面使用了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根据您的用户进行更改。


1

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


我很清楚,我将创建一个单独的用户。我也许应该重新设计我的问题,然后我如何才能限制用户
Badr Hari 2013年

使用来自OpenSSH的sftp。有关内部sftp,请参见man sshd_config,然后是“ ForceCommand”并参见“ ChrootDirectory”。较新的OpenSSH还为sftp-server添加了选项以切换到特定路径,因此与ChrootDirectory结合使用,您可以执行以下操作:chroot-> / path-> destination->'onlyhere'= / chroot / onlyhere
jirib
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.