Команда для зміни домашнього каталогу користувача за замовчуванням


202

Мені хотілося б знати, чи є якась проста команда оболонки для зміни домашнього каталогу користувача в 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

Відповіді:


350

Коментар Ібрагіма щодо іншої відповіді - це правильний спосіб змінити домашній каталог існуючого користувача.

Змінення домашнього каталогу користувача:

usermod -d /newhome/username username

usermodце команда редагування наявного користувача.
-d(абревіатура --home) змінить домашній каталог користувача.

Змінення домашнього каталогу користувача + Переміщення вмісту поточного каталогу користувача:

usermod -m -d /newhome/username username

-m(абревіатура для --move-home) перемістить вміст із поточного каталогу користувача до нового каталогу.


1
Не тільки переміщуйте вміст, я бачу його більше, як перемістити всю папку = початкова папка ( /home/usernameяк правило) видаляється.
Betlista

2
@STW Це оборотна задача? Значить, якщо я просто запускаю його один раз, а потім гортаю параметри, чи буде мій домашній каталог точно таким, яким він був раніше?
DanGordon

1
@DanGordon все, що ви поставите в /newhome/usernameаргументі, буде домашнім каталогом користувача. Ви можете повернути його до попереднього домашнього каталогу, якщо ви знаєте, що це було, але немає можливості скасувати.
STW

3
Порядок варіантів другої команди неправильний. usermod -m -d /newhome/username usernameпрацює.
Snozzlebert

@Dominik спасибі - є ймовірність, що це по-іншому, залежно від ОС (Mac vs Linux проти BSD тощо), звичайно, це може бути просто неправильним
STW

28

З Linux Змініть домашню каталогізацію користувача за замовчуванням, додаючи нового користувача :

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

vi /etc/default/useradd

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

HOME=/home

Замінити:

HOME=/iscsi/user

Збережіть і закрийте файл. Тепер ви можете додати користувача, використовуючи звичайну команду useradd:

# useradd vivek
# passwd vivek

Перевірте інформацію про користувача:

# finger vivek

82
usermod -m -d /path/to/new/login/home/dir user змінює існуючий домашній каталог користувача на новий каталог входу, який створюється, якщо він ще не існує, опція -m переміщує вміст поточного домашнього каталогу на новий домашній dir
Ібрагім Кураїш

23

Прийнята відповідь є помилковою, оскільки вміст із початкової папки користувача не переміщується за допомогою неї. Я збираюся додати ще одну відповідь, щоб її виправити:

sudo usermod -d /newhome/username -m username

Вам не потрібно створювати папку з іменем користувача, і це також перемістить ваші файли з початкової папки користувача в папку / newhome / username.


4

Якщо інші читачі шукають інформацію про adduserкоманду.

Редагувати /etc/adduser.conf

Встановити DHOMEзмінну


0

Виявив, що це порушує деякі програми, то кращий спосіб зробити це

На додаток до символьного посилання на новіших дистрибутивах та файлових системах як root ви також можете використовувати bind-mount:

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

Це корисно для дозволу доступу "через" / додому каталог до підкаталів через демон, які в іншому випадку налаштовані, щоб уникнути проходження через символьні посилання (apache, ftpd тощо).

Ви, звичайно, повинні пам'ятати (або сценарій init), щоб прив'язати при перезавантаженні.

Сценарій ініціалізації прикладу /etc/fstabIS

/extra-home/username /home/username none defaults,bind 0 0

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.