Что такое Ubuntu для автоматической генерации UID?
Меня интересует случай, когда генерируется новый пользователь, а UID явно не указывается, а Ubuntu автоматически назначает UID. Я знаю, что по умолчанию Ubuntu сгенерирует UID выше 1000, но я хочу знать все о политике генерации UID Ubuntu.
Хороший ответ на этот вопрос прояснит следующие моменты
- Что если следующие два UID уже используются: 1001, 2001 - будет ли следующий автоматически сгенерированный UID 1002 или 2002?
- Есть ли максимальный UID? Что делает Ubuntu, если какой-то учетной записи уже был назначен максимальный UID (но в противном случае существуют бесплатные UID)?
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 между 1000 и 29999 или не работает.
Точный ответ: 1002, он выберет бесплатный.
Там есть максимальный UID, 4294967295
, так как UID
это 32-битные поля, но adduser
использует нижний предел.
Тем не менее, есть также /usr/sbin/useradd
BEWARE 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
,