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/).