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


150

Як це зробити? Я створив користувача без домашнього каталогу, і тепер я хочу його створити. Не просто папка під назвою new_user, я хочу домашній каталог за замовчуванням із усіма своїми папками та прихованими файлами тощо.


Коли користувач увійде в систему, ці підкаталоги (Документи, Завантаження тощо) будуть автоматично створені. Хоча я шукаю способи "імітувати" його логін через термінал.
Алаа Алі

@Alaa su new_user: D
Radu Rădeanu

1
@ RaduRădeanu Так, я вже спробував це, також спробував, sudo -i -u new_userале це не працює. Я думаю, що нам потрібно "моделювати логін X" ... не знаю, як це зробити.
Алаа Алі

2
вхід у систему не створює підкаталоги в домашніх умовах.
Джо Ріхо

Відповіді:


230

Використовуйте наступне (як root, або з sudo, якщо не root):

mkhomedir_helper username

Щоб це працювало, папка /home/usernameне повинна існувати.

Для папок, пов’язаних з X (настільний ПК, завантаження тощо), вам потрібно буде увійти в графічне середовище; вони будуть автоматично генеровані під час першого входу.


1
Просте і корисне. Таким чином, ви також можете бути впевнені, що новостворений домашній дір відповідає вашій системній політиці, навіть не знаючи про них і не маючи ручного майстерності.
герлос

Це правильна відповідь, принаймні, це працювало для мене на Ubuntu 14.04.2 LTS.
Крістіан Вілкі

1
Перш ніж це працювало для мене, я повинен був мати своє ім’я користувача в / etc / passwd.
користувач79878

3
Простий .. просто працює (тм). Має бути прийнята відповідь
ньютопський

Не забудьте перевірити права доступу до каталогу ls -l /home. Я виявив, що новий каталог читається всіма іншими користувачами, тому я видалив ці дозволи chmod go-r-x /home/username.
Дон Кіркбі

33

Підкаталоги (Документи, Завантаження тощо) автоматично створюються при першому вході в систему через GNOME за умови створення домашнього каталогу з правильними дозволами. Ось демонстрація:

alaa @ aa-lu: ~ $ sudo useradd
 testinguser alaa @ aa-lu: ~ $ sudo passwd testinguser
Введіть новий пароль UNIX:
Знову введіть новий пароль UNIX:
passwd: пароль успішно оновлений
alaa @ aa-lu: ~ $ sudo ls -l / home
всього 20
drwxr-xr-x 55 alaa alaa 4096 22 серпня 22:00 alaa
drwx ------ 2 кореневих кореня 16384 5 червня 09:46 втрачено + знайдено
alaa @ aa-lu: ~ $ sudo mkdir / home / testinguser
 alaa @ aa-lu: ~ $ sudo chown testinguser: testuser / home / testinguser
 alaa @ aa-lu: ~ $ ls -l / home
всього 24
drwxr-xr-x 55 alaa alaa 4096 22 серпня 22:00 alaa
drwx ------ 2 кореневих кореня 16384 5 червня 09:46 втрачено + знайдено
drwxr-xr-x 2 тестуваннякористувач тестуваннякористувач 4096 23 серпня 10:03 тестуваннякористувач
alaa @ aa-lu: ~ $ ls -l / home / testinguser /
всього 0
alaa @ aa-lu: ~ $

Ви можете перевірити правильність налаштування домашнього каталогу користувача, перевіривши запис /etc/passwd. За замовчуванням слід переглянути домашній каталог, встановлений на /home/testinguser:

alaa @ aa-lu: ~ $ grep testinguser / etc / passwd
тестовийкористувач: x: 1001: 1001 :: / home / testinguser : / bin / sh

Якщо ви не бачите там домашнього каталогу /home/testinguser, вам потрібно буде виконати команду, sudo usermod -d /home/testinguser testinguserщоб оновити його, хоча вам не потрібно використовувати цю команду, оскільки вона повинна бути встановлена ​​за замовчуванням (відповідно до useraddінструкцій).

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

