extrauser 和 useradd 之间的确切区别是什么

Moh*_*ris 4 yocto

在一个配方中,我可以看到以下内容,但它没有创建任何额外的用户或组,这是我在检查 rpm 文件时确认的。

inherit extrausers
EXTRA_USERS_PARAMS = "\
        useradd -p '' example; \
        groupadd example; \
        "
Run Code Online (Sandbox Code Playgroud)

因此,我在为我创建用户和组的配方中添加了以下内容。

inherit useradd
USERADD_PACKAGES = "${PN}"
GROUPADD_PARAM_${PN} = "--system example"
USERADD_PARAM_${PN} = "--system -M -d /var/lib/example -s /bin/false -g example example"
Run Code Online (Sandbox Code Playgroud)

yocto 中的 useradd 和 extrausers 之间的确切区别是什么?为什么额外用户无法创建用户和组。

Tal*_*LEM 5

extrausers在图像级别添加用户/组,并且不能绑定到特定的菜谱,这就是useradd类的作用,它可以在菜谱上使用。

请阅读此处的注释:

笔记

使用 extrausers 类添加的用户和组操作不依赖于图像配方之外的特定配方。因此,可以在整个图像上执行操作。使用 useradd 类将用户和组配置添加到特定配方。

这是useradd的注释:

useradd* 类支持添加用户或组以供目标上的包使用。例如,如果您的程序包包含应在其自己的用户或组下运行的系统服务,则可以使用这些类来创建用户或组。