创建帐户后如何制作用户主文件夹?

mor*_*a42 79 users adduser home-directory

我创建了一个新用户,但useradd name忘记-d -m用来创建他们的主目录。我尝试制作一个,复制 /etc/skel 的内容,并将chown所有内容都发给新用户。

别名不起作用,例如ll, 而我$在命令提示符下只有一个,而不是name@server ~$. 此外,使用滚轮在命令行上转储垃圾:(

我该如何解决这个问题,或者删除用户并重新开始是否更容易?

iri*_*ent 77

$在命令提示符处有,因为您正在使用shshell。

shell withname@server是基于bashshell的。

您必须通过 : 更改新创建用户的默认 shell usermod -s /bin/bash

如果usermod用户主目录不存在,则再次使用它来添加用户主目录。usermod -d /home/username

如果用户没有在 中指定主目录/etc/passwd

运行mkhomedir_helper <username>以创建主目录。mkhomedir_helper将创建用户主目录并复制内容/etc/skel

如果用户已经在 中指定了主目录/etc/passwd

例如 via usermod -d /some/directorymkhomedir_helper将不起作用。唯一的方法是为受影响的用户手动创建主目录。

  • `sudo mkhomedir_helper &lt;用户名&gt; ` 为我工作。mkhomedir_helper 在没有 sudo 的情况下静默失败。 (6认同)

小智 20

如果您忘记使用-d -m,最好和快速的选择是运行

sudo mkhomedir_helper username
Run Code Online (Sandbox Code Playgroud)

with 创建主目录,就像您提供了缺少的选项一样。


Zen*_*xer 6

这是一个快速的 bash 脚本。以 root 身份运行sudo。它接受任意数量的参数,每个参数都是需要主目录的用户名。这做出了一些假设:您的主目录在 中/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
Run Code Online (Sandbox Code Playgroud)


num*_*and 5

要更改新用户主目录的默认值,您可以给出

sudo useradd -D --base-dir /home/new_user
Run Code Online (Sandbox Code Playgroud)

命令。请参阅useradd -D [选项]来自

man useradd 
Run Code Online (Sandbox Code Playgroud)

  • 这个答案与问题无关。我之所以这么说是因为此命令用于更改系统上的默认值,如果您期望使用它,可能会造成损坏。 (2认同)

小智 5

看一下xdg-user-dirs-update命令。它将创建默认的 X windows 目录:桌面、下载等...

没有默认目录的用户可以运行xdg-user-dirs-update --force以创建目录。我必须为我的一个用户帐户执行此操作。

我建议在运行xdg-user-dirs-update 命令之前阅读手册页。的手册页 xdg-user-dir 添加了更多详细信息。

“XDG 基本目录规范”是 freedesktop.org 规范的一部分。


小智 3

我刚刚遇到这个问题(Ubuntu 12.04),我通过创建一个临时用户,复制用户目录,chowning它,最后删除临时用户来解决它。

sudo adduser temp
sudo cp -r /home/temp /home/name
sudo chown -R name.name /home/name
sudo deluser temp
Run Code Online (Sandbox Code Playgroud)