Как создать домашнюю папку пользователя после создания учетной записи? [Дубликат]

50

Я создал нового пользователя с useradd name и забыл использовать -d -m для создания своего домашнего каталога. Я попытался сделать это, скопировав содержимое / etc / skel и chown для всех пользователей.

Псевдонимы не работают, например ll , и у меня есть только $ в командной строке вместо [email protected] ~$ . Также, используя колесо прокрутки, выгружает мусор в командной строке: (

Как я могу это исправить, или проще удалить пользователя и начать?

    
задан mortona42 18.06.2012 в 21:12
источник

6 ответов

52

У вас есть $ в командной строке, потому что вы используете оболочку sh .

Оболочка с [email protected] основана на оболочке bash .

Вы должны изменить оболочку по умолчанию для вновь созданного пользователя через: usermod -s /bin/bash .

Снова используйте usermod , чтобы добавить домашний каталог пользователя, если его нет. usermod -d /home/username

Если у пользователя нет домашнего каталога, указанного в /etc/passwd :

Запустите mkhomedir_helper <username> , чтобы создать домашний каталог. mkhomedir_helper создаст домашний каталог пользователя и скопирует материал в /etc/skel .

Если у пользователя уже есть домашний каталог, указанный в /etc/passwd :

Например, через usermod -d /some/directory , mkhomedir_helper не будет работать. Единственный способ - вручную создать домашний каталог для затронутого пользователя.     

ответ дан iridescent 17.12.2013 в 17:05
6

Вот быстрый скрипт bash. Запустите root с sudo . Он принимает любое количество аргументов, каждый из которых является именем пользователя, нуждающимся в домашнем каталоге. Это делает несколько предположений: ваши домашние каталоги находятся в /home , а ваш каталог скелета - /etc/skel . Это значения по умолчанию для Ubuntu. Вы можете скачать или wget / curl этого скрипта из gist .

#!/bin/bash
if [ $# -lt 1 ]; then
    echo "Syntax: $_ USER[ USER[ ...]]" >&2
    exit 1
fi

exit_code=0

for user in "[email protected]"; do
    home="/home/$user"
    cp -R /etc/skel "$home" && echo $'\e[32m'"Copied skeleton to: $home"$'\e[m' || ( exit_code=$?; echo $'\e[31m'"Failed to create: $home"$'\e[m' ) >&2
    chown -R "$user:$user" "$home" && echo $'\e[32m'"Set owner on: $home"$'\e[m' || ( exit_code=$?; echo $'\e[31m'"Failed to set owner on: $home"$'\e[m' ) >&2
done

exit $exit_code
    
ответ дан Zenexer 20.06.2013 в 09:33
4

Чтобы изменить значение по умолчанию для домашнего каталога нового пользователя, вы можете указать

sudo useradd -D --base-dir /home/new_user

команды. См. useradd -D [параметры] из

man useradd 
    
ответ дан numand 18.06.2012 в 21:31
4

Взгляните на команду xdg-user-dirs-update . Он создаст стандартные каталоги Windows X: рабочий стол, загрузка и т. Д.

Пользователь без каталогов по умолчанию может запускать xdg-user-dirs-update --force для создания каталогов. Я должен был сделать это для одной из моих учетных записей пользователей.

Я рекомендую прочитать man-страницу перед запуском команды xdg-user-dirs-update . Страница man для xdg-user-dir добавляет несколько деталей.

«Спецификация базового каталога XDG» является частью спецификаций freedesktop.org.

    
ответ дан user483623 26.12.2015 в 20:29
2

Если вы забыли использовать -d -m , лучшим и быстрым вариантом будет запуск

sudo mkhomedir_helper username

с созданием домашнего каталога, как если бы вы предоставили отсутствующие параметры.

    
ответ дан David 13.10.2016 в 14:46
1

Я просто столкнулся с этим (Ubuntu 12.04), и я решил его, создав временного пользователя, скопировав его через каталог пользователя, его chowning и, наконец, удалив временного пользователя.

sudo adduser temp
sudo cp -r /home/temp /home/name
sudo chown -R name.name /home/name
sudo deluser temp
    
ответ дан rancidfishbreath 08.05.2013 в 21:02