Answers:
确保存在以下行
chroot_local_user=YES
将用户HOME Directory设置为/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,则当虚拟用户测试登录时,他将最终(通常是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.
$USER
for 后添加一个后缀local_root
,例如/home/$USER/ftp
(将用户根ftp
目录到其主目录的子目录)。
local_root
用户的实际主目录的情况下,这很有可能。
你可以这样做:
usermod --home /var/www/ username
我在上面使用了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
根据您的用户进行更改。
检入中的chroot
选项vsftpd.conf
并为其创建一个单独的用户,其homedir设置为/var/www
。
chroot
选项vsftpd.conf
并为其创建一个单独的用户,其homedir设置为/var/www
。