Archisman Panigrahi Asked: 2024-04-27 09:16:02 +0800 CST2024-04-27 09:16:02 +0800 CST 2024-04-27 09:16:02 +0800 CST 如何在启动时设置 sysctl 参数? 772 sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0我想在启动时运行命令以使 etcher 工作。 如何在启动时使用 sudo 运行这样的命令,而不输入密码? kernel 1 个回答 Voted Best Answer steeldriver 2024-04-28T09:15:38+08:002024-04-28T09:15:38+08:00 该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。
该
sudo
命令实际上旨在提升交互式会话中的权限 - 特别是,它期望通过 tty (或通过 指定的其他交互机制SUDO_ASKPASS
)读取身份验证用户的密码。任何时候您想要以非交互方式运行具有提升权限的命令时,通常都有更好的方法 - 例如crontab
条目对于
sysctl
,有一个更好的选择:通过嵌入式配置文件。从man sysctl.d
:因此,您可以简单地创建一个文件
/etc/sysctl.d
并在那里添加name = value
- 使用您最喜欢的文本编辑器,或者例如使用(除了后缀之外
.conf
,文件名是任意的 - 我建议您选择对您有意义的名称)。我当前的内核(5.15.0-105-generic)似乎没有该
kernel.apparmor_restrict_unprivileged_userns
参数,因此我进行了测试kernel.unprivileged_userns_apparmor_policy
。