Команда для изменения домашнего каталога по умолчанию для пользователя

203

Я хотел бы знать, существует ли какая-либо простая команда оболочки для изменения домашнего каталога пользователя в Linux / Unix (аналогичного chsh, который изменяет оболочку входа по умолчанию для существующего действующего пользователя), не касаясь /etc/passwdфайла. Спасибо

Ибрагим Курайш
источник
Почему вы не хотите трогать /etc/passwdфайл? Вам нужно будет!
Василий Старынкевич,
11
stackoverflow.com/questions/20071714/… , говорит, что usermod -d /home/userxx /home/useryyдля изменения каталога входа по умолчанию linux на / home / useryy
Ибрагим Курайш
2
Почему вы спрашиваете о домашнем каталоге по умолчанию ? Вы хотите изменить домашний каталог одного конкретного существующего пользователя или всех пользователей, добавленных в будущем? Обратите внимание, что chshне изменяют оболочку входа по умолчанию , а только оболочку входа данного пользователя ... Чтобы изменить HOMEпользователя, просто отредактируйте/etc/passwd
Basile Starynkevitch

Ответы:

351

Комментарий Ибрагима к другому ответу - правильный способ изменить домашний каталог существующего пользователя.

Измените домашний каталог пользователя:

usermod -d /newhome/username username

usermodэто команда для редактирования существующего пользователя.
-d(сокращение от --home) изменит домашний каталог пользователя.

Изменить домашний каталог пользователя + Переместить содержимое текущего каталога пользователя:

usermod -m -d /newhome/username username

-m(сокращение от --move-home) переместит содержимое из текущего каталога пользователя в новый каталог.

STW
источник
1
Не только перемещать содержимое, я вижу это больше как перемещение всей папки = исходная папка ( /home/usernameкак правило) удаляется.
Бетлиста
2
@ STW Это обратимая задача? То есть, если я просто запусту его один раз, а затем переверну параметры, будет ли мой домашний каталог таким, каким он был раньше?
DanGordon
1
@DanGordon, что бы вы ни указали в /newhome/usernameаргументе, будет домашним каталогом пользователя. Вы можете установить его обратно в прежний домашний каталог, если знаете, что это было, но нет опции «отменить».
STW
3
Порядок опций для второй команды неправильный. usermod -m -d /newhome/username usernameработает.
Snozzlebert
@Dominik спасибо - есть вероятность, что это отличается в зависимости от ОС (Mac против Linux против BSD и т. Д.), Конечно, это также может быть просто неверно
STW
28

Из Linux Измените домашний каталог пользователя по умолчанию при добавлении нового пользователя :

Просто откройте этот файл с помощью текстового редактора, введите:

vi /etc/default/useradd

Домашний каталог по умолчанию, определенный переменной HOME, найдите строку, которая выглядит следующим образом:

HOME=/home

Заменить:

HOME=/iscsi/user

Сохраните и закройте файл. Теперь вы можете добавить пользователя с помощью обычной команды useradd:

# useradd vivek
# passwd vivek

Проверьте информацию о пользователе:

# finger vivek
Максимин
источник
83
usermod -m -d /path/to/new/login/home/dir user изменяет существующий домашний каталог пользователя на новый каталог входа в систему, который создается, если он еще не существует, опция -m перемещает содержимое текущего домашнего каталога в новый домашний каталог
Ibrahim Quraish
23

Принятый ответ неверен, так как содержимое из исходной пользовательской папки не перемещается с его помощью. Я собираюсь добавить еще один ответ, чтобы исправить это:

sudo usermod -d /newhome/username -m username

Вам не нужно создавать папку с именем пользователя, и это также переместит ваши файлы из начальной папки пользователя в папку / newhome / username.

Сукрит Гупта
источник
4

В случае, если другие читатели ищут информацию о adduserкоманде.

редактировать /etc/adduser.conf

Установить DHOMEпеременную

rafaelvalle
источник
0

Обнаружил, что это нарушает некоторые приложения, лучший способ сделать это

В дополнение к symlink, в более свежих дистрибутивах и файловых системах в качестве root вы также можете использовать bind-mount:

mkdir /home/username 
mount --bind --verbose /extra-home/username /home/username

Это полезно для предоставления доступа «через» каталог / home к подкаталогам через демоны, которые в противном случае настроены так, чтобы избежать прохождения по символическим ссылкам (apache, ftpd и т. Д.).

Вы должны помнить (или сценарий инициализации), чтобы связать при перезагрузках, конечно.

Сценарий инициализации примера /etc/fstabIS

/extra-home/username /home/username none defaults,bind 0 0
Wilken
источник
-1

usermod -m -d / newhome имя пользователя

Ахмед Кей
источник
5
Пожалуйста, объясните свой ответ более подробно.
Т. Шорт