web-dev-qa-db-ja.com

SFTPユーザー用のChrootの設定

自動バックアップ用にSFTPサーバーを構成しようとしています。 Ubuntu 14.04サーバーを構成しましたが、部分的に成功しました。私がやろうとしているアイデアはこれです:

  1. バックアップする特定のシステムごとにユーザーが作成されます。 SFTPのみ。
  2. ユーザーはChrootされ、ホームディレクトリの外部で読み取りまたは書き込みを行うことができなくなります。
  3. ログインすると、ユーザーのホームが「ルート」になります。
  4. ユーザーはファイルをルートにアップロードできるようになります。 (これは私が立ち往生しているところです。)

次のスニペットを使用して、sshd_configに次のようにChrootを作成しました。

Match Group sftpbackup
   ChrootDirectory /srv/sftpbackup/%u
   X11Forwarding no
   AllowTcpForwarding no
   ForceCommand internal-sftp

次に、要件に従って/ srv/sftpbackupにアクセス許可を設定します。

# ls -l
total 4
drwxr-x--- 3 root sftpbackup 4096 Jan  5 15:29 user1
# 

これで、ユーザーはログインできますが、ファイルをアップロードできません(アクセスが拒否されました)。ディレクトリの所有権を次のように変更すると、次のようになります。

# ls -l
total 4
drwxrwx--- 3 user1 sftpbackup 4096 Jan  5 15:29 user1
# 

その場合、ユーザーはauth.logからログインできません。

sshd[14835]: fatal: bad ownership or modes for chroot directory "/srv/sftpbackup/user1"

ユーザーのホームディレクトリがSFTPchrootの場合、rootがディレクトリを所有している必要があるため、ユーザーが書き込みできるようにサブディレクトリを作成する必要があるようです。

ルートを書き込み可能にする方法はありますか?いろいろなウェブサイトを見ると、私が望むことを達成する方法がないようです。ユーザーがchrootdirを書き込み可能にすることと、サブディレクトリを書き込み可能にすることの違いは何であるかはよくわかりません。洞察をいただければ幸いです。

注:私の目標は、さまざまなデバイスでバックアップを保存できるサーバーを作成することです。デバイスはサードパーティベンダーによって構成されるため、シンプル(デバイスごとに1つのユーザー名、ログインするとすべてのファイルが「ルート」に移動する)と安全性(作成されたユーザーの数が最小限になる)を維持しようとしています。サーバーへの権利)可能な限り。私の欲求が少し固い場合はお詫び申し上げます。

2
imlepid

Internal-sftpでは、chrootされたユーザーのホームがroot所有のディレクトリ内に存在する必要があります。

/some/path/root-owned/user-dir1
                     /user-dir2

ルート所有のディレクトリには555の権限が必要であり、ユーザーディレクトリはルートによって作成され、特定のユーザーによって所有されている必要があります。サブディレクトリ内では、ユーザーは何でもできますが、user-dir [12]を削除したり名前を変更したりすることはできません。

これは内部sftpの制限です。

2
Kondybas