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


3

背景情報:

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

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

欲しいもの:

ここで、次のディレクトリ/srv/users/serverpilot/apps/website/public/ftpdir/に対してのみ読み取りと書き込みを実行できるFTPアカウントが必要です。

私が試したこと:

  • 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ログインとして使用できるようにする
    • /srv/users/serverpilot/0ユーザーが記述できる
    • /srv/users/serverpilot/1は、ホームディレクトリ以外にはアクセスできません
    • /srv/users/serverpilot/2 530 Login incorrect errorを取得していたため
  • 次のコマンドでファイアウォールを開いた:/srv/users/serverpilot/3

問題:

  • ftpuser以外のユーザーもFTPログインとして使用できます。私は1人のftpユーザーを持ち、他のシステムユーザーがFTPを使用できないようにしたいだけです。
  • ftpuserはサーバーにSSH接続することもできます。
  • ファイルをアップロードしようとすると、/srv/users/serverpilot/6エラーが発生します。これを修正するために、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

しかし、そのサーバーでは、所有権が原因でアップロードされたファイルの処理に問題があったため、サーバーに直接アクセスするのではなく、/srv/users/serverpilot/apps/website/public/0 PHP関数を使用してWeb経由でファイルを取得しています。いいね。

最後の質問:

ホームディレクトリの所有者であるユーザーの所有権が維持される、ユーザーのホームディレクトリ内のディレクトリの読み取りと書き込みができるFTPログインを1つ簡単にするにはどうすればよいですか?

4

vsftpd doesn't support limit users but proftpd is more powerfull and has an option in configuration file (proftpd.conf) to limit login to some user like this:

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

Edit

  1. for your first problem the solution is as above.
  2. second problem also can solve by adding DenyUsers ftpuser to /etc/ssh/sshd_config
  3. and third problem can solve by adding ftpuser to the group of serverpilot and add serverpilot to the group of ftpuser. also you must change permission of folder /srv/users/serverpilot/apps/website/public/ftpdir to 775.

Remember that folder /srv/users/serverpilot/ must have 755 permission.


0

You can use pure-ftpd 's PureDB function to create a ftp login only for the pure-ftpd service.


2

local_enable=YES is what is enabling the other users to login, you should add your user to the explict user list instead

from the manual:

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

To sort your permissions issues enable the SITE CHMOD command and get your ftp client to use it

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