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

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

Псевдонимы не работают, такие как llи у меня просто есть $ в командной строке вместо name@server ~$, Также с помощью колеса прокрутки выкидывает мусор в командную строку:(

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

6 ответов

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

Оболочка с name@server основан на 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 не будет работать. Единственный способ - вручную создать домашний каталог для затронутого пользователя.

Если вы забыли использовать -d -mлучший и быстрый вариант - запустить

sudo mkhomedir_helper username

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

Посмотрите на xdg-user-dirs-update команда. Он создаст каталоги X windows по умолчанию: рабочий стол, загрузка и т. Д.

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

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

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

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

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

exit_code=0

for user in "$@"; 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

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

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

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

man useradd 

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

sudo adduser temp
sudo cp -r /home/temp /home/name
sudo chown -R name.name /home/name
sudo deluser temp
Другие вопросы по тегам