首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"systemctl suspend“命令所需的Root权限

"systemctl suspend“命令所需的Root权限
EN

Stack Overflow用户
提问于 2021-10-05 15:06:52
回答 1查看 173关注 0票数 0

在嵌入式Linux设备(带有iMX7d处理器的Colibri模块)上,我无法以非根用户身份运行命令systemctl suspend以切换到挂起模式。当我以root用户身份登录时,将执行该命令,系统将切换到挂起模式。同样的命令以非root用户的身份在Ubuntu PC系统上运行。

我也想在没有root权限的嵌入式Linux设备上进入挂起模式。有没有人可以帮助我,或者告诉我如何实现这个目标?任何帮助都将不胜感激。

以下是嵌入式设备的Linux内核版本:

代码语言:javascript
复制
$ uname -r
5.4.91-5.2.0-devel+git.c59b3c2da1e9

以下是systemctl版本的版本:

代码语言:javascript
复制
$ systemctl --version
systemd 244 (244.5+)
+PAM -AUDIT -SELINUX +IMA -APPARMOR -SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN2 -IDN -PCRE2 default-hierarchy=hybrid
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-06 08:00:25

要允许其他(非根)用户仅运行根用户命令,可以使用sudo https://linux.die.net/man/8/sudo

假设需要能够挂起的非根用户名为:user1

/root/suspend.sh中创建包含systemctl suspend的文件,并确保其模式为0700且归root:root所有,例如,以根用户身份运行以下命令:

代码语言:javascript
复制
echo 'systemctl suspend' > /root/suspend.sh
chmod 0700 /root/suspend.sh
chown root:root /root/suspend.sh

然后以根用户身份运行visudo,然后添加以下行:

代码语言:javascript
复制
user1 ALL=(root) NOPASSWD: /root/suspend.sh

然后保存文件

这意味着user1可以作为root用户运行script /root/suspend.sh,而无需询问其(用户1)的密码

当您想以user1身份挂起时,可以运行:sudo /root/suspend.sh

使用此解决方案,user1可以作为根用户运行sudo /root/suspend.sh,但不能以根用户身份运行任意命令(除非您将用户添加到sudo组)

重要考虑事项:

您必须确保/root/suspend.sh只能由根用户写入(并且它包含的目录/root/也只能由根用户写入)

如果任何非根用户可以写入/root/suspend.sh,那么当user1运行该文件时,它将在那里执行任意命令。

如果任何非根用户可以写入目录/root/,则任何用户也可以移除/删除/root/suspend.sh,然后使用任意命令创建同名的新文件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69452950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档