Как сделать домашнюю папку пользователя после создания аккаунта?
Я создал нового пользователя с 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