最近、次のような回避策が見つかりました:
/etc/ssh/sshd_config:
...
Subsystem sftp internal-sftp
Match Group sftponly
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
ディレクトリのパーミッション:
[email protected]:~ # chown root:root /home
[email protected]:~ # chmod 111 /home
[email protected]:~ # chmod 700 /home/*
今 /home
ChrootDirectory
の要件を満たす 制限されたユーザーはリストできませんが、sftponly
ホーム ディレクトリが通常どおりに設定されている場合、ユーザーはログインできません (/home/$LOGNAME
):chroot 環境では、ホーム ディレクトリが /home
内にありません ただし、ルート直下 (/
)。
回避策 1
制限されたユーザーのホームを chroot で表示されるように設定します:
[email protected]:~ # usermod -d /username username
警告 1
無制限のユーザーまたは一部の管理スクリプトが ~username
のような bash のチルダ展開を使用している場合 /username
に展開されます
sftponly
を作成した管理者も ユーザーは、デフォルト以外のホームを使用することを覚えておく必要があります。スクリプトで解決可能。管理者が使用することを覚えておく必要があります。
回避策 2
これは、最終的に使用することになった以前のものの代替です:
[email protected]:~ # ln -s . /home/home
つまり、/home
内にシンボリック リンクを作成します。 独自のディレクトリ名に。現在、chroot /home/username
の下にあります chroot がない場合と同じディレクトリを指します。 sftp でログインした制限付きユーザーの場合、/username
と表示されます。 .このディレクトリは、その所有者 (制限付きユーザー) に書き込み可能です。制限付きユーザーは、兄弟の親ディレクトリまたはホーム ディレクトリを名前で一覧表示することはできません。
sftponly
の唯一の特別な点 ユーザーは sftponly
への参加です グループ。回避策 1 よりも対処が簡単であることがわかりました。
注意事項 2
<オール>/home/home
で「home」という名前のユーザーを指定することはできません /home
をトラバースするスクリプトには注意が必要です 階層とシンボリックリンクに従います。 in ディレクトリと out ディレクトリのように、ユーザーのホーム ディレクトリ内に構造を作成する必要があります。これらのディレクトリはユーザーが所有する必要があり、そこにファイルを置いたり取得したりできます。
私たちのサーバーにも同じ設定があります。 SSHD の同じ構成を使用します。ユーザーのホーム ディレクトリは root が所有し、その中に documents
フォルダがあります と public_html
それぞれのユーザーが所有しています。次に、ユーザーは SFTP を使用してログインし、(ホームに直接ではなく) それらのフォルダーに書き込みます。 SSH は許可されていないため、完全に機能します。 /etc/skel/ で新規ユーザー用に作成されるディレクトリを調整できます (少なくとも openSUSE では、私は他のディストリビューションにあまり詳しくありません)。
もう 1 つの可能性は ACL (openSUSE のドキュメント) です。これにより、各ユーザーのホーム ディレクトリに書き込み権限を追加できます。