Existe-t-il un outil (!) Pour répertorier les valeurs de sous-uid et de sous-gid attribuées aux utilisateurs?

13

usermod -v( --add-sub-uids) et usermod -w( --add-sub-gids) peuvent être utilisés pour manipuler les plages de sous-uid et de sous-gid pour un compte d'utilisateur, mais il ne semble y avoir aucun outil qui puisse simplement les lister. Est-ce qu'il y a un?

Au moins sur ma boîte Ubuntu 14.04 getentne semble pas prête à gérer ces informations à partir de /etc/subuidet /etc/subgid.

Actuellement, j'utilise un petit script shell, à awkcet effet.


Voici un extrait 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.
[...]
0xC0000022L
la source
3
La prise en charge des outils pour les espaces de noms est à la traîne par rapport à la prise en charge du noyau, donc cela ne me surprendrait pas si la réponse était «ces outils n'existent pas encore» ou du moins «ces outils n'ont pas encore fait leur apparition dans la plupart des distributions».
Gilles 'SO- arrête d'être méchant'

Réponses:

1

Pour l'instant, voici le script shell que j'utilise.

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

Syntaxe:

showsubids [username]

Si aucun nom d'utilisateur n'est donné, tous seront répertoriés. Si un nom d'utilisateur est donné, seules les entrées pour celui-ci seront affichées.

La gestion des erreurs n'est pas optimale, mais si cela aide quelqu'un ...

0xC0000022L
la source