Raspberry Piでchrootを使用する単純なsftpサーバーの設定に関連する問題で問題が発生しています。特にsftpサーバーに接続してフォルダを作成しようとすると、「ディレクトリを作成できませんでした:失敗しました」というメッセージが表示されます。
sftp_usersグループにandrea_shareというユーザーを作成しました。
# adduser --no-create-home andrea_share
# usermod -a -G sftp_users andrea_share
# usermod --shell /usr/bin/nologin andrea_share
/dir_sftp/andrea/share
次に、次の権限を使用してsftpフォルダを作成しました。
drwxr-xr-x 3 root root 4096 XXX XX XX:XX dir_sftp
drwxr-xr-x 3 root root 4096 XXX XX XX:XX andrea
drwxr-xr-x 3 andrea_share sftp_users 4096 XXX XX XX:XX share
sshd_configファイルが次のように修正されました。
# Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
そしてファイルの終わりに
Match User andrea_share
ChrootDirectory /dir_sftp/andrea
ForceCommand internal-sftp
PasswordAuthentication yes
AllowTCPForwarding no
X11Forwarding no
以前はそれぞれ no と yes に設定されていたPasswordAuthentication
ため必須です。X11Forwarding
システムを再起動してパッケージを更新しようとしましたが、成功しませんでした。
アップロード日:2020年12月15日
これは/shareにフォルダを作成しようとしたときに表示される結果です。
sftp> pwd
Remote working directory: /share
sftp> mkdir ./test
Couldn't create directory: Failure
また、/shareフォルダからファイルを削除することはできますが、ファイルをアップロードすることはできません。以下は私が得た出力の例です。
sftp> put ./test.jpg
Couldn't write to remote file "/share/test.jpg"
そのうち test.jpg は私のローカルコンピュータのテスト写真です。
答え1
問題が解決しました。誤ったrsync設定のため、sftpフォルダがあるドライブがいっぱいになりました。ドライブを清掃すると、SFTPサーバーが正常に動作します。申し訳ありません。これは私の間違いです。
答え2
ターゲットユーザーのホームディレクトリは、ルートが(正しく)所有しており、ルートのみがそのディレクトリに書き込む権限を持っているため、ディレクトリを作成できません。これがshare
サブディレクトリを作成する理由です。サブディレクトリからファイル/ディレクトリを作成および削除できます。
(これはWindowsではありません。再起動のためにシステムが他のタスクを実行することはほとんどありません。Windowsで再起動がうまく機能する理由はありますが、この記事の範囲外です。)