ネガティブACL
アクセス制御リストを設定することにより、ユーザーがファイルシステムの特定の部分にアクセスするのを防ぐことができます。たとえば、ユーザーabcdが以下のファイルにアクセスできないようにするには/home:
setfacl -m user:abcd:0 /home
このアプローチは簡単ですが、アクセスしたくないすべてのものへのアクセスをブロックすることを忘れないでabcdください。
クルート
表示できるものを確実に制御abcdするには、chrootをセットアップします。つまり、ユーザーをファイルシステムのサブツリーに制限します。
chrootの下で、ユーザーが必要とするすべてのファイル(mysqlおよびユーザーが実行できるようにする場合は、そのすべての依存関係)を作成する必要がありますmysql。chrootへのパスは/home/restricted/abcd; mysqlプログラムが利用できるの下にする必要があります/home/restricted/abcd。シンボリックリンクルックアップはchroot jailの影響を受けるため、chrootの外側を指すシンボリックリンクは役に立ちません。Linuxでは、バインドマウントをうまく利用できます。
mount --rbind /bin /home/restricted/abcd/bin
mount --rbind /dev /home/restricted/abcd/dev
mount --rbind /etc /home/restricted/abcd/dev
mount --rbind /lib /home/restricted/abcd/lib
mount --rbind /proc /home/restricted/abcd/proc
mount --rbind /sbin /home/restricted/abcd/sbin
mount --rbind /sys /home/restricted/abcd/sys
mount --rbind /usr /home/restricted/abcd/usr
ファイルをコピーすることもできます(ただし、ファイルが最新のものであることに注意する必要があります)。
ユーザーをchrootに制限するには、にChrootDirectoryディレクティブを追加し/etc/sshd_configます。
Match User abcd
ChrootDirectory /home/restricted/abcd
以下でテストできます:
chroot --userspec=abcd /home/restricted/abcd/ /bin/bash
セキュリティフレームワーク
SELinuxやAppArmorなどのセキュリティフレームワークを使用することもできます。どちらの場合も、穴を残さないようにするために、かなり繊細な構成を作成する必要があります。