Вопрос или проблема
Если у пользователя есть UID, но нет имени, то есть:
$ whoami
whoami: не удается найти имя для идентификатора пользователя 1001
$ id
uid=1001 gid=0(root) группы=0(root)
Можно ли изменить UID, оставив имя пользователя неопределенным?
Системная информация:
$ cat /proc/version
Версия Linux 4.15.0-88-generic (buildd@lgw01-amd64-036) (версия gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)) #88~16.04.1-Ubuntu SMP Ср Фев 12 04:19:15 UTC 2020
Можно вручную изменить как идентификатор пользователя, так и имя пользователя (вместе с другими атрибутами пользователя), используя vipw. Это откроет редактор файла паролей.
После запуска vipw
вам следует запустить vipw -s
и внести эквивалентные изменения в файл shadow.
Эквивалентная утилита для редактирования групп — это vigr.
Если у пользователя, чьи данные вы изменяете, есть какие-либо файлы, вам, вероятно, придется использовать chown
для изменения владельца на новый идентификатор пользователя. (Вы можете использовать имя пользователя в вызове chown
, но право собственности определяется на основе идентификатора пользователя, а не имени пользователя.)
Ответ или решение
Изменение UID пользователя без имени в Linux
При работе с операционными системами на базе Linux возникает необходимость в управлении идентификаторами пользователей (UID). В ряде случаев пользователь может иметь UID, но при этом не иметь привязанного имени. Это может вызвать сомнения относительно возможностей управления таким пользователем. В данной статье мы рассмотрим, можно ли изменить UID пользователя, оставив имя пустым, а также методы, которые помогут выполнить эту задачу.
Понимание проблемы
Когда вы выполняете команды, такие как whoami
и id
, для пользователя с UID, но без имени, вы можете увидеть следующее:
$ whoami
whoami: cannot find name for user ID 1001
$ id
uid=1001 gid=0(root) groups=0(root)
В данном случае, UID равен 1001, и, хотя пользователь связан с группой root, отсутствует связанное имя. Это может быть полезным для системного администратора, который хочет сохранить учетную запись пользователя, но по каким-либо причинам не желает привязывать к ней имя.
Метод изменения UID с использованием vipw
Для изменения UID используйте утилиту vipw
, которая позволяет безопасно редактировать файл паролей (/etc/passwd). Процесс выглядит следующим образом:
-
Создайте резервную копию файлов: перед внесением изменений всегда полезно создать резервную копию файлов
passwd
иshadow
.cp /etc/passwd /etc/passwd.bak cp /etc/shadow /etc/shadow.bak
-
Запустите утилиту
vipw
:sudo vipw
Это откроет файл
/etc/passwd
в вашем текстовом редакторе. -
Поиск UID: Найдите строку, связанную с UID 1001. Она будет выглядеть приблизительно так:
1001:x:1001:0:,,,:/home/user:/bin/bash
Измените 1001 на желаемый новый UID, например на 1002:
1002:x:1002:0:,,,:/home/user:/bin/bash
-
Сохраните изменения и выйдите из редактора.
-
Обновите файл теней: Запустите
vipw -s
, чтобы внести аналогичные изменения в файл/etc/shadow
. -
Изменение владельца файлов: Если пользователь с UID 1001 владел файлами на системе, вам нужно будет изменить владельца этих файлов на новый UID с помощью команды
chown
:sudo chown -R 1002:0 /путь/к/файлам
Заключение
Изменение UID пользователя без имени на Linux возможно, как показано выше. Использование vipw
для редактирования файлов системы обеспечивает безопасность и предотвращает ошибки. Хотя имя пользователя не обязательно, его отсутствие может затруднить управление пользователем в дальнейшем. Рекомендуется документировать такие изменения, чтобы сохранить точную информацию о конфигурации системы.
Помните, что редактирование системных файлов может повлечь за собой серьезные последствия, поэтому всегда следуйте хорошей практике управления системами: создавайте резервные копии и тестируйте изменения в контролируемой среде.