alaa @ aa-lu: ~ $ ls -l / home / testinguser /
всього 36
drwxr-xr-x 2 тестуваннякористувач тестуваннякористувач 4096 23 серпня 10:05 Робочий стіл
drwxr-xr-x 2 тестуваннякористувач тестуваннякористувач 4096 23 серпня 10:05 Документи
drwxr-xr-x 2 тестуваннякористувач тестуваннякористувач 4096 серпня 23 10:05 Завантаження
drwxr-xr-x 2 тестуваннякористувач тестуваннякористувач 4096 23 серпня 10:05 Музика
drwxr-xr-x 2 тестуваннякористувач тестуваннякористувач 4096 23 серпня 10:07 Картинки
drwxr-xr-x 2 тестуваннякористувач тестуваннякористувач 4096 23 серпня 10:05 Загальнодоступне
drwxr-xr-x 2 тестуваннякористувач тестуваннякористувач 4096 23 серпня 10:05 Шаблони
drwxr-xr-x 2 тестуваннякористувач тестуваннякористувач 4096 23 серпня 10:05 Відео

Мені не потрібно було копіювати вміст /etc/skel.

Якщо можливо, можете спробувати виконати ці кроки, створивши іншого нового користувача? Щойно ви закінчите, ви можете видалити цього нового користувача sudo deluser testinguser && sudo rm -r /home/testinguser.

Якщо все це з вами не спрацювало, я гадаю, що це помилка.


У деяких випадках, коли ви використовуєте useradd, домашній каталог за новим користувачем за замовчуванням не встановлюється автоматично /home/username. Отже, спочатку ypu повинен бути впевнений у цьому.
Radu Rădeanu

Чи можете ви надати мені приклад таких ситуацій =)? З useraddпідручних сторінок : "useradd буде використовувати базовий каталог, вказаний змінною HOME в /etc/default/useradd, або /homeза замовчуванням". Змінна HOME у /etc/default/useraddне визначена за замовчуванням, тому Useradd завжди використовуватиме /home. У будь-якому випадку я відредагую свою відповідь і переміщу частину для перевірки /etc/passwd.
Алаа Алі

Приклад тут . Інший приклад: ви видаляєте користувача, але ви не видаляли його каталоги та файли; а потім ви знову додаєте користувача з тим самим іменем. І таких багато, і помилок немає :)
Раду Радеану

Якщо у вас немає /bin/shв рядку користувача, /etc/passwdви повинні додати оболонку для цього користувача, наприклад оболонку за замовчуванням зusermod -s /bin/sh testuser
rubo77

Не всі системи мають GNOME, і порадити комусь видалити та повторно додати користувача просто для створення домашнього каталогу - це погана порада.
ntwrkguru

12

ОНОВЛЕННЯ: рішення вирішено, і для мене теж не працює.

Якщо ви хочете створити домашній каталог користувача, якщо він не існує, запустіть useraddкоманду з -mпрапором. Це скопіює всі файли з /etc/skelкаталогу.

useradd -m username

Можливо, вам доведеться налаштувати параметри для вашої системи. За даними сторінки людини:

  -m, --create-home
    Create the user's home directory if it does not exist. The files and directories
    contained in the skeleton directory (which can be defined with the -k option)
    will be copied to the home directory.

    By default, if this option is not specified and CREATE_HOME is not enabled, no
    home directories are created.

і далі вказує:

CONFIGURATION

   The following configuration variables in /etc/login.defs change the behavior
   of this tool:

   CREATE_HOME (boolean)
       Indicate if a home directory should be created by default for new users.

8
це, здається, намагається створити нового користувача, тому що воно говорить мені, що "користувач" новий користувач "вже існує".
Джо Ріхо

Я також перевіряв -mпрапор при створенні нового користувача, і він не працював; він лише копіює файли скелета.
Алаа Алі

@Jo: І як це невірно, адже згідно з початковою публікацією, користувач вже існує.
крафтер

3
Ця відповідь не вирішує питання. Копіювання /etc/skelне створює підкаталогів у домашньому каталозі. Також useradd -mвикористовується при створенні нового користувача, а не тоді, коли його вже додано.
Алаа Алі

