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


41

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

/ var / wwwのみを使用するようにロックしたいのですが、どうすればvsftpd confを設定してそれを実現できますか?


1
chroot オプションをチェックインvsftpd.confし、homedirがに設定されている別のユーザーを作成し/var/wwwます。
ジリブ

回答:


65

方法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() '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
あなたは後に接尾辞を持つことができることを注意$USERのためlocal_rootのような、/home/$USER/ftp(にユーザーをchrootしますたftp彼らのホームディレクトリのサブディレクトリ)。
ブノワダッフェズ

ユーザーのログインによって書き込み可能なフォルダーへのchrootingに関するvsftp FAQの注意に注意してください。これはlocal_root、ユーザーの実際のホームディレクトリに配置する場合に非常に可能性が高いです。
トーマスアーバン

「chroot_local_user = YES」が存在することを確認する場所
ワン

4

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

usermod --home /var/www/ username

5
1行から2行の回答は、しばしば低品質と見なされます。推奨事項の実際の問題を解決するための推奨事項のリンクやドキュメントとともに、推奨事項の機能に関する説明を投稿に追加することを検討してください。
HalosGhost 14年

2

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

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

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

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

注:$USERユーザーに応じて変更してください。


1

chrootオプションをチェックインvsftpd.confし、homedirがに設定されている別のユーザーを作成し/var/wwwます。


私はそれをよく知っています。別のユーザーを作成します。私は多分、私が制限することができますどのようにして私の質問を再設計する必要があり、ユーザーを別のパスにのみ
バダ・ハリ

OpenSSHからsftpを使用します。internal-sftpについてはman sshd_configを参照してから、「ForceCommand」および「ChrootDirectory」を参照してください。最近のOpenSSHのもそうChrootDirectoryとの組み合わせで、あなたが行うことができ、特定のパスにスイッチにSFTPサーバのオプションを追加しました:chroot環境- > /パス- >先- >「onlyhere」= / chroot環境/ onlyhere
jirib
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.