Каково автоматическое поведение поколения UID Ubuntu?

Я интересуюсь случаем, где новый пользователь сгенерирован, и никакой UID не явно задан, оставляя Ubuntu для автоматического присвоения UID. Я знаю, что Ubuntu по умолчанию генерирует UID выше 1000, но я хочу знать все о политике поколения UID человечности.

Хороший ответ на этот вопрос разрешит следующие моменты

  • Что, если следующие два UIDs уже используются: 1001, 2001 - следующий автоматически сгенерированный UID будет 1002 или 2002?
  • Существует ли максимальный UID? Что делает Ubuntu, если некоторой учетной записи уже присвоили максимальный UID (но существуют в других отношениях свободные UIDs)?
5
задан 10 August 2015 в 16:18

1 ответ

Посмотрите /etc/adduser.conf:

# FIRST_SYSTEM_[GU]ID to LAST_SYSTEM_[GU]ID inclusive is the range for UIDs
# for dynamically allocated administrative and system accounts/groups.
# Please note that system software, such as the users allocated by the base-passwd
# package, may assume that UIDs less than 100 are unallocated.
FIRST_SYSTEM_UID=100
LAST_SYSTEM_UID=999

FIRST_SYSTEM_GID=100
LAST_SYSTEM_GID=999

# FIRST_[GU]ID to LAST_[GU]ID inclusive is the range of UIDs of dynamically
# allocated user accounts/groups.
FIRST_UID=1000
LAST_UID=29999

FIRST_GID=1000
LAST_GID=29999

И, читая сценарий Perl в $(type -p adduser) или /usr/sbin/adduser, мы находим эту функцию:

 sub first_avail_uid {
    my ($min, $max) = @_;
    printf (gtx("Selecting UID from range %d to %d ...\n"),$min,$max) if ($verbose > 1);

    my $t = $min;
    while ($t <= $max) {
       return $t if (!defined(getpwuid($t)));
       $t++;
    }
    return -1; # nothing available
}

То, что это означает: adduser выбирает первый свободный UID между 1 000 и 29999, или сбои.

Точный ответ: 1002, Это выберет свободный.

СУЩЕСТВУЕТ максимальный UID, 4294967295, потому что UIDs являются 32 битовыми полями, но adduser использует нижний предел.

Однако существует также /usr/sbin/useradd Остерегайтесь adduser и useradd легко ошибочный/вводят с опечаткой друг для друга.

man useradd говорит мне:

DESCRIPTION
   useradd is a low level utility for adding users. On Debian,  
    administrators should usually use adduser(8) instead.

...  

   -u, --uid UID
       The numerical value of the user's ID. This value must be unique,
       unless the -o option is used. The value must be non-negative. The
       default is to use the smallest ID value greater than or equal to
       UID_MIN and greater than every other user.

       See also the -r option and the UID_MAX description.

...  

CONFIGURATION
   The following configuration variables in /etc/login.defs change the
   behavior of this tool:

...  

   SYS_UID_MAX (number), SYS_UID_MIN (number)
       Range of user IDs used for the creation of system users by useradd
       or newusers.

       The default value for SYS_UID_MIN (resp.  SYS_UID_MAX) is 101
       (resp.  UID_MIN-1).

   UID_MAX (number), UID_MIN (number)
       Range of user IDs used for the creation of regular users by useradd
       or newusers.

       The default value for UID_MIN (resp.  UID_MAX) is 1000 (resp.
       60000).

Одна причина, что я использую adduser, вместо useradd --encrypt-home опция к adduser. Любой, однако, мог быть заменен путем редактирования набора файлов, копирования других, создания каталогов, и т.д. использования любого UID, который каждый выбирает (Да ведь в былые времена, я...). Нет ничего волшебного о adduser или useradd.

6
ответ дан 23 November 2019 в 09:13

Другие вопросы по тегам:

Похожие вопросы: