%20para%20enumerar%20los%20valores%20de%20subuid%20y%20subgid%20asignados%20para%20los%20usuarios%3F.png)
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 getent
no parece estar preparada para manejar esa información desde /etc/subuid
y /etc/subgid
.
Actualmente estoy usando un pequeño script de shell, que lo uso awk
para 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...