在嵌入式Linux设备(带有iMX7d处理器的Colibri模块)上,我无法以非根用户身份运行命令systemctl suspend以切换到挂起模式。当我以root用户身份登录时,将执行该命令,系统将切换到挂起模式。同样的命令以非root用户的身份在Ubuntu PC系统上运行。
我也想在没有root权限的嵌入式Linux设备上进入挂起模式。有没有人可以帮助我,或者告诉我如何实现这个目标?任何帮助都将不胜感激。
以下是嵌入式设备的Linux内核版本:
$ uname -r
5.4.91-5.2.0-devel+git.c59b3c2da1e9以下是systemctl版本的版本:
$ 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发布于 2021-10-06 08:00:25
要允许其他(非根)用户仅运行根用户命令,可以使用sudo https://linux.die.net/man/8/sudo
假设需要能够挂起的非根用户名为:user1
在/root/suspend.sh中创建包含systemctl suspend的文件,并确保其模式为0700且归root:root所有,例如,以根用户身份运行以下命令:
echo 'systemctl suspend' > /root/suspend.sh
chmod 0700 /root/suspend.sh
chown root:root /root/suspend.sh然后以根用户身份运行visudo,然后添加以下行:
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,然后使用任意命令创建同名的新文件。
https://stackoverflow.com/questions/69452950
复制相似问题