/ var/www/htmlなどにあるWebサーバーにログインできるユーザーkake_sftpを作成しようとしています。私はchrootがアクセス許可を機能させるためにいくつかの追加のサブディレクトリを必要とすることを知っているので、新しいフォルダーを追加したり、フォルダーのレイアウトを少し変更したりして問題ありません。
ユーザーをグループwww-dataに作成し、ホームディレクトリを/ var/www/htmlに作成しました
$ cat /etc/passwd | grep kake_sftp
kake_sftp:x:1001:1001::/var/www/html:/bin/bash
$ groups kake_sftp
kake_sftp : kake_sftp www-data
次に、/ etc/ssh/sshd_configにいくつかの変更を加えました。 「Subsystem sftp/usr/lib/openssh/sftp-server」を「Subsystem sftp internal-sftp」に置き換え、最後に次の行を追加しました
Match User kake_sftp
ChrootDirectory /var/www
ForceCommand internal-sftp
AllowTcpForwarding no
Wwwフォルダーの権限は次のように設定されています。
$ ls -la /var/www
drwxrwxr-x 3 root root 4096 Apr 7 12:17 .
drwxr-xr-x 12 root root 4096 Apr 4 10:17 ..
drwxr-xr-x 2 root www-data 4096 Apr 4 11:34 html
Filezillaをsftpに設定してログインしようとすると、次のエラーが表示されます。
Error: Network error: Software caused connection abort
Error: Could not connect to server
Sftp経由でメインユーザーでログインしようとすると、魅力的に機能します。したがって、クライアントに問題はありません。
これが機能しない理由は、chrootされたディレクトリに書き込み権限があったためです。すべての書き込み権限を取り消すことで、なんとか接続できました。
chmod 555 /var/www