W: TMPDIR is mounted noexec, will not cache run scripts.
时间:2019-11-20 08:53:12 来源:igfitidea点击:
问题
在执行" apt-get install"或" apt-get upgrade"命令时,报错:
apt-get install linux-generic linux-headers-generic linux-image-generic ..... .... .. Generating grub.cfg ... Found linux image: /boot/vmlinuz-3.2.0-43-generic Found initrd image: /boot/initrd.img-3.2.0-43-generic .... ldconfig deferred processing now taking place Processing triggers for initramfs-tools ... update-initramfs: Generating /boot/initrd.img-3.2.0-43-generic W: TMPDIR is mounted noexec, will not cache run scripts.
原因
在/etc/fstab文件中设置以下两个标志可以使/tmp不可执行:
noexec
不允许直接在/tmp挂载的文件系统上执行任何二进制文件或脚本。nosuid
不允许SUID或SGID位生效。nodev
不要解释字符或阻止文件系统上的特殊设备。
这可以保护您的服务器免受各种攻击。
但是,这样可能会导致apt-get upgrade命令失败,并显示以下消息:
W: TMPDIR is mounted noexec, will not cache run scripts.
apt-get命令会使用/tmp放置脚本,由于/tmp上的noexec标志,脚本无法执行。
解决方法
编辑文件/etc/apt/apt.conf
:
$ sudo vi /etc/apt/apt.conf
内容如下:
DPkg::Pre-Invoke{"mount -o remount,exec /tmp";}; DPkg::Post-Invoke {"mount -o remount,rw,noexec,nosuid,nodev /tmp";};
apt.conf是APT的主要配置文件。
我们设置了调用apt-get命令前后要执行的命令。
重新执行apt-get命令
现在重新执行重装命令:
$ sudo apt-get --reinstall install linux-generic linux-headers-generic linux-image-generic
那么实际的操作过程是:
mount -o remount,exec /tmp
apt-get --reinstall install linux-generic linux-headers-generic linux-image-generic
mount -o remount,rw,noexec,nosuid,nodev /tmp