如何在创建帐户后创建用户主文件夹?
我使用useradd name
创建了一个新用户,忘了使用-d -m
来创建他们的主目录。 我尝试制作一个,复制/ etc / skel的内容,并将所有内容都添加到新用户。
别名不起作用,比如ll
,我在命令提示符下只有一个$
,而不是name@server ~$
。 此外,使用滚轮转储命令行上的垃圾:(
我该如何解决这个问题,还是更容易删除用户并重新开始?
你在命令提示符下有$
,因为你正在使用sh
shell。
name@server
的shell基于bash
shell。
您必须通过以下方式更改新创建的用户的默认shell: usermod -s /bin/bash
。
再次使用 usermod
添加用户主目录(如果不存在)。usermod -d /home/username
如果用户没有在/etc/passwd
指定的主目录:
运行mkhomedir_helper
以创建主目录。 mkhomedir_helper
将创建用户主目录并复制/etc/skel
中的内容。
如果用户已在/etc/passwd
指定了主目录:
例如通过usermod -d /some/directory
, mkhomedir_helper
将无法正常工作。 唯一的方法是为受影响的用户手动创建主目录。
这是一个快速的bash脚本。 使用sudo
以root身份运行。 它需要任意数量的参数,每个参数都是需要主目录的用户名。 这做了一些假设:你的主目录在/home
,你的骨架目录是/etc/skel
。 这些是Ubuntu的默认设置。 您可以从gist下载或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 [options]
man useradd
看一下xdg-user-dirs-update
命令。 它将创建默认的X windows目录:桌面,下载等…
没有默认目录xdg-user-dirs-update --force
可以运行xdg-user-dirs-update --force
来创建目录。 我必须为我的一个用户帐户执行此操作。
我建议在运行xdg-user-dirs-update
命令之前阅读手册页。 xdg-user-dir
的手册页添加了一些细节。
“XDG基本目录规范”是freedesktop.org规范的一部分。
如果您忘记使用-d -m
,最好和快速的选择是运行
sudo mkhomedir_helper username
with创建主目录,就好像您提供了缺少的选项一样。
我刚刚遇到这个(Ubuntu 12.04),我通过创建一个临时用户,复制用户目录,chowning它,最后删除临时用户来解决它。
sudo adduser temp sudo cp -r /home/temp /home/name sudo chown -R name.name /home/name sudo deluser temp