如何在终端中为现有用户追溯创建默认主目录?

如何在终端中为现有用户追溯创建默认主目录?

我创建了一个没有主目录的用户,现在我想为他们创建一个主目录。不只是一个名为的文件夹/home/new-user,而是一个完整的默认主目录,其中包含所有常规文件夹和隐藏文件等。

我怎样才能做到这一点?

答案1

使用以下命令(以 root 身份,如果不是 root,则使用 sudo):

mkhomedir_helper username

为了使其正常工作,文件夹/home/username不能存在。

对于 X 相关的文件夹(桌面、下载等),您需要在图形环境中登录;它们将在您第一次登录时自动生成。

答案2

当用户首次通过 GNOME 登录时,会自动创建子目录(文档、下载等...),前提是主目录以正确的权限创建。下面是一个演示:

alaa@aa-lu:~$sudo useradd 测试用户
alaa@aa-lu:~$sudo passwd 测试用户
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:密码更新成功
alaa@aa-lu:~$sudo ls -l /home
共 20
drwxr-xr-x 55 alaa alaa 4096 8月22日 22:00 alaa
drwx------ 2 root root 16384 6月5日 09:46 丢失+找到
alaa@aa-lu:~$sudo mkdir /home/testinguser
alaa@aa-lu:~$sudo chown 测试用户:测试用户 /home/测试用户
alaa@aa-lu:~$ls -l /home
共 24
drwxr-xr-x 55 alaa alaa 4096 8月22日 22:00 alaa
drwx------ 2 root root 16384 6月5日 09:46 丢失+找到
drwxr-xr-x 2 testinguser testinguser 4096 8月23日 10:03 testinguser
alaa@aa-lu:~$ls -l /home/测试用户/
共 0
alaa@aa-lu:~$

您可以通过检查 中的条目来检查用户的主目录是否设置正确/etc/passwd。默认情况下,您应该看到主目录设置为/home/testinguser

alaa@aa-lu:~$grep 测试用户 /etc/passwd
测试用户:x:1001:1001::/主页/测试用户:/bin/sh

如果您在那里没有看到主目录/home/testinguser,则需要执行命令sudo usermod -d /home/testinguser testinguser来更新它,尽管您不需要使用此命令,因为它应该默认设置(根据的useradd手册页)。

然后我退出我的帐户,并重新登录testinguser,以下是自动创建的子目录:

alaa@aa-lu:~$ls -l /home/测试用户/
共 36
drwxr-xr-x 2 testinguser testinguser 4096 8月23日 10:05 桌面
drwxr-xr-x 2 testinguser testinguser 4096 8月23日 10:05 文档
drwxr-xr-x 2 testinguser testinguser 4096 8月23日 10:05 下载
drwxr-xr-x 2 testinguser testinguser 4096 8月23日 10:05 音乐
drwxr-xr-x 2 testinguser testinguser 4096 8月23日 10:07 图片
drwxr-xr-x 2 testinguser testinguser 4096 8月23日 10:05 公开
drwxr-xr-x 2 testinguser testinguser 4096 8月23日 10:05 模板
drwxr-xr-x 2 testinguser testinguser 4096 8月23日 10:05 视频

我并不需要复制的内容/etc/skel

如果可以的话,您能否尝试按照以下步骤创建另一个新用户?完成后,您可以通过 删除此新用户sudo deluser testinguser && sudo rm -r /home/testinguser

如果所有这些对你都不起作用,那么我猜这是一个错误。

答案3

更新:该解决方案已损坏并且对我来说不起作用。

如果要在用户主目录不存在的情况下创建它,请运行useradd带有-m标志的命令。这将从/etc/skel目录中复制所有文件。

useradd -m username

您可能需要配置系统设置。根据手册页:

  -m, --create-home
    Create the user's home directory if it does not exist. The files and directories
    contained in the skeleton directory (which can be defined with the -k option)
    will be copied to the home directory.

    By default, if this option is not specified and CREATE_HOME is not enabled, no
    home directories are created.

并进一步指出:

CONFIGURATION

   The following configuration variables in /etc/login.defs change the behavior
   of this tool:

   CREATE_HOME (boolean)
       Indicate if a home directory should be created by default for new users.

答案4

您真正需要的只是主文件夹才能使其工作。以 root 身份,

cd /home
cd mkdir username
chown username username
chgrp username username

第一次登录应该创建所有必要的文件,似乎是那些:

drwxr-xr-x 16 fotanus fotanus 4096 Jun  4 17:46 .
drwxr-xr-x  9 root    root    4096 Jun  4 17:43 ..
drwx------ 11 fotanus fotanus 4096 Jun  4 17:46 .cache
drwx------ 13 fotanus fotanus 4096 Jun  4 17:46 .config
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Desktop
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Documents
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Downloads
drwx------  3 fotanus fotanus 4096 Jun  4 17:46 .gconf
drwxrwxr-x  2 fotanus fotanus 4096 Jun  4 17:46 .gstreamer-0.10
-rw-------  1 fotanus fotanus  334 Jun  4 17:45 .ICEauthority
drwxr-xr-x  3 fotanus fotanus 4096 Jun  4 17:45 .local
drwx------  4 fotanus fotanus 4096 Jun  4 17:45 .mozilla
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Music
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Pictures
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Public
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Templates
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Videos
-rw-------  1 fotanus fotanus   55 Jun  4 17:45 .Xauthority
-rw-------  1 fotanus fotanus  711 Jun  4 17:45 .xsession-errors

相关内容