当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

我创建了一个新用户useradd name忘了使用-d -m创建自己的主目录。我尝试制作一个,将/etc /skel和chown的内容复制到新用户。

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

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

最佳解决方案

您在命令提示符下有$,因为您使用的是sh shell。

具有name@server的壳基于bash壳。

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

再次使用usermod添加用户主目录(如果不存在)。 usermod -d /home/username

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

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

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

如通过usermod -d /some/directorymkhomedir_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命令之前阅读手册页。 xdg-user-dir的手册页增加了一些细节。

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

第五种方案

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

sudo mkhomedir_helper username

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1497.html,未经允许,请勿转载。