web-dev-qa-db-ja.com

1つのディレクトリのFTPアカウント

背景情報:

Serverpilotを使用して、FTPサービスを提供しないUbuntuサーバーを管理しています。

  • ユーザーがいます:serverpilot
  • ホームディレクトリの場合:/srv/users/serverpilot/
  • そして、次のディレクトリで実行されているWebサイトがあります:/srv/users/serverpilot/apps/website/public/

私が欲しいもの:

次に、このディレクトリへの読み取りと書き込みのみが可能なFTPアカウントが必要です:/srv/users/serverpilot/apps/website/public/ftpdir/

私が試したこと:

  • Vsftpdをインストールしました:Sudo apt-get install vsftpd
  • そのディレクトリをホームとして新しいユーザーを作成しました:Sudo useradd -m -d /srv/users/serverpilot/apps/website/public/ftpdir ftpuser(おそらく、ユーザーのホームディレクトリを別のユーザーのホームディレクトリに置くことはお勧めできません)
  • Sudo passwd ftpuserでパスワードを変更しました
  • Sudo vi /etc/vsftpd.conf でデフォルトのvsftpd構成を編集しました
    • local_enable=YESので、ftpuserはftpログインとして使用できます
    • write_enable=YESユーザーは書き込み可能
    • chroot_local_user=YESはホームディレクトリ以外にはアクセスできません
    • pam_service_name=ftpを受け取っていたため 530ログイン不正エラー
  • ファイアウォールを次のように開きました:Sudo ufw allow 21/tcp

問題:

  • ftpuser以外のユーザーもFTPログインとして使用できます。私はただ1人のftpユーザーを持ち、他のシステムユーザーがFTPを使用することを許可しません。
  • ftpuserもサーバーにSSH接続できます。
  • ファイルをアップロードしようとすると553 error: could not create fileエラーが表示されます。これを修正するために、この質問に遭遇しました: https://askubuntu.com/a/320186 しかし、私はしませんファイルはserverpilotユーザーではなく、ftpuserユーザーが所有する必要があるため、これが正しい方法だと思います。 serverpilotユーザーで実行されているWebサイトは、アップロードされたファイルを処理する必要があります。

以前にどのように解決したか:

過去に別のサーバーでディレクトリの所有権を変更しましたが、これらの追加のvsftpd構成オプションを追加した後、ようやく機能しました。

file_open_mode=0775
local_umask=022
allow_writeable_chroot=YES
pam_service_name=vsftpd

しかし、そのサーバーでは、所有権のためにアップロードされたファイルの処理に問題があったので、file_get_contents() PHP関数を使用して、直接ファイルにアクセスするのではなく、Web経由でファイルを取得しますそんなに良くないサーバー。

最後の質問:

ホームディレクトリの所有者であるユーザーの所有権が保持されるユーザーホームディレクトリ内のディレクトリを読み書きできる1つのftpログインをどのようにすればよいのでしょうか。

3
Roy

local_enable = YESは、他のユーザーがログインできるようにするものです。代わりに、ユーザーを明示的なユーザーリストに追加する必要があります。

マニュアルから:

local_enable
Controls whether local logins are permitted or not. If enabled,       normal user accounts in /etc/passwd (or wherever your PAM config references) may be used to log in. This must be enable for any non-anonymous login to work, including virtual users.
Default: NO

userlist_file
This option is the name of the file loaded when the userlist_enable option is active.
Default: /etc/vsftpd.user_list

許可の問題をソートするには、SITE CHMODコマンドを有効にし、ftpクライアントにそれを使用させる

chmod_enable
When enabled, allows use of the SITE CHMOD command. NOTE! This only applies to local users. Anonymous users never get to use SITE CHMOD.
Default: YES
2
Amias

vsftpdはユーザー制限をサポートしていませんが、proftpdはより強力であり、構成ファイル(proftpd.conf)にログインを制限するオプションがあります:

<Limit LOGIN>
AllowUser barb
AllowUser dave
AllowGroup ftpuser
DenyAll
</Limit>

編集

  1. 最初の問題の解決策は上記のとおりです。
  2. 2番目の問題もDenyUsers ftpuser/etc/ssh/sshd_configに追加することで解決できます
  3. 3番目の問題は、ftpuserのグループにserverpilotを追加し、serverpilotのグループにftpuserを追加することで解決できます。また、フォルダ/srv/users/serverpilot/apps/website/public/ftpdirの権限を775に変更する必要があります。

フォルダ/srv/users/serverpilot/には755の権限が必要であることを忘れないでください。

4
Ghasem Pahlavan

pure-ftpdPureDB関数を使用して、pure-ftpdサービス専用のftpログインを作成できます。

0
dhchen