我希望从 shell 脚本查询 SYS_UID_MIN、SYS_UID_MAX、SYS_GID_MIN、SYS_GID_MAX 的值。
这些值在 /etc/login.defs 中被注释掉了。希望这反映了默认值,但这并不确定。
程序 useradd 和 groupadd 可以通过某种方式确定这些值,因此这一定是可能的。(我想可以看看它们的源代码!:))
答案1
手册页login.defs
记录了这些变量的默认值。我查看过的 Ubuntu、Debian 和 CentOS 服务器上的默认值似乎一致。
The default value for SYS_UID_MIN (resp. SYS_UID_MAX) is 101 (resp. UID_MIN-1).
...
The default value for UID_MIN (resp. UID_MAX) is 1000 (resp. 60000).
答案2
纯 Bash 解决方案
UID_MIN="$(read -d '' <'/etc/login.defs'; [[ "${REPLY}" =~ [^#[^:space:]]*SYS_UID_MIN[[:space:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}")";
# useradd's default is 1000 if no UID_MIN in /etc/login.defs
UID_MIN="${UID_MIN:=1000}";