有没有办法使用checkinstall而不安装/ var / tmp作为exec?


1

我正在从源代码编译nginx并希望使用checkinstall,以便以后可以更轻松地卸载它。问题是checkinstall在/ var / tmp中执行脚本,我使用noexec挂载以防止权限提升。

我发现 这个网站 建议临时绑定/ var / tmp到不同的地方以允许在/ var / tmp中执行脚本。但是,这不会导致在此时运行使用/ var / tmp的进程并导致我容易受到攻击的问题吗?

这让我想到的问题是有没有一种方法可以使用checkinstall而无需挂载/ var / tmp作为exec?也许使用chroot或unshare?

Answers:


0

可以使用unshare命令创建专用于脚本的命名空间:

unshare --mount /path/to/script # Execute command in dedicated mount namespace

该脚本使用自己的mount命名空间。 它可能看起来像这样:

mount --make-rslave /            # Prevent this mount namespace
                                 # from changing the real namespace
mount --bind /foo/tmptmp foo/tmp # Do the bind
touch /foo/tmp/tmpFile           # Create tmp files
echo $( ls /foo/tmptmp )
echo $( ls /foo/tmp )
#output:
#tmpFile
#tmpFile

使用unshare执行脚本后,让我们看看主系统发生了什么。

ls /foo/tmptmp
#output: tmpFile
ls /foo/tmp
#output: 
#(Note that the file is only present in /foo/tmptmp)
umount /foo/tmptmp
#output: umount: /foo/tmptmp: not mounted
#(Note that the bind did only affect the mount namespace of the script)

将此问题应用于问题的问题会产生以下需要通过unshare --mount调用的脚本:

mount --make-rslave /
mount --bind /your/tmp/file /var/tmp
checkinstall
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.