最近、次のような回避策が見つかりました:
/etc/ssh/sshd_config:
...
Subsystem sftp internal-sftp
Match Group sftponly
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
ディレクトリのパーミッション:
example@unixlinux.onlinerver:~ # chown root:root /home
example@unixlinux.online:~ # chmod 111 /home
example@unixlinux.online:~ # chmod 700 /home/*
今 /home ChrootDirectory の要件を満たす 制限されたユーザーはリストできませんが、sftponly ホーム ディレクトリが通常どおりに設定されている場合、ユーザーはログインできません (/home/$LOGNAME ):chroot 環境では、ホーム ディレクトリが /home 内にありません ただし、ルート直下 (/ )。
回避策 1
制限されたユーザーのホームを chroot で表示されるように設定します:
example@unixlinux.online:~ # usermod -d /username username
警告 1
無制限のユーザーまたは一部の管理スクリプトが ~username のような bash のチルダ展開を使用している場合 /username に展開されます
sftponly を作成した管理者も ユーザーは、デフォルト以外のホームを使用することを覚えておく必要があります。スクリプトで解決可能。管理者が使用することを覚えておく必要があります。
回避策 2
これは、最終的に使用することになった以前のものの代替です:
example@unixlinux.online:~ # 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 のドキュメント) です。これにより、各ユーザーのホーム ディレクトリに書き込み権限を追加できます。