是否有一個工具(!)可以列出為使用者指派的 subuid 和 subgid 值?

是否有一個工具(!)可以列出為使用者指派的 subuid 和 subgid 值?

usermod -v( --add-sub-uids) 和usermod -w( --add-sub-gids) 可用於操作使用者帳戶的 subuid 和 subgid 範圍,但似乎沒有工具可以只列出它們。有嗎?

至少在我的 Ubuntu 14.04 機器上似乎getent沒有準備好處理來自/etc/subuid和 的資訊/etc/subgid

目前我正在使用一個小 shell 腳本,用於awk此目的。


以下是摘錄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.
[...]

答案1

目前,這是我一直在使用的 shell 腳本。

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

句法:

showsubids [username]

如果未給予使用者名,則將列出所有使用者名稱。如果給出了使用者名,則僅顯示該使用者名稱的條目。

錯誤處理不是最理想的,但如果它對某人有幫助...

相關內容