Как я могу изменить свой собственный идентификатор пользователя?


49

В моей системе только один пользователь. Как я могу изменить его идентификатор пользователя по умолчанию 1000?

Если необходимы дополнительные шаги, чтобы избежать прерывания процесса входа в систему при обычной установке на рабочем столе, они должны быть включены в ответ.


5
Из любопытства, каковы причины изменения идентификатора пользователя?
Оливье Лалонд

14
Если вы обычно обмениваетесь данными с другими системами через NFS или просто с помощью какого-либо метода копирования, который сохраняет UID, это поможет, если вы используете один и тот же UID для одного и того же имени пользователя в разных системах.
Жоау Пинту

Жоао понял это правильно. В частности, я надеюсь сопоставить UID с пользователями в Mac OS X, чтобы общая файловая система несла предполагаемые разрешения для всех операционных систем.
rndrük

1
Текущая версия Nethack (3.6.0) сохраняет игры, включая текущий uid в имени файла. Если вы хотите синхронизировать сохраненную игру между машинами, вам нужно сопоставить идентификаторы. (использование символической ссылки не практично)
Джонатан Хартли,

Ответы:


27

Проблема в том, что, как вы упомянули, вы не можете изменить UID своего пользователя, когда он вошел в сеанс. Вы должны использовать другую учетную запись пользователя, чтобы продолжить.

Но вам не нужно создавать новую учетную запись пользователя, повышать ее до уровня администратора, выходить из системы, входить в новую учетную запись администратора, изменять UID вашей основной учетной записи, выходить из системы, входить в свою основную учетную запись, а затем удалять нового пользователя-администратора. просто измените свой UID. ;)

Вы можете загрузиться в режиме восстановления (это опция, которая появляется при запуске компьютера или удерживает клавишу shift сразу после завершения сообщений BIOS; используйте ESCна компьютерах Dell с OEM-Ubuntu). Это позволит вам войти в корневой сеанс. Будучи авторизованным пользователем root, а не вашей обычной учетной записью , вы сможете изменить свой UID.

Поскольку режим восстановления работает только в интерфейсе командной строки, после входа в корневую сессию вам необходимо:

  1. Используйте инструкцию BubbaJ, чтобы перемонтировать корневую файловую систему в режиме чтения-записи : mount -o remount,rw /.

  2. Используйте команду Луиса Альварадо : usermod -u NEW_UID your_username.

  3. Следуйте инструкциям ddeimeke для обновления прав доступа к файлам.
  4. Затем перезагрузите компьютер ( reboot), чтобы вы могли загрузиться в обычном режиме.

1
Не работает для Ubuntu 14.04. После выполнения usermod -u NEW_UID your_usernameи find / -uid 1000 -exec chown -h 5000 '{}' \+перезагрузка приводит к входу в систему с графическим интерфейсом только для догадки.
Кей

Может быть, скрытые файлы в доме не изменены должным образом? Вы используете шифрование для своего дома?
математика

Вы можете проверить свои файлы /etc/login.defsи /etc/adduser.confфайлы, если вы изменили свой uid за пределами политик, предусмотренных в этих файлах конфигурации. Пользователи за пределами политики не отображаются в цикле входа в систему, но вы можете изменить политику. Смотрите этот ответ
K Markey

usermod: user user_name is currently used by process 1118 @ Александр П.
Альпер

54

Вы можете изменить его /etc/passwd, /etc/groupи /etc/shadowили использовать один из предпочтительных можности выше. Но - самое главное - вы должны изменить владельца всех файлов, принадлежащих пользователю.

Например, если старый идентификатор пользователя равен 1000, а новый - 5000:

find / -uid 1000 -exec chown -h 5000 {} +

И то же самое для идентификатора группы (если вы также измените его).

find / -gid 1000 -exec chgrp -h 5000 {} +

8
Это действительно важный момент. Многие вещи сломаются, если вы будете следовать методикам, приведенным в других ответах, не делая этого.
Poolie

4
Я только что узнал, что лучше использовать sudo find / -xdev -uid 1000 -exec chown 5000 '{}' \+, иначе можно включить смонтированные данные (в /mnt, что, возможно, нежелательно) и файлы, с которыми лучше не связываться в /procи /dev. Смотрите этот пост
Себастьян

2
Это не очень хорошая идея. Учитывая, что / home находится в другой файловой системе, вы даже не измените владельца своих файлов.
ddeimeke

В этом ответе вы должны изменить права доступа группы и uid перед редактированием файлов в / etc, верно?
MrDaniel

Неважно, что вы делаете в первую очередь.
ddeimeke

25

Комплексное решение на основе @AlexandreP. и @ddeimeke + официальная документация. Перезагрузка не требуется.

