Пользователь, созданный с использованием разных UID и GID

Я создаю нового пользователя в своей системе, позвонив:

sudo useradd -m -G nas -s /bin/bash alf 

который предположительно должен создать нового пользователя с тем же UID и GID. Однако файл passwd добавляется в строку:

 alf:x:1004:1007::/home/alf:/bin/bash 

Который имеет 1004 для UID и 1007 для GID. Другие пользователи, которые я создал, имеют одинаковые UID и GID, так почему это происходит?

useradd использует только тот же UID и GID, когда:

  • Это не вызовет конфликта; или

  • Вы вынуждаете его с флагами -u и -g

Он будет пропускать уже используемые идентификаторы. Таким образом, я бы предположил, что вы добавили других пользователей и / или группы, так как вы создали те, которые имеют соответствующие пары UID / GID .¹

Чтобы вернуть идентификаторы в шаге блокировки, вы можете создать следующий с флагами -g и -u чтобы придать ему идентификаторы, равные одному за прошлый наивысший идентификатор UID и GID. Последующие вызовы useradd не будут заполнять пробелы. Они только начнут пронумеровать прошлую новую отметку с высоким уровнем воды.

Нет ничего плохого в том, что они имеют десинхронизированные значения UID и GID. В этом состоянии система будет работать отлично. Унифицированные стили старого стиля обычно не использовали схему для каждого пользователя, так что идентификаторы никогда не синхронизировались с самого начала.


Примечания:

  1. Вы, вероятно, не делали этого в интерактивном режиме. Многие пакеты добавляют группы, а иногда и пользователей, чтобы ограничить доступ к файлам и другим средствам, принадлежащим этому пакету. Обычно они делают это с OS-зарезервированными идентификаторами группы ниже 1000, но не всегда. Когда они добавляют группу, но не пользователь, она десинхронизирует два набора значений идентификатора.