在yocto中使用PulseAudio服务时候,默认是root用户,该服务无法启动。因此需要新加一个普通用户。
1.adduser命令
adduser -D -H -S -g 'PulseAudio daemon,,,' -h /var/run/pulse -s /usr/bin/nologin -G pulse pulse
该命令用于创建用户的 adduser
,带有特定选项和参数,通常用于添加服务用户(如 PulseAudio 的守护进程用户),以下是命令中各部分的解析:
命令选项解析
-
adduser
:- 创建新用户。
-
-D
:- 使用默认值(Default options),不提示交互。
-
-H
:- 不创建用户的主目录(Home directory)。
-
-S
:- 创建一个系统用户(System account),不会为用户分配普通用户 ID,而是使用较低的系统用户 ID(通常 < 1000)。
-
-g 'PulseAudio daemon,,,'
:- 指定用户的
GECOS
字段(用户信息字段),包括全名、办公电话、家庭电话等信息。这里填入'PulseAudio daemon,,,'
,表明这个用户是 PulseAudio 守护进程。
- 指定用户的
-
-h /var/run/pulse
:- 指定用户的主目录路径为
/var/run/pulse
(即使-H
表示不创建主目录,仍可以为用户关联一个路径)。
- 指定用户的主目录路径为
-
-s /usr/bin/nologin
:- 指定用户的默认 shell 为
/usr/bin/nologin
,表明此用户不能登录系统。这是服务用户的常用设置。
- 指定用户的默认 shell 为
-
-G pulse
:- 将用户添加到组
pulse
。
- 将用户添加到组
-
pulse
:- 这是新创建用户的用户名。
执行效果
-
创建一个名为
pulse
的用户:- 该用户为系统用户。
- 不会创建实际的主目录。
-
用户组设置:
- 用户
pulse
将加入到组pulse
。
- 用户
-
不能登录:
- 因为用户的 shell 设置为
/usr/bin/nologin
,所以这个用户不能通过常规方法登录系统。
- 因为用户的 shell 设置为
-
用途:
- 这种配置通常用来为守护进程或服务创建特定的用户,不用于交互登录。例如:
- PulseAudio 服务使用该用户运行,提供最小权限以提高安全性。
- 这种配置通常用来为守护进程或服务创建特定的用户,不用于交互登录。例如:
验证用户创建
执行命令后,可以通过以下方式验证用户是否成功创建:
-
1.查看
/etc/passwd
文件: -
grep pulse /etc/passwd
输出类似:
-
pulse:x:1001:1001:PulseAudio daemon,,,:/var/run/pulse:/usr/bin/nologin
2.查看用户所属组:
-
groups pulse
输出类似:
-
pulse
3.确保用户不能登录:
-
su - pulse
输出类似:
-
This account is currently not available.
以上命令在yocto中可以这样写:
-
在 Yocto 中,如果需要通过
EXTRA_USERS_PARAMS
添加类似的用户,可以这样设置: -
EXTRA_USERS_PARAMS = "\ useradd -D -H -S -g 'PulseAudio daemon,,,' -h /var/run/pulse -s /usr/bin/nologin -G pulse pulse;"
将上述内容添加到你的
bb
文件中,这样构建的目标镜像中就会包含该用户。
总结
在yocto中为pulseaudio服务创建一个限制权限的服务用户,适用于运行后台进程或守护进程,具有以下特点:
- 无主目录。
- 系统用户。
- 无法登录。
- 加入特定的组。
这是服务用户创建的常见模式,用于提高系统安全性和进程隔离性。