diff options
author | Johan Oudinet <johan.oudinet@gmail.com> | 2018-09-03 15:11:16 +0200 |
---|---|---|
committer | Thomas Petazzoni <thomas.petazzoni@bootlin.com> | 2018-09-12 21:22:25 +0200 |
commit | 497f7134fca4b111499b2fd23501d7e048303e7c (patch) | |
tree | cacf9937bf494a0b17bfe5f17130692ced03c70d | |
parent | 04d7572a8533afa684a9ba8fbabcff7aaf85aa1e (diff) | |
download | buildroot-497f7134fca4b111499b2fd23501d7e048303e7c.tar.gz buildroot-497f7134fca4b111499b2fd23501d7e048303e7c.zip |
support/scripts/mkusers: preserve group members
When the function add_one_group is called on an existing group,
make sure the members of this group are not removed in the process of
deleting then re-adding the group.
Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
[Thomas: add curly braces when referencing ${members}, as suggested by
Yann.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
-rwxr-xr-x | support/scripts/mkusers | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/support/scripts/mkusers b/support/scripts/mkusers index 5bbec3e10f..d00ba33823 100755 --- a/support/scripts/mkusers +++ b/support/scripts/mkusers @@ -76,6 +76,14 @@ get_gid() { } #---------------------------------------------------------------------------- +get_members() { + local group="${1}" + + awk -F: -v group="${group}" \ + '$1 == group { printf( "%s\n", $4 ); }' "${GROUP}" +} + +#---------------------------------------------------------------------------- get_username() { local uid="${1}" @@ -211,16 +219,17 @@ generate_gid() { add_one_group() { local group="${1}" local gid="${2}" - local _f + local members # Generate a new GID if needed if [ ${gid} -eq -1 ]; then gid="$( generate_gid "${group}" )" fi + members=$(get_members "$group") # Remove any previous instance of this group, and re-add the new one sed -i --follow-symlinks -e '/^'"${group}"':.*/d;' "${GROUP}" - printf "%s:x:%d:\n" "${group}" "${gid}" >>"${GROUP}" + printf "%s:x:%d:%s\n" "${group}" "${gid}" "${members}" >>"${GROUP}" # Ditto for /etc/gshadow if it exists if [ -f "${GSHADOW}" ]; then |