Як я можу змінити власний ідентифікатор користувача?


49

У моїй системі є лише один користувач. Як я можу змінити його ідентифікатор користувача з 1000 за замовчуванням?

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


5
З цікавості, які причини зміни ідентифікатора користувача?
Олів'є Лалонде

14
Якщо ви часто обмінюєтесь даними з іншими системами через NFS або просто якийсь метод копіювання, який зберігає UID, це допоможе, якщо ви використовуєте той самий UID для того самого імені користувача в усіх системах.
Жоао Пінто

Жоао це правильно зрозумів. Зокрема, я сподіваюся узгодити UID з користувачами в Mac OS X, щоб спільна файлова система несла передбачувані права доступу до операційних систем.
ændrük

1
Поточна версія Nethack (3.6.0) зберігає ігри, включаючи поточний uid у назві файлу. Якщо ви хочете синхронізувати гру збереження між машинами, вам потрібно зіставити uids. (використання символьної посилання не є практичним)
Джонатан Хартлі,

Відповіді:


27

Проблема полягає в тому, що, як ви вже згадували, ви не можете змінити UID користувача під час входу в сеанс. Щоб продовжити, потрібно використовувати інший обліковий запис користувача.

Але вам не потрібно створювати новий обліковий запис користувача, заохочувати його до адміністратора, виходити з системи, входити в новий обліковий запис адміністратора, змінювати UID вашого основного облікового запису, виходити з системи, увійти в основний обліковий запис, а потім видалити нового користувача адміністратора. просто змініть свій UID. ;)

Ви можете завантажитися в режим відновлення (це варіант, який з’являється при запуску комп'ютера або утримуйте зсув відразу після завершення повідомлень BIOS; Використовуйте ESCна Dell-машинах, що працюють з OEM-Ubuntu). Це ввійде в кореневий сеанс. Увійшовши в корінь, а не ваш звичайний обліковий запис користувача , ви зможете змінити свій 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 '{}' \+перезавантаження призводить до входу в GUI, призначений лише для сеансів.
Кей

Можливо, приховані файли вдома не змінені належним чином? Чи використовуєте ви шифрування для свого будинку?
математика

Ви можете перевірити свої файли /etc/login.defsта /etc/adduser.confфайли, якщо ви змінили свій uid поза політикою, передбаченою в цих файлах конфігурації. Користувачі поза межами політики не відображаються в циклі входу, але ви можете змінити політику. Дивіться цю відповідь
K Markey

usermod: user user_name is currently used by process 1118 @Alexandre P.
alper

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. Увімкніть кореневий рахунок :

    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. Вимкнення кореневого облікового запису :

    sudo passwd -dl root
    

Увімкнення кореневого облікового запису не повинно бути необхідним; просто використовуйте режим відновлення .
ændrük

2
Це має бути швидше, ніж перезавантаження, саме тому я і розмістив його.
l0b0

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

Це спрацювало як шарм для мене. Тільки довелося змінити uid, хоча.
chmike

включення кореневого облікового запису звучить простіше (і менш страшно), ніж використання режиму відновлення.
Джонатан Хартлі

7

Якщо ви перейдете до консолі та введіть: usermod --helpви отримаєте один із параметрів:

-u, --uid UID новий UID для облікового запису користувача

тому якщо ви хочете змінити UID для користувача cyrex, виконайте такі дії:

usermod -u 1000 cyrex

це змінило би uid для cyrex від того, яке значення воно мало раніше, ніж 1000

Якщо ви хочете зробити це візуально, зробіть це:

Йти до

СИСТЕМА -> АДМІНІСТРАЦІЯ -> ПОТРІБНИКИ І ГРУПИ

Виберіть себе зі списку та натисніть НАДАЛЬНІ НАСТРОЙКИ

UID знаходиться в кінці цього вікна.


1
Я спробував запропонований вами графічний метод, але є повідомлення, що не можна змінювати ідентифікатор користувача, поки користувач увійшов у систему. Ви протестували цей метод?
ændrük

2
Добре, що правда. Я спробував з іншим рахунком. Вам потрібно увійти через root або будь-який інший обліковий запис адміністратора. Потім виконайте графічний спосіб. Вибачте за це.
Луїс Альварадо

2
  • Goto System >> Адміністрація >> Користувачі та групи

alt текст

  • Клацніть Розширені налаштування та перейдіть на вкладку « Додаткові » там, внизу ви побачите ідентифікатор користувача.
  • Змініть його і натисніть ОК.
    alt текст

1
Чи слід просто ігнорувати попередження на екрані екрана: "Ви не можете змінити ідентифікатор користувача, поки користувач увійшов у систему."
ændrük

Вам потрібно змінити його з іншого облікового запису користувача, щоб позбутися цього попередження.
karthick87

7
Моє запитання: "Як я можу змінити власний ідентифікатор користувача?". Якщо ви маєте намір відповісти на те, що я повинен створити нового користувача просто для редагування цього значення, ви повинні відредагувати свою відповідь, щоб це вказати.
ændrük

0

За допомогою KDE: у меню Змінити розширені налаштування користувача:

Перехід від іншого користувача не працює для 1000, що є користувачем за замовчуванням.

ви повинні це зробити вручну - мій досвід


0

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

sudo passwd root

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

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.