diff -up shadow-4.9/man/getsubids.1.xml.getsubids shadow-4.9/man/getsubids.1.xml --- shadow-4.9/man/getsubids.1.xml.getsubids 2021-11-18 16:27:33.951053120 +0100 +++ shadow-4.9/man/getsubids.1.xml 2021-11-18 16:27:33.951053120 +0100 @@ -0,0 +1,141 @@ + + + +]> + + + + + Iker + Pedrosa + Creation, 2021 + + + + getsubids + 1 + User Commands + shadow-utils + &SHADOW_UTILS_VERSION; + + + getsubids + get the subordinate id ranges for a user + + + + + getsubids + + options + + + USER + + + + + + DESCRIPTION + + The getsubids command lists the subordinate user ID + ranges for a given user. The subordinate group IDs can be listed using + the option. + + + + + OPTIONS + + The options which apply to the getsubids command are: + + + + + + + + + List the subordinate group ID ranges. + + + + + + + + EXAMPLE + + For example, to obtain the subordinate UIDs of the testuser: + + + +$ getsubids testuser +0: testuser 100000 65536 + + + + This command output provides (in order from left to right) the list + index, username, UID range start, and number of UIDs in range. + + + + + SEE ALSO + + + login.defs5 + , + + newgidmap1 + , + + newuidmap1 + , + + subgid5 + , + + subuid5 + , + + useradd8 + , + + userdel8 + . + + usermod8 + , + + + diff -up shadow-4.9/man/Makefile.am.getsubids shadow-4.9/man/Makefile.am --- shadow-4.9/man/Makefile.am.getsubids 2021-07-22 23:55:35.000000000 +0200 +++ shadow-4.9/man/Makefile.am 2021-11-18 16:27:33.951053120 +0100 @@ -62,6 +62,7 @@ man_MANS += $(man_nopam) endif man_subids = \ + man1/getsubids.1 \ man1/newgidmap.1 \ man1/newuidmap.1 \ man5/subgid.5 \ @@ -80,6 +81,7 @@ man_XMANS = \ expiry.1.xml \ faillog.5.xml \ faillog.8.xml \ + getsubids.1.xml \ gpasswd.1.xml \ groupadd.8.xml \ groupdel.8.xml \ diff -up shadow-4.9/src/getsubids.c.getsubids shadow-4.9/src/getsubids.c --- shadow-4.9/src/getsubids.c.getsubids 2021-11-18 16:27:33.951053120 +0100 +++ shadow-4.9/src/getsubids.c 2021-11-18 16:27:33.951053120 +0100 @@ -0,0 +1,46 @@ +#include +#include +#include +#include "subid.h" +#include "prototypes.h" + +const char *Prog; +FILE *shadow_logfd = NULL; + +void usage(void) +{ + fprintf(stderr, "Usage: %s [-g] user\n", Prog); + fprintf(stderr, " list subuid ranges for user\n"); + fprintf(stderr, " pass -g to list subgid ranges\n"); + exit(EXIT_FAILURE); +} + +int main(int argc, char *argv[]) +{ + int i, count=0; + struct subid_range *ranges; + const char *owner; + + Prog = Basename (argv[0]); + shadow_logfd = stderr; + if (argc < 2) + usage(); + owner = argv[1]; + if (argc == 3 && strcmp(argv[1], "-g") == 0) { + owner = argv[2]; + count = get_subgid_ranges(owner, &ranges); + } else if (argc == 2 && strcmp(argv[1], "-h") == 0) { + usage(); + } else { + count = get_subuid_ranges(owner, &ranges); + } + if (!ranges) { + fprintf(stderr, "Error fetching ranges\n"); + exit(1); + } + for (i = 0; i < count; i++) { + printf("%d: %s %lu %lu\n", i, owner, + ranges[i].start, ranges[i].count); + } + return 0; +} diff -up shadow-4.9/src/list_subid_ranges.c.getsubids shadow-4.9/src/list_subid_ranges.c diff -up shadow-4.9/src/Makefile.am.getsubids shadow-4.9/src/Makefile.am --- shadow-4.9/src/Makefile.am.getsubids 2021-11-18 16:27:33.943053061 +0100 +++ shadow-4.9/src/Makefile.am 2021-11-18 16:28:03.647272392 +0100 @@ -157,8 +157,8 @@ if FCAPS setcap cap_setgid+ep $(DESTDIR)$(ubindir)/newgidmap endif -noinst_PROGRAMS += list_subid_ranges \ - get_subid_owners \ +bin_PROGRAMS += getsubids +noinst_PROGRAMS += get_subid_owners \ new_subid_range \ free_subid_range \ check_subid_range @@ -174,13 +174,13 @@ MISCLIBS = \ $(LIBCRYPT) \ $(LIBTCB) -list_subid_ranges_LDADD = \ +getsubids_LDADD = \ $(top_builddir)/lib/libshadow.la \ $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/libsubid/libsubid.la \ $(MISCLIBS) -ldl -list_subid_ranges_CPPFLAGS = \ +getsubids_CPPFLAGS = \ -I$(top_srcdir)/lib \ -I$(top_srcdir)/libmisc \ -I$(top_srcdir)/libsubid