sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
我想在启动时运行命令使蚀刻机工作。
如何在启动期间使用 sudo 运行这样的命令,而无需输入密码?
答案1
该sudo
命令实际上旨在在交互式会话中提升权限 - 具体来说,它需要通过 tty(或通过 指定的其他交互式机制SUDO_ASKPASS
)读取身份验证用户的密码。任何时候你想以非交互方式运行提升权限的命令,通常都有更好的方法 - 例如
- 通过根
crontab
入口 - 通过 systemd 系统服务
对于sysctl
,还有一个更好的选择:通过嵌入式配置文件。来自man sysctl.d
:
DESCRIPTION At boot, systemd-sysctl.service(8) reads configuration files from the above directories to configure sysctl(8) kernel parameters.
因此,您可以简单地创建一个文件/etc/sysctl.d
并在其中添加name = value
- 使用您喜欢的文本编辑器,或者例如使用
echo 'kernel.apparmor_restrict_unprivileged_userns = 0' |
sudo tee /etc/sysctl.d/20-apparmor-etcher.conf
(除了后缀之外.conf
,文件名是任意的 - 我建议您选择对您有意义的名称)。
我的当前内核(5.15.0-105-generic)似乎没有该kernel.apparmor_restrict_unprivileged_userns
参数,因此我用kernel.unprivileged_userns_apparmor_policy
它来测试。