VPS に Web サイトがあります。その VPS に Debian 7 をインストールしています。http ドキュメントは、/var/www/example.com
そのサーバーに Nginx をインストールしたディレクトリにあり、ディレクトリはユーザーとグループ/var/www/example.com
によって所有されています。FileZillaなどの FTP または SFTP クライアントを介してそのディレクトリにドキュメントをダウンロードまたはアップロードできるように、非ルート ユーザー ( という名前を付けます)を追加したいと考えています。www-data
www-data
someone
私は見つけたこれそしてこれガイドでは、 を使用して実行できることが説明されていますchroot
。 設定しようとしましたが、うまくいきませんでした。 これまでに使用したコマンドをいくつか示します。
useradd someone
groupadd sftpusers
usermod -G sftpusers someone
vi /etc/ssh/sshd_config
このコードを追加しました
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
そしてファイルの最後に追加した
Match group sftpusers
ChrootDirectory /var/www/example.com
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
service ssh restart
/var/www/example.com
しかし、FileZilla 経由で接続すると、エラーが発生しました。このエラーは、ユーザーwww-data
とグループによって所有されていることが原因であると思われますwww-data
。
質問: 非ルートユーザーがFileZillaなどのFTPまたはSFTPクライアントを介してディレクトリにドキュメントをダウンロードまたはアップロードできるようにするにはどうすればよいでしょうか/var/www/example.com
。この非ルートユーザーは、次のように親ディレクトリにアクセスできないようにする必要があります。/var/www/
答え1
ああ、かわいいものや抱きしめたくなるものすべてを愛する者として、world+dog がアクセスできるもの (つまり、Web サイトのディレクトリ、匿名 FTP フォルダー) に 777 権限を設定しないでください。
最新の Linux と BSD には、ユーザーごとに設定できる ACL があり、完璧に機能します。これを使用して、特定のユーザーと特定のグループに rwx を追加することもできます。一度理解してしまえば、非常に簡単に実行できます。
TLDR; setfacl コマンドを次のように使用します #setfacl -m someuser:rwx /public_html SHAZAM! これで、someuser は public_html ディレクトリの読み取り/書き込み/実行権限を持ちます setfacl のマニュアル ページを読むか、少なくとも HOWTO を読んで、その機能に慣れることをお勧めします。以下は、ファイル システム ACL の簡単な紹介です。 https://www.redhat.com/sysadmin/linux-アクセス制御リスト
これは、world+dog に rwx を許可せずに、独自のアカウントを持つ特定の開発者にアクセスを許可する必要がある Web サーバーに最適です。
答え2
これは特定のユーザーに対してSFTPを設定する方法です
1] ユーザーを作成する
adduser {USER}
2] /etc/ssh/sshd_configを編集する
PasswordAuthentication yes
Subsystem sftp
internal-sftp -u 0007 -f AUTH -l VERBOSE
Match Group {USER}
ChrootDirectory {FOLDER}
ForceCommand internal-sftp -u 0007
AllowTcpForwarding no
GatewayPorts no
X11Forwarding no
3] ユーザーの権限を設定する
chmod -R 777 {FOLDER}
4] sshを再起動する
service ssh restart
{USER} を自分のユーザーに、{FOLDER} を自分のフォルダーに置き換えれば動作するはずです! ;)
答え3
さて、試行錯誤の末、答えは見つかったようです。
adduser someone
vi /etc/ssh/sshd_config
私は Froggiz の設定を使用しているので、コードは次のようになります。PasswordAuthentication yes Subsystem sftp internal-sftp -u 0007 -f AUTH -l VERBOSE Match Group someone ChrootDirectory /var/www ForceCommand internal-sftp -u 0007 AllowTcpForwarding no GatewayPorts no X11Forwarding no
service ssh restart
chmod -R 777 /var/www/example.com
これにより、誰かがファイルをアップロード/ダウンロードできるようになり、Web サーバー/php がこのディレクトリ内のファイルを処理できるようになります。