おそらく非常に明白なことを見逃しているのでしょうが、ユーザーが SFTP 経由でアクセスできるフォルダーのリスト (ユーザーのホーム ディレクトリだけでなく) を指定することは可能ですか?
例えば
Admin -> Full root access
WebDev1 -> Access to the primary vhost folder and sub directories
SysAdmin1 -> Access to all folders, except the vhost folder
Manager1 -> Access to vhost folder, and phpMyAdmin install folder
「Admin」および「WebDev1」ユーザーに対しては正常に動作しますが、他の 2 ユーザーに対しては動作しません。
アクセスを許可したい「Manager1」ユーザーの場合(サブディレクトリを含む):
/data/vhosts
/usr/share/phpMyAdmin
これは SSHD を使用する Centos 7 システムです。数時間前から困惑しているので、これに関して助けていただければ幸いです。
答え1
あなたがやりたいことに関連するキーワードはFTPサーバー chroot 刑務所
sshd_config を変更する必要があります。まず、SFTP を有効にする行のコメントを解除します。これは次のようになります。
Subsystem sftp /usr/lib64/ssh/sftp-server
sshd_config の下部に、コメントアウトされたテンプレート内に次のような内容が含まれている場合があります。具体的には次のような内容になります。
# jail only user dave to folder /dave_sftp/
Match User dave
ChrootDirectory /dave_sftp
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
# jail only user ron to folder /ron_sftp/
Match User ron
ChrootDirectory /ron_sftp
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
# jail users that are in group sftp1_group to the folder /sftp1_group/
Match Group sftp1_group
ChrootDirectory /sftp1_group
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
# jail users that are in group sftp2_group to the folder /sftp2_group/
Match Group sftp2_group
ChrootDirectory /sftp2_group
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
特定のユーザーを特定のフォルダに監禁するのはかなり簡単です。さまざまなユーザーがアクセスできるフォルダのリストを指定する、これは、別のグループを作成し、それを使用したい特定のフォルダーに一致させ、それらのユーザーを、jailed sftp アクセスを許可したいフォルダーに一致する関連グループに配置するという、手作業の作業にすぎません。たとえば、ユーザーを と のdave
両方のグループに配置するsftp1_group
と、sftp2_group
そのユーザーが複数のフォルダーにアクセスできるようになります。
非常に良い例がここにもあります: https://serverfault.com/questions/591781/creating-sftp-users-and-jailing-to-chroot-on-centos-user-authentication-error
留意する
chroot ホームまでのすべてのフォルダは、root ユーザーのみが所有し、書き込み可能である必要があります。グループが root であっても、フォルダをグループ書き込み可能にすることはできません。
もう一つの例を挙げます。https://askubuntu.com/questions/261663/how-can-i-set-up-sftp-with-chrooted-groups