Gibt es ein Tool (!), Um zugewiesene Subuid- und Subgid-Werte für Benutzer aufzulisten?

14

usermod -v( --add-sub-uids) und usermod -w( --add-sub-gids) können verwendet werden, um die Subuid- und Subgid-Bereiche für ein Benutzerkonto zu bearbeiten, aber es scheint kein Tool zu geben, das sie lediglich auflisten kann. Ist dort eines?

Zumindest auf meiner Ubuntu 14.04 Box getentscheint der Umgang mit diesen Informationen von /etc/subuidund nicht vorbereitet zu sein /etc/subgid.

Derzeit verwende ich ein kleines Shell-Skript, das awkfür diesen Zweck verwendet wird.


Hier ist ein Auszug aus usermod(8):

-v, --add-sub-uids FIRST-LAST
    Add a range of subordinate uids to the users account.
[...]
-V, --del-sub-uids FIRST-LAST
    Remove a range of subordinate uids from the users account.
[...]
-w, --add-sub-gids FIRST-LAST
    Add a range of subordinate gids to the users account.
[...]
-W, --del-sub-gids FIRST-LAST
    Remove a range of subordinate gids from the users account.
[...]
0xC0000022L
quelle
3
Die Tool-Unterstützung für Namespaces bleibt hinter der Kernel-Unterstützung zurück, daher würde es mich nicht überraschen, wenn die Antwort lautete: "Diese Tools gibt es noch nicht" oder zumindest "Diese Tools haben es noch nicht in die meisten Distributionen geschafft".
Gilles 'SO- hör auf böse zu sein'

Antworten:

1

Vorerst ist hier das Shell-Skript, das ich verwendet habe.

#!/bin/bash
SUBUID=/etc/subuid
SUBGID=/etc/subgid
for i in $SUBUID $SUBGID; do [[ -f "$i" ]] || { echo "ERROR: $i does not exist, but is required."; exit 1; }; done
[[ -n "$1" ]] && USERS=$1 || USERS=$(awk -F : '{x=x " " $1} END{print x}' $SUBUID)
for i in $USERS; do
        awk -F : "\$1 ~ /$i/ {printf(\"%-16s sub-UIDs: %6d..%6d (%6d)\", \$1 \",\", \$2, \$2+\$3, \$3)}" $SUBUID
        awk -F : "\$1 ~ /$i/ {printf(\", sub-GIDs: %6d..%6d (%6d)\", \$2, \$2+\$3, \$3)}" $SUBGID
        echo ""
done

Syntax:

showsubids [username]

Wenn kein Benutzername angegeben wird, werden alle aufgelistet. Wenn ein Benutzername angegeben wird, werden nur die Einträge dafür angezeigt.

Fehlerbehandlung ist suboptimal, aber wenn es jemandem hilft ...

0xC0000022L
quelle