%20para%20listar%20valores%20subuid%20e%20subgid%20atribu%C3%ADdos%20aos%20usu%C3%A1rios%3F.png)
usermod -v
( --add-sub-uids
) e usermod -w
( --add-sub-gids
) podem ser usados para manipular os intervalos subuid e subgid de uma conta de usuário, mas parece não haver nenhuma ferramenta que possa simplesmente listá-los. Existe algum?
Pelo menos na minha caixa do Ubuntu 14.04 getent
não parece estar preparado para lidar com essas informações de /etc/subuid
e /etc/subgid
.
Atualmente estou usando um pequeno script de shell, usando awk
para esse propósito.
Aqui está um trecho 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.
[...]
Responder1
Por enquanto, aqui está o script de shell que estou 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
Sintaxe:
showsubids [username]
Se nenhum nome de usuário for fornecido, todos serão listados. Se um nome de usuário for fornecido, apenas as entradas para ele serão mostradas.
O tratamento de erros não é o ideal, mas se ajudar alguém...