web-dev-qa-db-ja.com

同じ親フォルダの下の複数のディレクトリへのアクセスを必要とするChroot SFTPユーザー

/ Documentsディレクトリを持つRHEL 6サーバーがあり、/ Documentsディレクトリのすぐ下に子ディレクトリ1 2 3 4 5 ....があります。ユーザーに1、2、7、9へのアクセスのみを許可し、他のフォルダーへのアクセスを許可しないSFTP chroot jailを作成することは可能ですか?

RHEL 6でNFSv3を使用しているため、ACLの選択が多少制限されています。

5
Gregg Leventhal

単純な解決策は、これらすべてのユーザーを同じchroot刑務所に入れ、すべてのディレクトリに機密情報以外の名前と権限を割り当てて、ユーザーが刑務所に入れたディレクトリにのみアクセスできるようにすることです。トップレベルディレクトリの権限を適用するだけで十分です。ユーザーは、x権限のないディレクトリの下にはアクセスできません。

これでは不十分な場合、または適切なグループやACLを設定できない場合は、バインドマウントを設定して、ユーザーの許可されたすべてのディレクトリを共通のディレクトリの下に表示できます。

mkdir /Jails/bob /Jails/bob/{1,2,7,9}
mount --bind /Documents/1 /Jails/bob/1
mount --bind /Documents/2 /Jails/bob/2
…

いいえ、私はあなたがこれを行うことができるとは思いません。あなたはそれを手に取ることができますが、それはメンテナンスの悪夢の少しです。ファイル/etc/ssh/sshd_configユーザーのグループやユーザーの名前など、一致するセクションを追加できます。

sshd_config

AllowGroups sftponly sftpadmin root

Match   Group sftponly
    ChrootDirectory %h
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no
    PasswordAuthentication yes

ただし、これによりユーザーのエントリポイントであるChrootDirectoryのみを制御できます。したがって、それらを適切なchrootにドロップする必要があります。

これらのディレクトリの自動マウントを使用して、いくつかの追加のゲームをプレイすることもできます。

*       /               -fstype=cifs,ro,noperm,netbiosname=${Host},file_mode=0444,dir_mode=0555,credentials=/etc/sftpuser_credentials.txt       ://server/sftpdata/& \
        /upload         -fstype=cifs,rw,noperm,netbiosname=${Host},file_mode=0666,dir_mode=0777,credentials=/etc/sftpuser_credentials.txt       ://server/sftpdata/&/upload

そのため、マウントを追加して、アクセスを取得するマウントへの読み取りアクセスと、アクセスを取得しないマウントへの非読み取りアクセスを許可することができます。

注:上記は、すべてに対する読み取りアクセス権をユーザーに付与しますが、/uploadそれらのchrootされたディレクトリ内のサブディレクトリ。

私はおそらくあなたが望むものを達成する別の方法を考えます、これは醜く速くなる可能性があり、維持するのは面倒です。

0
slm