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/username
chrootがない場合と同じディレクトリを指します。 SFTPを使用してログインした制限付きユーザーの場合として表示されます/username
。ディレクトリは所有者(制限付きユーザー)によって書き込まれます。制限されたユーザーは、兄弟ユーザーの親ディレクトリまたはホームディレクトリを名前でリストできません。
ユーザーの唯一の特別な点は、グループに参加するsftponly
ことです。sftponly
解決策1よりも作業が簡単であることがわかりました。
ノート2
- 「home」というユーザーにホームディレクトリを所有させることはできません。
/home/home
/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ではそうします。