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

Jo *_*ijo 219 command-line users home-directory

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

我怎样才能做到这一点?

kav*_*ias 319

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

mkhomedir_helper username
Run Code Online (Sandbox Code Playgroud)

为此,文件夹/home/username必须不存在。

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

  • 简单......只是有效(tm)。应该是公认的答案 (3认同)
  • 这不会在主目录中创建文件,例如“.bashrc”。不适合我。 (3认同)
  • 简单实用。通过这种方式,您还可以确保新创建的主目录符合您的系统策略,而无需知道它们或进行任何手动修改。 (2认同)

Ala*_*Ali 35

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

alaa@aa-lu:~$ sudo useradd testinguser
 alaa@aa-lu:~$ sudo passwd testinguser
输入新的 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 Jun 5 09:46 lost+found
alaa@aa-lu:~$ sudo mkdir /home/testinguser
 alaa@aa-lu:~$ sudo chown testinguser:testinguser /home/testinguser
 alaa@aa-lu:~$ ls -l /home
共 24 个
drwxr-xr-x 55 alaa alaa 4096 8 月 22 日 22:00 alaa
drwx------ 2 root root 16384 Jun 5 09:46 lost+found
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:03 testinguser
alaa@aa-lu:~$ ls -l /home/testinguser/
共 0
alaa@aa-lu:~$

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

alaa@aa-lu:~$ grep testinguser /etc/passwd
testinguser:x:1001:1001:: /home/testinguser :/bin/sh

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

然后我注销了我的帐户,并用 重新登录testinguser,这里是自动创建的子目录:

alaa@aa-lu:~$ ls -l /home/testinguser/
共 36 个
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 桌面
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 文档
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 下载
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 音乐
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:07 图片
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Public
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 模板
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 视频

我不需要复制/etc/skel.

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

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


cra*_*ter 17

更新:解决方案已损坏,对我也不起作用。

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

useradd -m username
Run Code Online (Sandbox Code Playgroud)

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

  -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.
Run Code Online (Sandbox Code Playgroud)

并进一步指出:

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.
Run Code Online (Sandbox Code Playgroud)

  • 这似乎试图创建一个新用户,因为它告诉我“用户‘新用户’已经存在”。 (10认同)
  • 这个答案没有解决问题。复制 `/etc/skel` 不会在主目录中创建子目录。此外,在创建新用户时使用 `useradd -m`,而不是在用户已经添加时使用。 (3认同)

Rad*_*anu 7

如果您使用adduser命令创建了新用户,则无需为新用户创建主目录。/home将自动为新用户创建一个以目录中用户名称命名的主目录,包含以下子目录:桌面、下载、文档、音乐、图片、视频(和其他)。

如果您使用useradd命令创建了新用户,则在终端中运行以下命令:

sudo -i     #enter your user password when you are asked
gedit /etc/passwd
Run Code Online (Sandbox Code Playgroud)

/etc/passwdroot身份编辑文件(这是最重要的一步)。找到包含新用户名称的行,并为他设置默认主目录,如下所示:

new_username:x:1001:1001::/home/new_username:/bin/sh
Run Code Online (Sandbox Code Playgroud)

在这一行,您还可以为新用户添加真实姓名,或设置默认 shell。像这样的东西:

new_username:x:1001:1001:Real New Username,,,:/home/new_username:/bin/bash
Run Code Online (Sandbox Code Playgroud)

小心,不要进行任何其他更改。

保存文件后,在从root帐户出去之前,运行以下命令:

new_username:x:1001:1001::/home/new_username:/bin/sh
Run Code Online (Sandbox Code Playgroud)

在所有这些之后,新用户的主文件夹将在首次登录后自动填充。

另请参阅:如何在创建帐户后创建用户主文件夹?


fot*_*nus 5

您真正需要的只是主文件夹即可使其正常工作。作为根,

cd /home
cd mkdir username
chown username username
chgrp username username
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)