usermod -v
Mit ( --add-sub-uids
) und usermod -w
( --add-sub-gids
) können die Subuid- und Subgid-Bereiche für ein Benutzerkonto bearbeitet werden, aber es scheint kein Tool zu geben, das sie einfach auflisten kann. Gibt es eines?
Zumindest meine Ubuntu 14.04-Box getent
scheint nicht darauf vorbereitet zu sein, diese Informationen von /etc/subuid
und zu verarbeiten /etc/subgid
.
Derzeit verwende ich awk
für diesen Zweck ein kleines Shell-Skript.
Hier 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.
[...]
Antwort1
Hier ist vorerst 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 ist, werden alle aufgelistet. Wenn ein Benutzername angegeben ist, werden nur die Einträge dazu angezeigt.
Die Fehlerbehandlung ist nicht optimal, aber wenn es jemandem hilft ...