我的用例是,我有一个脚本,它可以将我的用户从 sudo 组中删除,然后使用该命令在未来的某个时间点再次添加我at
。
问题是我每次都必须重新启动机器才能使更改生效,第一次是停止成为 sudo 用户,第二次(一旦脚本再次将我添加到 sudo 组)才能再次成为 sudo 用户。
奇怪的是,我的 DE (Cinnamon) 和文件资源管理器 (Nemo) 立即获取了更改,这意味着如果我尝试转到文件管理器并“以 root 身份打开”,如果我运行了脚本并且我被从 sudo 组中移除,我就无法执行此操作。但是如果我进入终端并执行sudo apt update
此操作,除非我重新启动,否则此操作将有效。
目标是有效地反映删除/添加我的用户到 sudo 组,而无需重新启动我的机器。(我说重新启动而不是注销,因为奇怪的是,注销显然不起作用)。
我在网上搜索过,一个解决方案是运行:
sudo service sudo restart
但问题是我收到了错误:Failed to restart sudo.service: Unit sudo.service is masked.
我试图取消屏蔽sudo.service
,但没有任何变化。
信息:我使用的是 Linux Mint 22 和 Cinnamon 6.2.9。Linux 内核:6.8.0-48-generic
编辑:
整个脚本的目标我正在制作一个名为delayed-admin 的
项目的分支。它的作用基本上是将主用户从 sudo 组中删除,这样你就无法执行任何需要sudo
访问权限的操作。然后只有两种方法可以执行需要的命令sudo
:
- 等待将
at
用户重新放入 sudo 组的预定功能(因为当您启动命令时,sudo ./abdicate.sh "now + 3 hours"
您将被锁定在 sudo 之外 3 小时。 - 以这种方式使用该命令,即使您不在 sudo 组中,也会执行
sudo delayed example-command
该命令,但它会按照用户通过配置文件选择的一定延迟执行。example-command
我想要实现的目标:当脚本删除/添加我的用户到 sudo 组时能够丢失/获得 sudo 权限,而无需重新启动我的机器。