web-dev-qa-db-ja.com

個別のパーティションなしで/ home / tmp noexecnodevを作成します

/ tmp/varや/ home(nodev、nosuid、quotaを追加)など、ルートファイルシステムの一部のマウントオプションを変更する必要がありますが、個別のパーティションを作成することができず、十分ではありませんRAM/tmpをtmpfsとしてマウントします。 mount -o bind、noexec、nodev、nosuid/tmp/tmpを試しましたが、その後も/ tmpからファイルを実行し、デバイスをうなずくことができるため、機能していないようです。それを行う他の方法はありますか?

6
gordon-quad

Bindおよびnoexec、nodev、nosuidオプションを使用して/ tmpを再マウントできますが、1つのステップでは再マウントできません。一部のLinuxカーネルVFSレイヤーの制限により、最初にバインドマウントしてから、適切なオプションを使用して再マウントする必要があります。

root@utemp:/# /tmp/test.sh 
uid=0(root) gid=0(root) groups=0(root)
root@utemp:/# mount -o bind,noexec /tmp /tmp
root@utemp:/# ./tmp/test.sh 
uid=0(root) gid=0(root) groups=0(root)
root@utemp:/# umount /tmp
root@utemp:/# mount -o bind /tmp /tmp
root@utemp:/# mount -o remount,noexec /tmp
root@utemp:/# ./tmp/test.sh 
bash: ./tmp/test.sh: Permission denied
root@utemp:/# umount /tmp

これは不便です。/etc/fstabの1行ではなく、システムの起動時にディレクトリごとに2つのマウントコマンドを使用してスクリプトを呼び出す必要があります。

この記事の詳細情報 [〜#〜] lwn [〜#〜] 記事。古いカーネルでは機能しません。バインドマウントポイントには、基盤となるファイルシステムと常に同じマウントオプションがあります。

11
kupson