比方说我想要一个名为"的非根用户;Alex";只允许关闭命令,但有这样的限制,他只能在至少120分钟后关闭,并且延迟不超过1000分钟。基本上,设置执行关机命令的上限和下限。此外,我正在使用Rocky Linux 9。
您可以:
- 下载
shutdown
C源代码,对其进行修改以检查用户是否为Alex,如果是,则检查所需的时间范围。然后将此源代码编译为一个名为my_shutdown
的程序,并将其安装到/usr/local/bin
- 并将其与用于sudoers中alex的
NOPASSWD
一起添加 - 或者只为其他用户退出程序,并在可执行文件上设置SUID位
- 或者您可以从头开始编写程序,而不是使用现有的shutdown.c实现
- 并将其与用于sudoers中alex的
- 或者,您可以将特定的参数组合列表作为
NOPASSWD
添加到sudoers中,如alex ALL=NOPASSWD: shutdown 120m
、... 121m
、... 122m
等 - 或者,您可以编写一个包装器,解析要关闭的参数,并检查它是否在范围内,如果在,它将把调用转发到
shutdown
可执行文件。并将该包装器添加到sudoers中,或在其上添加SUID。强烈考虑不使用脚本语言-例如,使用带有任何import
的python,通过操纵PYTHONPATH环境变量,用户将能够以root用户身份执行任何代码