我在使用 sudo 时遇到了一个问题。当我在普通账户中运行 sudo 时,我得到:
sudo: PERM_ROOT: setresuid(0, -1, -1): Permission denied
sudo: error initializing audit plugin sudoers_audit
但是我注释掉了 /etc/sudo.conf 中写的那一行Plugin audit
。这是我的 /etc/sudoers:
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
running ALL=(ALL:ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "@include" directives:
@includedir /etc/sudoers.d
root ALL=(ALL:ALL) NOPASSWD:ALL
running ALL=(ALL:ALL) NOPASSWD:ALL
请注意,sudo 在 root 帐户下可以正常工作,但仅在普通帐户下会失败(普通帐户在running
这里。)
我该如何解决这个问题?
答案1
sudo: PERM_ROOT: setresuid(0, -1, -1): Permission denied
当进程/用户缺乏能力时,就会发生 错误CAP_SETUID
。手册页setresuid(2)
(关联) 提到这是必需的。
缺乏此功能可能源于多种原因,例如受限的 cgroup 或 systemd 单元。如果没有有关您的用户帐户/执行上下文的更多信息,则无法在此处给出具体答案。
你可以尝试通过检查你自己的一个进程来追踪你当前的功能grep Cap /proc/<pid>/status
。这应该会显示你所有启用的功能。
对于 systemd 单元,CapabilityBoundingSet
和相关选项负责处理功能。在这种情况下,您应该查看单元文件和/或相关进程。
某些功能也可以与用户绑定,如上所述在这个问题中。
PS:这个答案很可能太晚了。不过,我最近遇到了这个问题,想与下一个遇到这个问题的人分享解决方案。