Политика Debian / Ubuntu такова, что если есть пользователь jimс идентификатором пользователя 1001, существует также группа jimс идентификатором группы 1001. Это решение также обновляет эти идентификаторы группы.

  1. Включить учетную запись root :

    sudo passwd root
    
  2. Если пользователь вошел в систему, то выйдите из системы (также на виртуальных терминалах)
  3. Перейти к VT1: Ctrl-Alt-F1
  4. Войдите в систему как пользователь root и запустите его, указав имя пользователя и старый / новый UID:

    # put the information we need in variables
    username=...
    old_uid=`id -u $username`  # looks up current (old) uid
    new_uid=...
    
    # update the user ID and group ID for $username
    usermod -u $new_uid $username
    groupmod -g $new_uid $username
    
    # update the file ownerships
    # NB: you cannot combine the next two chowns, or files where 
    # only the uid xor the gid matches won't be updated  
    chown -Rhc --from=$old_uid $new_uid /    # change the user IDs
    chown -Rhc --from=:$old_uid :$new_uid /  # change the group IDs
    
  5. Выйти
  6. Войти как $username
  7. Отключить учетную запись root :

    sudo passwd -dl root
    

Включение учетной записи root не требуется; просто используйте режим восстановления .
Ондрюк

2
Это должно быть быстрее, чем перезагрузка, вот почему я опубликовал это.
l0b0

3
В Ubuntu 14.04 и 14.10 вам также необходимо исправить расширенные разрешения ACL в / media, в противном случае автоматическое монтирование (в Nautilus / Nemo) прерывается при сохранении старого UID. sudo setfacl -m "u:<NEWUID>:r-x" /media/<USERNAME> sudo setfacl -x "u:<OLDUID>" /media/<USERNAME>
richud.com

Это сработало как обаяние для меня. Только пришлось изменить UID, хотя.
чмике

включение учетной записи root звучит для меня проще (и менее страшно), чем в режиме восстановления.
Джонатан Хартли

7

Если вы перейдете в консоль и наберете: usermod --helpвы получите один из параметров, говорящий:

-u, --uid UID новый UID для учетной записи пользователя

поэтому, если вы хотите изменить UID для пользователя cyrex, выполните:

usermod -u 1000 cyrex

что бы изменить UID для Cyrex с любого значения, которое он имел до 1000

Если вы хотите сделать это визуально, то сделайте это:

Перейти к

СИСТЕМА -> АДМИНИСТРАЦИЯ -> ПОЛЬЗОВАТЕЛИ И ГРУППЫ

Выберите себя из списка и нажмите на РАСШИРЕННЫЕ НАСТРОЙКИ

UID находится в конце этого окна.


1
Я попробовал графический метод, который вы предложили, но есть сообщение: «Вы не можете изменить ID пользователя, пока пользователь вошел в систему». Вы проверяли этот метод?
rndrük

2
Хе-хе, хорошо, что это правда. Я пытался с другой учетной записью. Вам необходимо войти через root или любую другую учетную запись администратора. Затем сделайте графический способ. Простите за это.
Луис Альварадо

2
  • Перейти в Система >> Администрирование >> Пользователи и группы

альтернативный текст

  • Нажмите Дополнительные параметры и Гото Advanced Tab там внизу вы увидите свой идентификатор пользователя.
  • Измените его и нажмите ОК.
    альтернативный текст

1
Должен ли я просто игнорировать предупреждение на скриншоте: «Вы не можете изменить идентификатор пользователя, когда пользователь вошел в систему»?
rndrük

Вы должны изменить его с другой учетной записи другого пользователя, чтобы избавиться от этого предупреждения.
karthick87

7
Мой вопрос «Как я могу изменить свой собственный идентификатор пользователя?». Если вы хотите, чтобы ваш ответ состоял в том, что я должен создать нового пользователя просто для редактирования этого значения, вам следует отредактировать свой ответ, чтобы указать это.
rndrük

0

С KDE: в меню «Изменить дополнительные настройки пользователя»:

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

Вы должны сделать это вручную - мой опыт


0

Сначала вам нужно войти в систему как root, хотя бы на некоторое время, поэтому давайте сделаем это возможным:

sudo passwd root

Перезагрузитесь, ctrl + alt + f1, чтобы переключиться на консоль, войдите в систему как root, сделайте следующее (о владении в home dir позаботится автоматически):

groupmod --gid NEWGID username
usermod  --uid NEWUID username 

Для ваших файлов в местах, отличных от вашего домашнего каталога, к этому:

sudo chown -R username:username /path/to/files

Удалите и заблокируйте пароль root, если хотите. (Склоняюсь к этому)

passwd -dl root

0

Я следовал инструкциям ddeimeke со следующими изменениями:

  1. Я не вышел и вместо этого сделал sudo su
  2. Я не трогал /etc/shadow

Я видел упоминание в других ответах, что вы должны либо загрузиться для восстановления, либо войти в систему как root. У меня была свежая установка Ubuntu 14, поэтому я хотел проверить, будет ли она работать без входа в систему как root. Также я делал это на экземпляре EC2 через SSH.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.