8.6. Изменение учётной записи пользователя

Проблема

Требуется внести изменения в существующую учётную запись — например, сменить имя пользователя или UID, обновить данные GECOS или домашний каталог.

Решение

Воспользуйтесь командами usermod и chfn.

Изменять можно любые атрибуты, включая имя пользователя и код UID. Чтобы сменить имя, сначала укажите новое имя, а затем старое:

# usermod -l aborg anitab

Следующая команда изменяет UID (в примере UID 1050 меняется на 1200) без изменения имени пользователя. Сначала указывается новый код UID, затем имя:

# usermod -u 1200 anitab

Принадлежность пользователя к группам не изменяется. Все файлы в домашнем каталоге пользователя автоматически обновляются новым кодом UID. Однако вам придётся вручную найти и изменить все файлы за пределами домашнего каталога (например, crontab, почтовые каталоги, временные файлы /tmp и файлы в общих каталогах).

Для поиска файлов можно воспользоваться командой find с указанием исходного UID, если вы хотите просмотреть список файлов перед внесением изменений:

# find / -uid 1050
/usr/src/include/lber.h
/usr/src/include/ldap.h
/usr/src/include/ldbm.h

Смена владельца файлов осуществляется командой chown:

# chown 1200 /usr/src/include/lber.h

Последовательная смена владельца для каждого файла — занятие довольно утомительное. Однако команды chown и find могут выполнить эту работу за вас:

# find / -uid 1050 -exec chown -v 1200 {} \;
changed owner of '/usr/src/include/lber.h' to 1200
changed owner of '/usr/src/include/ldap.h' to 1200
changed owner of '/usr/src/include/ldbm.h' to 1200

Следующая команда перемещает домашний каталог пользователя со всем содержимым. Если новый каталог не существует, он автоматически создаётся. Сначала указывается новый каталог, а затем имя пользователя. Обязательно используйте флаги -d и -m:

# usermod -d /server1/home/aborg/ -m aborg

Изменение данных GECOS:

# chfn aborg

Пользователь может передать при вызове chfn данные GECOS по своему усмотрению. Исключение составляют два поля: полное имя и «прочее». Содержимое этих полей может редактироваться только суперпользователем.

Комментарий

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

Если заменить ключ -exec на -ok, команда find будет запрашивать подтверждение каждого изменения:

# find / -uid 1050 -ok chown -v 1200 {} \;

Использование команды find с ключами -exec или -ok позволяет автоматизировать смену владельца файлов. Точка с запятой указывает, где завершается команда chown, а символ \ экранирует точку с запятой, чтобы она не была обработана командным интерпретатором.

См. также

usermod(8), chfn(1); Файл жаргона (http://www.catb.org/~esr/jargon/).