Изменить местоположение домашнего каталога root

10

Я хотел бы изменить местоположение домашнего каталога root с / root на / var / root. Я имел обыкновение делать это с usermod:

usermod -d /var/root root

Однако с последней версией usermod вы не можете изменить каталог текущего пользователя. Я пытаюсь изменить домашний каталог root во время загрузки в сценарии настройки системы, который запускается при первой загрузке системы, поэтому я не могу быть другим пользователем.

Есть ли другой способ изменить домашний каталог текущего пользователя, вошедшего в систему (в данном случае root)?

Я мог бы, вероятно, sed / etc / passwd, но это кажется небрежным.

Кевин С.
источник
Жесткая ссылка / root на / var / root?
Гаррет
Я думаю, вы можете изменить / etc / passwd вручную.
billc.cn

Ответы:

11
  1. Единственная проблема с ручным редактированием /etc/passwdзаключается в том, что может возникнуть гонка, если какой-то другой пользователь или программа изменит этот файл, пока вы будете держать его открытым в редакторе. В этом случае это изменение будет потеряно при сохранении файла. Если вы уверены, что эта проблема не относится к вам (другие пользователи не вошли в систему и т. Д.), Вы можете продолжить и редактировать/etc/passwd

  2. Убедитесь, что домашний каталог root доступен при загрузке в однопользовательском режиме, например, он должен быть в корневой файловой системе.

  3. Различные приемы, такие как создание дополнительного пользователя с uid 0, переключение на него и изменение домашнего каталога root, не будут работать. Проверки для текущего зарегистрированного пользователя основаны на uid.

haimg
источник
5
Использование vipwили sudoeditможет защитить от # 1. Что касается # 2, отсутствующий домашний каталог обычно приводит только к предупреждению.
user1686 12.12.11
@ Grawity: Спасибо за информацию vipw, я не знал об этом. Я думаю, что использование vipw, вероятно, является лучшим решением в целом.
haimg