Я оновив публікацію, тому встановив CREATE_HOME значення "Так" у файлі конфігурації login.defs.
крафтер

5

Якщо ви створили нового користувача за допомогою adduserкоманди, вам не потрібно створювати домашнього каталогу нового користувача. Домашній каталог із іменем користувача в /homeкаталозі зі наступними підкаталогами: Робочий стіл, Завантаження, Документи, Музика, Зображення, Відео (та інші) для нового користувача буде створено автоматично.

Якщо ви створили нового користувача за допомогою useraddкоманди, виконайте наступні команди в терміналі:

sudo -i     #enter your user password when you are asked
gedit /etc/passwd

редагувати /etc/passwdфайл як root (це найважливіший крок). Знайдіть рядок із іменем нового користувача та встановіть для нього домашній каталог за замовчуванням приблизно так:

new_username:x:1001:1001::/home/new_username:/bin/sh

У цьому рядку ви також можете додати справжнє ім’я для нового користувача або встановити оболонку за замовчуванням. Щось на зразок цього:

new_username:x:1001:1001:Real New Username,,,:/home/new_username:/bin/bash

Будьте уважні, не вносьте жодних інших змін.

Після того як ви збережете файл, перш ніж вийти з кореневого облікового запису, запустіть такі команди:

mkdir /home/new_username                                #to create the directory /home/new_username
cp -r /etc/skel/. /home/new_username                    #to copy skeleton files to /home/new_username
chown -R new_username:new_username /home/new_username   #to change the owner of /home/new_username to the new user

Після цього всі домашні папки нового користувача автоматично заповняться після першого входу.

Дивіться також: Як зробити домашню папку користувача після створення облікового запису?


Наскільки я пам’ятаю, домашня папка не створюється автоматично, вам доведеться її вручну створити та оновити запис користувача /etc/passwd(якщо його ще немає). Після входу користувача домашня папка автоматично заповнюється цими підкаталогами. Однак про все це подбає те, що хтось додає користувача adduserзамість цього useradd.
Алаа Алі

@Alaa Я щойно тестував кілька днів тому, і я використав adduser: домашня папка створюється автоматично. І дійсно, домашня папка автоматично заповнюється після першого входу.
Radu Rădeanu

Можливо, я спробую скрипт bash з іншого питання, але чи не міг я просто створити папку в / home / call new_user, а потім скопіювати в неї вміст / etc / skel? це те, що робить цей bash-скрипт?
Джо Ріхо

@JoRijo Я відредагував свою відповідь.
Radu Rădeanu

@ RaduRădeanu ти не маєш на увазі cp /etc/skel/* /home/new_username? Також, чи є причина, чому ви використовуєте дві послідовні chownкоманди?
Алаа Алі

3

Все, що вам потрібно, - це домашня папка, щоб вона працювала. Як корінь,

cd /home
cd mkdir username
chown username username
chgrp username username

При першому вході потрібно створити всі необхідні файли, здається, такі:

drwxr-xr-x 16 fotanus fotanus 4096 Jun  4 17:46 .
drwxr-xr-x  9 root    root    4096 Jun  4 17:43 ..
drwx------ 11 fotanus fotanus 4096 Jun  4 17:46 .cache
drwx------ 13 fotanus fotanus 4096 Jun  4 17:46 .config
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Desktop
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Documents
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Downloads
drwx------  3 fotanus fotanus 4096 Jun  4 17:46 .gconf
drwxrwxr-x  2 fotanus fotanus 4096 Jun  4 17:46 .gstreamer-0.10
-rw-------  1 fotanus fotanus  334 Jun  4 17:45 .ICEauthority
drwxr-xr-x  3 fotanus fotanus 4096 Jun  4 17:45 .local
drwx------  4 fotanus fotanus 4096 Jun  4 17:45 .mozilla
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Music
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Pictures
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Public
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Templates
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Videos
-rw-------  1 fotanus fotanus   55 Jun  4 17:45 .Xauthority
-rw-------  1 fotanus fotanus  711 Jun  4 17:45 .xsession-errors
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.