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階層をナビゲートし、シンボリックリンクされたスクリプトに従うことに注意する必要があります。

おすすめ記事