原文网址:https://www.youyong.top/article/1158e7a269139
/tmp 是一个独立的磁盘分区
这种情况下的处理最简单,直接修改 /etc/fstab 文件中 tmp 分区的挂载属性,加上 nosuid(不允许任何suid程序),noexec(在这个分区不能执行任何脚本等程序),nodev(不存在设备文件) 参数。
修改后的挂载属性应该和截图类似:
在挂载属性调整完毕后重新挂载/tmp分区,确保设置生效。
对于 /var/tmp 目录来说,如果有自己的独立分区的话就参考上述修改就可以,但如果只是 /var 目录下的一个子目录,则把目录下的所有数据移动到 /tmp 下,然后做一个软连接指向 /tmp 就可以了,具体操作为:
mv /var/tmp/* /tmp
ln -s /tmp /var/tmp
/tmp只是根目录下的一个子目录
这种情况的配置要麻烦一点,可以通过创建一个 loopback 文件系统(拿文件模拟为块设备),然后通过 loopback 特性挂载该文件系统到 /tmp 下,在挂载时指定前文的安全设置就可以了,操作实例如下:
dd if=/dev/zero of=/dev/testfs bs=1M count=1000 (这里生成的文件大小是1G,如果需要更改大小,修改count后面的值就可以了)
mke2fs -t ext4 /dev/testfs (格式化文件系统)
cp -a /tmp /tmp.bak (把之前存在于/tmp下的文件拷贝出来,以免再后面执行挂载的时候覆盖掉之前的文件)
mount -o loop,noexec,nosuid,rw /dev/testfs /tmp(挂载到tmp目录下)
chmod 1777 /tmp
mv -f /tmp.bak/* /tmp
rm -rf /tmp.bak
echo "/dev/testfs /tmp ext4 loop,nosuid,noexec,rw 0 0">>/etc/fstab(写入配置文件,下次开机自动挂载)
最后,测试一下挂载设置之后是否有效:
新建一个test.sh文件,具有执行权限,实验如截图:
从截图可以看到虽然具有执行权限,但是在 /tmp 下面已经无法执行任何文件了.
原文网址:https://www.youyong.top/article/1158e7a269139