每当我尝试通过运行时growisofs,sudo我总是收到以下错误消息。
$ sudo -i growisofs
:-( growisofs is being executed under sudo, aborting!
See NOTES paragraph in growisofs manual page for further details.
$ sudo -s growisofs
:-( growisofs is being executed under sudo, aborting!
See NOTES paragraph in growisofs manual page for further details.
Run Code Online (Sandbox Code Playgroud)
这导致我不得不做一个sudo su -跟着growisofs.
$ sudo su - -c growisofs
growisofs: previous "session" device is not specified, do use -M or -Z option
-or-
$ sudo su -
# growisofs ...
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以做到这一点而不必这样做su -?
此行为内置于工具中,growisofs以阻止以提升的权限访问文件系统。
摘抄
笔记
如果在
sudo(8)growisofs拒绝启动下执行。这样做的原因如下。自然growisofs必须访问要记录到 DVD 媒体的数据集,或者是通过mkisofs即时生成 ISO9660 布局来间接访问,或者如果要记录预制图像,则必须直接访问。在 下执行sudo(8),growisofs有效地授予 sudoers 对文件系统中任何文件的读取访问权限。这种情况因growisofs 解析MKISOFS环境变量以确定mkisofs 可执行映像的替代路径这一事实而加剧。这意味着在下执行sudo(8),growisofs 有效地授予 sudoers 以更高的权限执行他们选择的程序的权利。如果您出于任何原因仍然认为上述情况可以接受并愿意承担后果,那么请考虑sudo(8)在适当的位置运行以下包装脚本以获得真正的growisofs二进制文件。Run Code Online (Sandbox Code Playgroud)#!/bin/ksh unset SUDO_COMMAND export MKISOFS=/path/to/trusted/mkisofs exec growisofs "$@"但请注意,上述“解决方法”的推荐替代方案实际上是安装
growisofsset-root-uid,在这种情况下,它会在访问数据或执行之前放弃特权mkisofs,以防止对数据进行未经授权的访问。
什么growisofs是这里做的是寻找的SUDO_COMMAND环境变量,如果变量发现中止。有效的原因sudo su -是因为su -清除了环境。
您可以执行以下操作,而不必获得完整的外壳:
sudo env -i growisofs
Run Code Online (Sandbox Code Playgroud)
这将擦除环境,就像su -. 唯一的区别是,su -它还会将基本变量(in/etc/profile等)放回原处,而env -i不会(完全空的环境)。
更精确的解决方案是:
sudo env -u SUDO_COMMAND growisofs
Run Code Online (Sandbox Code Playgroud)
这将保护环境,除了SUDO_COMMAND.