背景情報:
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つ簡単にするにはどうすればよいですか?