[poky] [PATCH 5/7] useradd-example: example recipe for using inherit useradd

Mark Hatle mark.hatle at windriver.com
Tue May 31 12:09:07 PDT 2011


A few suggestions below to expand the example a bit.

On 5/31/11 1:13 PM, Scott Garman wrote:
> An example recipe for demonstrating/documenting how user and
> group manipulation is done with 'inherit useradd'
> 
> Signed-off-by: Scott Garman <scott.a.garman at intel.com>
> ---
>  .../recipes-skeleton/useradd/useradd-example.bb    |   59 ++++++++++++++++++++
>  1 files changed, 59 insertions(+), 0 deletions(-)
>  create mode 100644 meta-skeleton/recipes-skeleton/useradd/useradd-example.bb
>  create mode 100644 meta-skeleton/recipes-skeleton/useradd/useradd-example/file1
>  create mode 100644 meta-skeleton/recipes-skeleton/useradd/useradd-example/file2
>  create mode 100644 meta-skeleton/recipes-skeleton/useradd/useradd-example/file3
>  create mode 100644 meta-skeleton/recipes-skeleton/useradd/useradd-example/file4
> 
> diff --git a/meta-skeleton/recipes-skeleton/useradd/useradd-example.bb b/meta-skeleton/recipes-skeleton/useradd/useradd-example.bb
> new file mode 100644
> index 0000000..1e6ae87
> --- /dev/null
> +++ b/meta-skeleton/recipes-skeleton/useradd/useradd-example.bb
> @@ -0,0 +1,59 @@
> +SUMMARY = "Example recipe for using inherit useradd"
> +DESCRIPTION = "This recipe serves as an example for using features from useradd.bbclass"
> +SECTION = "examples"
> +PR = "r0"
> +LICENSE = "MIT"
> +LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
> +                    file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
> +
> +SRC_URI = "file://file1 \
> +           file://file2 \
> +           file://file3 \
> +           file://file4"
> +
> +S = "${WORKDIR}"
> +

Move the package's up here to be clearer what we're doing:

PACKAGES =+ "${PN}-user3"

> +inherit useradd
> +
> +# Specify which package(s) should include the user/group code.
> +# Make sure that any packages which install files owned by custom
> +# users/groups are included here. The code which adds users and
> +# groups is idempotent.
> +USERADD_PACKAGES = "useradd-example"

List two packages above:

USERADD_PACKAGES = "useradd-example ${PN}-user3"

> +
> +# You *must* set USERADD_PARAM and/or GROUPADD_PARAM when
> +# you inherit useradd.
> +
> +# USERADD_PARAM specifies command line options to pass to the
> +# useradd command. Multiple users can be created by separating
> +# the commands with a semicolon. Here we'll create two users,
> +# user1 and user3:
> +USERADD_PARAM_useradd-example = "-u 1200 -d /home/user1 -r -s /bin/bash user1; -u 1201 -d /home/user3 -r -s /bin/bash user3"

Break the above apart into:

USERADD_PARAM_useradd-example = "-u 1200 -d /home/user1 -r -s /bin/bash user1;
-u 1201 -d /home/user2 -r -s /bin/bash user2"

USERADD_PARAM_${PN}-user3 = "-u 1202 -d /home/user3 -r -s /bin/bash user3"

> +
> +# GROUPADD_PARAM works the same way, which you set to the options
> +# you'd normally pass to the groupadd command. This will create
> +# groups group1, group2, and group3:
> +GROUPADD_PARAM_useradd-example = "-g 880 group1; -g 890 group2; -g 900 group3"

GROUPADD_PARAM_useradd-example = "-g 880 group1; -g 890 group2"

GROUPADD_PARAM_${PN}-user3 = "-g 900 group3"

> +
> +do_install () {
> +	install -d -m 755 ${D}/usr/share/user1
> +	install -d -m 755 ${D}/usr/share/user3
> +	install -p -m 644 file1 ${D}/usr/share/user1/
> +	install -p -m 644 file2 ${D}/usr/share/user1/
> +	install -p -m 644 file3 ${D}/usr/share/user3/
> +	install -p -m 644 file4 ${D}/usr/share/user3/
> +
> +	# The new users and groups are created before the do_install
> +	# step, so you are now free to make use of them:

To match the above split:

> +	chown -R user1 ${D}/usr/share/user1
> +	chown -R user3 ${D}/usr/share/user3
> +	chgrp group1 ${D}/usr/share/user1/file1
> +	chgrp group3 ${D}/usr/share/user1/file2
> +	chgrp group1 ${D}/usr/share/user3/file3
> +	chgrp group3 ${D}/usr/share/user3/file4

	chown -R user1 ${D}/usr/share/user1
	chown -R user3 ${D}/usr/share/user3
	chgrp group1 ${D}/usr/share/user1/file1
	chgrp group2 ${D}/usr/share/user1/file2
	chgrp group3 ${D}/usr/share/user3/file3
	chgrp group3 ${D}/usr/share/user3/file4

Since the user1 added groups 1 and 2..  while user3 only has group 3....

> +}
> +
> +PACKAGES =+ "${PN}-user3"

Moved the above line, so remove it here.

> +
> +FILES_${PN} = "/usr/share/user1/*"
> +FILES_${PN}-user3 = "/usr/share/user3/*"

This should now produce two split packages.  Each having different users and
groups being added.

> diff --git a/meta-skeleton/recipes-skeleton/useradd/useradd-example/file1 b/meta-skeleton/recipes-skeleton/useradd/useradd-example/file1
> new file mode 100644
> index 0000000..e69de29
> diff --git a/meta-skeleton/recipes-skeleton/useradd/useradd-example/file2 b/meta-skeleton/recipes-skeleton/useradd/useradd-example/file2
> new file mode 100644
> index 0000000..e69de29
> diff --git a/meta-skeleton/recipes-skeleton/useradd/useradd-example/file3 b/meta-skeleton/recipes-skeleton/useradd/useradd-example/file3
> new file mode 100644
> index 0000000..e69de29
> diff --git a/meta-skeleton/recipes-skeleton/useradd/useradd-example/file4 b/meta-skeleton/recipes-skeleton/useradd/useradd-example/file4
> new file mode 100644
> index 0000000..e69de29




More information about the poky mailing list