如何从脚本确定 SYS_UID_MIN、SYS_UID_MAX(等等)的值?

如何从脚本确定 SYS_UID_MIN、SYS_UID_MAX(等等)的值?

我希望从 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}";

相关内容