пятница, 3 июля 2009 г.

Смена имени пользователя и домашней директории в Linux

Исходные данные
Имя пользователя : suser
Домашняя директория : /home/suser

Задача
Сменить suser -> duser
Сменить /home/suser -> /home/duser

Решение
usermod -l duser suser
mv /home/suser /home/duser
usermod -d /home/duser duser
Однако на этом все только начинается.
Проблемы:
  1. Очевидно что система автоматически не изменяет файлы пользователя duser. Имеем дело с устаревшей информацией относительно домашней директории и имени пользователя.
  2. Пользователь duser до сих пор состоит в группе suser (если ранее состоял). Файлы пользователя до сих пор ссылаются на группу suser(если ранее ссылались).
Первая проблема не имеет универсального решения в силу произвольного содержимого директорий пользователей. Мое мнение, что неплохо бы авторам программ использовать относительные пути и переменные среды в конфигурационных файлах.
Однако в случае файлов для которых не сверяются контрольные суммы возможно выполнение операции поиска и замены.
Оцениваем объем проблем:
grep -ir suser /home/duser/.*
grep -ir /home/suser /home/duser/.*
Решение второй проблемы:
groupadd duser
gpasswd -a duser duser
find / -group suser -exec chown duser:duser '{}' \;
groupdel suser #если необходимо
Вывод
Лучше не менять имя пользователя и/или домашнюю директорию.

2 комментария:

  1. смена директории
    usermod -d /home/duser duser
    не вызвала никаких ошибок

    ОтветитьУдалить
  2. -m, --move-home переместить содержимое домашнего каталога в новое место (использовать только вместе с -d)

    ОтветитьУдалить