背景情報:
Serverpilotを使用して、FTPサービスを提供しないUbuntuサーバーを管理しています。
serverpilot
/srv/users/serverpilot/
/srv/users/serverpilot/apps/website/public/
。私が欲しいもの:
次に、このディレクトリへの読み取りと書き込みのみが可能なFTPアカウントが必要です:/srv/users/serverpilot/apps/website/public/ftpdir/
。
私が試したこと:
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ログインをどのようにすればよいのでしょうか。
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
vsftpd
はユーザー制限をサポートしていませんが、proftpd
はより強力であり、構成ファイル(proftpd.conf
)にログインを制限するオプションがあります:
<Limit LOGIN>
AllowUser barb
AllowUser dave
AllowGroup ftpuser
DenyAll
</Limit>
編集
DenyUsers ftpuser
を/etc/ssh/sshd_config
に追加することで解決できますftpuser
のグループにserverpilot
を追加し、serverpilot
のグループにftpuser
を追加することで解決できます。また、フォルダ/srv/users/serverpilot/apps/website/public/ftpdir
の権限を775に変更する必要があります。フォルダ/srv/users/serverpilot/
には755の権限が必要であることを忘れないでください。
pure-ftpd
のPureDB
関数を使用して、pure-ftpd
サービス専用のftpログインを作成できます。