воскресенье, 2 октября 2011 г.

Как переименовать основного пользователя Ubuntu

Переименовать пользователя в Linux достаточно простая задача. Основная идея заключается в том, что в самой системе используется соответствующий пользователю UID - уникальный идентификатор пользователя. Единственное место, в идеале, где указано текущее имя пользователя - это файл /etc/passwd. Можно конечно заняться и напрямую редактированием файла, но гораздо проще воспользоваться стандартными системными утилитами usermod и groupmod. Единственная проблема заключается в том, что если пользователь основной и через него вы пытаетесь получить права пользователя root в системе, да и вообще если есть хотя бы один запущенный от имени основного пользователя процесс, то вы получите сообщение user_name is corrently logged in.

Поэтому добавим в систему нового пользователя:

#adduser testuser

Замечание: в случае когда когда требуются права пользователя root, в начале строки указан #, если обычного пользователя %. Для получения прав пользователя root в Ubuntu достаточно добавить sudo перед командой или выполнить:

%sudo -i

Необходимо будет ввести пароль пользователя, на запросы о полном имени и прочую информацию GECOS можно не заполнять.

Далее необходимо дать новому пользователю дополнительные разрешения:

#visudo

В открывшимся окне текстового редактора ввести строку:

testuser ALL=(ALL) ALL

Ctrl-X, затем исправить имя файла на /etc/sudoers и подтвердить перезапись файла Y.

Завершаем сеан текущего пользователя, лучше всего перезагрузиться. Послк, в GDM в окне ввода имени пользователя и пароля нажать Alt-Ctrl-F1. В появившейся текстовой консоли вводим имя пользователя testuser и пароль. Затем для того, чтобы получить права пользователя root:

sudo -i

и вводим пароль пользователя testuser.

Так как в Ubuntu по умолчанию не установлены пакеты с поддержкой кириллицы в консоли, то необходимо:

%export LANG=en

Для того, чтобы можно было прочитать вывод после ввода команд и сообщения о ошибках. Далее вводим:

#usermod -l NEWLOGIN OLDLOGIN

Поменяем имя пользователя. NEWLOGIN, OLDLOGIN - новое и старое имя основного пользователя, соответственно.

Изменим имя первичной группы пользователя:

#groupmod -n NEWGROUPNAME OLDGROUPNAME

Имя OLDGROUPNAME по умолчанию совпадает с именем пользователя, NEWGROUPNAME тоже что и NEWLOGIN

Затем перенесем содержание директории пользователя /home/OLDLOGIN в новую директорию /home/NEWLOGIN:

#usermod -md /home/NEWLOGIN NEWLOGIN

Исправим данный GECOS нового имени пользователя, в большинстве случаев подойдет команда:


#usermod -c NEWLOGIN,,, NEWLOGIN

На данный момент GDM использует старые данные GECOS, поэтому переключаться на него по Alt-Ctrl-F8 бесполезно, только ради интереса. Перезапуск X по Alt-Ctrl-Backspace в Ubuntu по умолчанию не доступно, поэтому переключаемся обратно на консоль Alt-Ctrl-F1 и даем команду (хотя конечно можно обойтись и без перезагрузки всей системы и перезапустить соответствующую службу):

#shutdown -r now

После перезагрузки в GDM будет доступен логин под новым именем учетной записи. Единственной сложность может возникнуть если в файле /etc/fstab монтировались какие-либо разделы с использованием путей /home/OLDLOGIN/*, для решения проблемы достаточно будет их исправить.

6 комментариев:

  1. Затем перенесем содержание директории пользователя /home/OLDLOGIN в новую директорию /home/NEWLOGIN:

    #usermod -md /home/NEWLOGIN NEWLOGIN

    Исправим данный GECOS нового имени пользователя, в большинстве случаев подойдет команда:


    #usermod -c NEWLOGIN,,,, NEWLOGIN


    этот момент не совсем понятен..можно ли подробнее? нет ли тут опечатки в NEWLOGIN?

    ОтветитьУдалить
    Ответы
    1. Действительно опечатка. Надо три запятых после NEWLOGIN:

      #usermod -c NEWLOGIN,,, NEWLOGIN

      Формат GECOS следующий:

      {Имя пользователя},{Адрес},{Рабочий тел},{Домашний тел}

      Последние три поля можно опустить, поэтому:

      {Имя пользователя},,,

      Подробней про формат поля GECOS https://ru.wikipedia.org/wiki//etc/passwd#GECOS

      Удалить
    2. Почему не исправил в основной статье?

      Удалить
    3. Виноват, точно не исправил :) Теперь вроде исправлено. Рад что статья интересна до сих пор. По мерках IT прошла целая эпоха. Я рад что консоль и Linux это разумное, доброе и вечное

      Удалить
    4. 2021-й, а статья до сих пор актуальна)))

      Удалить
    5. Прикол)) 10 лет прошло. Надо что-нибудь про Lisp, Emacs или Vim написать, пройдет 50 лет и я успею посадить дерево, построить дом и вырастить дерево))

      Удалить