質問: * OS: CentOS Linux release 7.6.1810 (Core) * CPU: Pentium(R) Dual-Core CPU E6700 @ 3.20GHz
回答: Debian系のLinux でExec-Shieldを無効化って可能なのですか?(teratailの回答) より、既に適用されている可能性が高いです。 ご使用されているCPU(intel.com)のエグゼキュート・ディスエーブル・ビットは「はい」であるため、対応しています。 そのため、次のような結果となれば、Exec-shieldは有効になっています。 ``` # CPUが対応しているかどうか [aaa@centos1 boot]$ cat /proc/cpuinfo | grep flags | tail -1 | grep --color -P "nx|pae" flags : . ... pae .... syscall nx pdpe1gb .... # 実際に有効になっているか: activeなら有効 [aaa@centos1 boot]$ dmesg | grep --color '[NX|DX]*protection' [ 0.000000] NX (Execute Disable) protection: active ``` exec-shieldを無効にする方法(非推奨) セキュリティリスクを大幅に軽減する機能であるため、特殊な事情がない限り、実施しないこと。 あくまでも、気になったので調べてみた程度です。 grubから noexec=off をパラメータとして渡せば、無効化される模様。 ``` sudo vi /etc/default/grub # GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet" # ↓次のようにnoexecを追記する↓ # GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet noexec=off" sudo grub2-mkconfig -o /boot/grub2/grub.cfg ``` 再起動したら、以下のようになった。 ``` [aaa@centos1 ~]$ dmesg | grep --color '[NX|DX]*protection' [ 0.000000] NX (Execute Disable) protection: disabled by kernel command line option # よく理解していないが、SELinuxへは影響がない模様。不思議。 [aaa@centos1 ~]$ sudo getenforce Enforcing ``` 参考文献 * "Exec Shield", new Linux security feature 最初のアナウンス(英語) 2003年5月 * New Security Enhancementsin Red Hat Enterprise Linux v.3, update 3 (PDF) ExecShieldに関する資料(英語) 2004年8月 * 起動時に出力されるログを出力している箇所 linux arch/x86/mm/setup_nx.c