如何在启动时设置 sysctl 参数?

如何在启动时设置 sysctl 参数?

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它来测试。

相关内容