Назад | Перейти на главную страницу

как определить значения SYS_UID_MIN, SYS_UID_MAX (и т. д.) из скрипта?

Я хочу запросить значения SYS_UID_MIN, SYS_UID_MAX, SYS_GID_MIN, SYS_GID_MAX из сценария оболочки.

Эти значения закомментированы в /etc/login.defs. Надеюсь, это отражает значения по умолчанию, но это не обязательно.

Каким-то образом программы useradd и groupadd могут определять эти значения, поэтому это должно быть возможно. (Я полагаю, можно было бы посмотреть их источник! :))

Страница руководства для 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).

Решение на чистом 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}";