adduser, addgroup“正在使用的组”

sve*_*ema 5 users busybox

我正在尝试创建一个系统范围的 PulseAudio 守护进程(我知道与此相关的安全问题)。但是,当我通过 PulseAudio 守护进程(以 root 身份)播放时,出现访问被拒绝的错误。我认为这可能是因为root用户不在pulse-access组中。

我尝试添加它:

adduser root pulse-access
Run Code Online (Sandbox Code Playgroud)

不幸的是,这又给了我这个错误:

addgroup: group 'root' in use
Run Code Online (Sandbox Code Playgroud)

我正在一个小型 BusyBox 上运行,它没有更高级的 useradd 等命令。

Why can't I / How should I add a user to a specific group, having only access to these two commands?

Running PulseAudio as System-Wide Daemon https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/

sve*_*ema 3

BusyBox 可以在禁用 FEATURE_ADDUSER_TO_GROUP 的情况下进行编译(buildroot-2017.08 的默认行为)。如果是这种情况,则无法将 addgroup 或 adduser 添加到组中。至少在理论上,因为当我启用该功能时,我仍然遇到相同的错误。

简单的解决方案:只需直接编辑/etc/group,然后自己添加用户即可。例如:

pulse-access:x:1003:pulse,root
Run Code Online (Sandbox Code Playgroud)

在进行 buildroot 构建时,您可能需要在 fakeroot 脚本步骤中添加以下内容:

# Add root user to pulse-access group
if [ -e ${TARGET_DIR}/etc/group ]; then
    sed -i '/^pulse-access:/s/\(.*\)/\1,root/;s/:,/:/' ${TARGET_DIR}/etc/group
fi
Run Code Online (Sandbox Code Playgroud)