2009-11-04

Переименование пользователя в Linux.

Необходимо переименовать пользователя и его домашний каталог.
Собственно переименовать пользователя легко (используется дистрибутив Debian). От имени root выполняем команды:
# groupmod --new-name newuser olduser # usermod --login newuser --home /home/newhome olduser
Перемещение домашнего каталога командой mv не ограничится:
# mv /home/oldhome /home/newhome
Множество программ, используемых пользователем, использует файлы настроек (dot-файлы). Их придется править вручную ((. В каждом случае решение о правке приходится принимать человеку на основании знания форматов конфигурационных файлов.

Находим все вхождения слова olduser в конфигурационных файлах:

# find /home/newhome -maxdepth 2 -type f | xargs grep -Hn
Обычно пользовательские конфигурационные файлы находятся в корне домашнего каталога пользователя или в соответствующем подкаталоге. Потому глубина поиска ограничена 2.

Можно было использовать следующий способ поиска вхождений:

# grep -Hn user .* .*/*
правда некоторые программы отклоняются от стандартов именования конфигурационных файлов (или каталогов с конфигурационными файлами) - их названия не начинается с точки (dot).

Я для правок использовал команду Emacs grep-find, это позволяло мне быстро переходить в место вхождения заменяемого слова:

C-x d C-a C-k /home/newuser RET С-x grep-find grep -Hn user .* .*/* RET C-x ` =edit= C-x ` =edit= C-x ` =edit= C-x ` ....
Приятного Вам переименовывания пользователей!