Chroot SFTPユーザー書き込み権限

Chroot SFTPユーザー書き込み権限

SFTPユーザー専用の設定があります。

Match Group sftponly
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

secure.log に次のメッセージが表示されます。

fatal: bad ownership or modes for chroot directory

matchキーワードを使用すると、いくつかのセキュリティ上の問題が発生します。ディレクトリはrootが所有し、ディレクトリはchmod 755(drwxr-xr-x)でなければなりません。したがって、SSHセキュリティのためにrootユーザーのみが書き込み可能で、グループごとに書き込み不可能に設定されている場合、そのユーザーはそのフォルダに対する書き込み権限を持つことはできません。

誰でも良い解決策を知っていますか?

答え1

最近、次の解決策が見つかりました。

/etc/ssh/sshd_config:

...

Subsystem sftp internal-sftp

Match Group sftponly
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

ディレクトリ権限:

root@server:~ # chown root:root /home
root@server:~ # chmod 111 /home
root@server:~ # chmod 700 /home/*

これで/home、制限されたユーザーの要件が満たされ、制限されたユーザーが一覧表示できなくなりますが、ホームディレクトリChrootDirectoryが通常どおりにsftponly設定されている場合、ユーザーはログイン()できません/home/$LOGNAME。 chroot環境では、ホームディレクトリは内部にありません。/homeただし、子ルート(/)のすぐ内側にあります。

ソリューション1

制限されたユーザーのホームをchrootに表示されるように設定します。

root@server:~ # usermod -d /username username

注1

制限されていないユーザーまたは一部の管理スクリプトがbashのチルダ拡張を使用した場合、これは拡張されますが、~usernameこれ/usernameは意図されていません。

また、ユーザーを作成する管理者は、sftponlyデフォルトではなくホームページを使用する必要があることも覚えておく必要があります。この問題はスクリプトで解決できます。管理者はこれを使用することを覚えておく必要があります。

ソリューション2

以前使用した代替方法は次のとおりです。

root@server:~ # ln -s . /home/home

つまり、/home独自のディレクトリ名にシンボリックリンクを作成します。これで、chrootの下に/home/usernamechrootがない場合と同じディレクトリを指します。 SFTPを使用してログインした制限付きユーザーの場合として表示されます/username。ディレクトリは所有者(制限付きユーザー)によって書き込まれます。制限されたユーザーは、兄弟ユーザーの親ディレクトリまたはホームディレクトリを名前でリストできません。

ユーザーの唯一の特別な点は、グループに参加するsftponlyことです。sftponly解決策1よりも作業が簡単であることがわかりました。

ノート2

  1. 「home」というユーザーにホームディレクトリを所有させることはできません。/home/home
  2. /home階層をナビゲートし、シンボリックリンクされたスクリプトに従うことに注意する必要があります。

答え2

inディレクトリやoutディレクトリなど、ユーザーのホームディレクトリに構造を作成する必要があります。このディレクトリはユーザーが所有する必要があり、ユーザーはそこにファイルを配置してインポートできます。

答え3

私たちのサーバーにも同じ設定があります。私たちは同じSSHD設定を使用します。ユーザーのホームディレクトリはrootが所有し、documentsその中にpublic_htmlそのユーザーが所有するフォルダがあります。その後、ユーザーはSFTPを使用してログインし、これらのフォルダに書き込みます(ホームディレクトリに直接書き込むのではなく)。 SSHを許可していないので完全に動作します。 /etc/skel/で新しいユーザー用に作成されるディレクトリを調整できます(少なくともopenSUSEでは他のディストリビューションに慣れていません)。

もう一つの可能​​性は前方十字靭帯オープン水税文書) - 個々のユーザーのホームディレクトリに対する書き込み権限を追加できます。

答え4

「ディレクトリ権限」セクションを参照してください。@artmの答え(今テストした結果)で、次のことがわかりました。

root@server:~ # chmod 111 /home <- Does not work

SFTP接続がUbuntuで機能することは許可されておらず、すべてのための実行権限(111など)のみがあります。

私が見つけたもの:

root@server:~ # chmod 555 /home

読み取りおよび実行権限(555など)でSFTPに接続できます。 Debianが他のバージョンと異なるかどうかはわかりませんが、私がインストールしたUbuntuではそうします。

関連情報