В моей системе есть только один пользователь. Как я могу изменить его идентификатор пользователя с значения по умолчанию 1000?
Если есть дополнительные шаги, которые потребуются для того, чтобы избежать нарушения процесса входа в систему при обычной установке на рабочем столе, они должны быть включены как часть ответа.
Вы можете изменить его в /etc/passwd, /etc/group и /etc/shadow или вы используете одну из предпочтительных возможностей, описанных выше. Но - самое главное - вы должны изменить владельца всех файлов, принадлежащих пользователю.
Например, если старый идентификатор пользователя равен 1000, а новый - 5000:
find / -uid 1000 -exec chown -h 5000 {} +
И то же самое для идентификатора группы (если вы также измените его).
Проблема в том, что, как вы уже упоминали, вы не можете изменить UID своего пользователя, когда он входит в сеанс. Для продолжения вам необходимо использовать другую учетную запись пользователя.
Но вам не нужно создавать новую учетную запись пользователя, повышать ее до администратора, выходить из системы, входить в новую учетную запись администратора, изменять UID своей основной учетной записи, выходить из системы, входить в свою основную учетную запись, а затем удалять нового пользователя администратора, просто измените свой UID. ;)
Вы можете загрузиться в режим восстановления (это опция, которая появляется при запуске компьютера или удержании клавиши shift сразу после завершения сообщений BIOS; Используйте ESC на компьютерах Dell под управлением OEM-Ubuntu). Это позволит вам войти в корневой сеанс. Вход в систему root и не ваша обычная учетная запись пользователя, вы сможете изменить свой UID.
Поскольку режим восстановления работает только в интерфейсе командной строки, после входа в корневой сеанс вам придется:
Complete solution based on @AlexandreP. and @ddeimeke + official documentation. No reboot necessary.
Политика Debian/Ubuntu заключается в том, что если есть пользователь jim с идентификатором пользователя 1001, есть также группа jim с идентификатором группы 1001. Это решение также обновляет эти идентификаторы групп.
Если пользователь вошел в систему, затем выйдите из системы (также на виртуальных терминалах).
Перейти к VT1: Ctrl-Alt-F1
Войдите в систему как root и запустите это с указанным именем пользователя и старым / новым UID:
# put the information we need in variablesusername=...old_uid=`id -u $username` # looks up current (old) uidnew_uid=...# update the user ID and group ID for $usernameusermod -u $new_uid $usernamegroupmod -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 IDschown -Rhc --from=:$old_uid :$new_uid / # change the group IDs
Сначала вам нужно войти в систему как root, по крайней мере, на некоторое время, поэтому давайте сделаем это возможным:
sudo passwd root
Перезагрузитесь, ctrl + alt + f1, чтобы переключиться на консоль, войдите в систему как root, выполните следующие действия (о владельце в домашнем каталоге позаботятся автоматически):
Я последовал за ним ддеймеке инструкции со следующими изменениями:
Я не вышел из системы, а вместо этого сделал sudo su
Я не прикасался /etc/shadow
Я видел, как в других ответах упоминалось, что вы должны либо загрузиться в recovery, либо войти в систему как root. У меня была свежая установка Ubuntu 14, поэтому я был готов проверить, будет ли она работать без входа в систему как root. Кроме того, я делал это на экземпляре EC2 по SSH.
Если вы обычно обмениваетесь данными с другими системами через NFS или просто каким-либо методом копирования, который сохраняет UID, это поможет, если вы используете один и тот же UID для одного и того же имени пользователя в разных системах.
Жуан все понял правильно. В частности, я надеюсь сопоставить UID с пользователями в Mac OS X, чтобы общая файловая система имела требуемые разрешения в разных операционных системах.
Текущая версия Nethack (3.6.0) сохраняет игры, включая текущий uid в имени файла. Если вы хотите синхронизировать сохраненную игру между машинами, вам необходимо сопоставить uid. (использование символической ссылки непрактично)