¿Existe una herramienta (!) para enumerar los valores de subuid y subgid asignados para los usuarios?

¿Existe una herramienta (!) para enumerar los valores de subuid y subgid asignados para los usuarios?

usermod -v( --add-sub-uids) y usermod -w( --add-sub-gids) se pueden utilizar para manipular los rangos subuid y subgid de una cuenta de usuario, pero no parece haber ninguna herramienta que pueda simplemente enumerarlos. ¿Hay uno?

Al menos en mi caja Ubuntu 14.04 getentno parece estar preparada para manejar esa información desde /etc/subuidy /etc/subgid.

Actualmente estoy usando un pequeño script de shell, que lo uso awkpara este propósito.


Aquí hay un extracto de 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.
[...]

Respuesta1

Por el momento, aquí está el script de shell que he estado usando.

#!/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

Sintaxis:

showsubids [username]

Si no se proporciona ningún nombre de usuario, se enumerarán todos. Si se proporciona un nombre de usuario, solo se mostrarán las entradas correspondientes.

El manejo de errores no es óptimo, pero si ayuda a alguien...

información relacionada