web-dev-qa-db-ja.com

vsftpdを使用してFTPアクセスを/ var / wwwのみに制限する

Linux(rasbian)でftpサーバーとしてvsftpdを実行しています。マシンにrootユーザーとしてログインします。

/ var/wwwだけを使用するようにロックしたいのですが、vsftpd confを構成してそれを実現するにはどうすればよいですか?

41
Badr Hari

方法1:ユーザーのホームディレクトリを変更する

次の行が存在することを確認してください

chroot_local_user=YES

ユーザーのホームディレクトリを/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.
65
Rahul Patil

あなたはこれを行うことができます:

usermod --home /var/www/ username
4
Zeev Cohen

上記のRahul Patilの提案を使用しました。

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

しかし、なぜ1人のユーザーしかログインできないのか理解できませんでした。その後、ルートディレクトリにchrootできないことがわかりました(この場合、/home/$USER/www-data)書き込みアクセス権があります。だから私は書き込みアクセスを削除します:

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

注:変更$USERユーザーと。

2
Rizal Rahman

vsftpd.confchrootoptionsを確認し、homedirが/var/wwwに設定されている別のユーザーを作成します。

1
jirib