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


151

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


Когда пользователь входит в систему, эти подкаталоги (Документы, Загрузки и т. Д.) Будут созданы автоматически. Хотя я ищу способы «симулировать» его логин через терминал.
Алаа Али

@Alaa su new_user: D
Раду Рэдяну

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

2
вход в систему не создает подкаталоги в доме.
Джо Риджо

Ответы:


231

Используйте следующее (как root или с sudo, если не root):

mkhomedir_helper username

Чтобы это работало, папка /home/usernameне должна существовать.

Для папок, связанных с X (рабочий стол, файлы для загрузки и т. Д.), Вам потребуется войти в графическую среду; они будут автоматически сгенерированы при первом входе в систему.


1
Просто и полезно. Таким образом, вы также можете быть уверены, что вновь созданный домашний каталог соответствует вашим системным политикам, даже не зная их или каких-либо ручных действий.
Герлос

Это правильный ответ, по крайней мере, он работал для меня на Ubuntu 14.04.2 LTS.
Кристиан Уилки

1
Сначала мне нужно было указать свое имя пользователя в / etc / passwd, прежде чем это сработало.
user79878

3
Просто .. просто работает (тм). Должен быть принят ответ
Newtopian

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

33

Подкаталоги (Documents, Downloads и т. Д.) Автоматически создаются при первом входе пользователя в систему через GNOME при условии, что домашний каталог создан с правильными разрешениями. Вот демонстрация:

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

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

alaa @ aa-lu: ~ $ grep testinguser / etc / passwd
testinguser: x: 1001: 1001 :: / home / testinguser : / bin / sh

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

Затем я вышел из своей учетной записи и снова вошел в систему 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 Public
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. Итак, сначала вы должны быть уверены в этом.
Раду Рэдяну

Можете ли вы привести пример таких ситуаций =)? На страницах 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 в yes в конфигурационном файле 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

Будьте осторожны, не вносите никаких других изменений.

После сохранения файла, прежде чем выходить из учетной записи root, выполните следующие команды:

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: папка дома будет создана автоматически. И действительно, домашняя папка будет автоматически заполняться после первого входа в систему.
Раду Рэдяну

похоже, это ничего не делает. Может, я попробую скрипт bash из другого вопроса, но не могу ли я просто создать папку в / home / под названием new_user, а затем скопировать в нее содержимое / etc / skel? это то, что делает этот bash-скрипт?
Джо Риджо

@JoRijo Я отредактировал свой ответ.
Раду Рэдяну

@ 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.