在终端中为现有用户创建默认主目录


150

我该怎么做呢?我创建了一个没有主目录的用户,现在我想创建一个。不仅是一个名为new_user的文件夹,我还希望包含其所有文件夹和隐藏文件等的默认主目录。


用户登录时,将自动创建这些子目录(文档,下载等)。尽管我正在寻找通过终端“模拟”他的登录的方法。
Alaa Ali

@Alaa su new_user:D
RaduRădeanu2013年

1
@RaduRădeanu是的,我已经尝试过了,也尝试过了,sudo -i -u new_user但是没有用。我认为我们需要“模拟X登录” ...不知道该怎么做。
Alaa Ali

2
登录不会在家中创建子目录。
Jo Rijo

Answers:


230

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

mkhomedir_helper username

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

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


1
简单实用。这样,您还可以确保新创建的主目录符合您的系统策略,而无需了解它们或进行任何手动修改。
盖洛斯2015年

这是正确的答案,至少在Ubuntu 14.04.2 LTS上对我有用。
Christian Wilkie 2015年

1
在此之前,我必须先在/ etc / passwd中输入用户名。
user79878 2015年

3
简单..就可以了(tm)。应该被接受的答案
Newtopian

不要忘记使用来检查目录的权限ls -l /home。我发现新目录可被所有其他用户读取,因此我使用删除了这些权限chmod go-r-x /home/username
唐·柯比

33

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

alaa @ aa-lu:〜$ sudo用户添加测试用户
 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 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 16384 Jun 5 09:46 lost + found
drwxr-xr-x 2测试用户testinguser 4096 8月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/testingusersudo usermod -d /home/testinguser testinguser则虽然不需要使用此命令,因为它应该默认设置(根据useradd的联机帮助页),但您需要执行该命令以对其进行更新。

然后,我注销了帐户,然后使用再次登录testinguser,这是自动创建的子目录:

alaa @ aa-lu:〜$ ls -l / home / testinguser /
总计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 Aug 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

如果所有这些都不适合您,那么我猜这是一个错误。


在某些情况下,使用时useradd,新用户的默认主目录不会自动设置为/home/username。因此,首先必须确定这一点。
RaduRădeanu13年

您能举一个例子说明这些情况吗?在以下手册页中useradd:“ useradd将使用HOME变量在中指定的基本目录/etc/default/useradd,或者/home默认情况下使用”。/etc/default/useradd默认情况下未定义HOME变量in ,因此useradd将始终使用/home。无论如何,我将编辑答案并移动零件进行检查/etc/passwd
Alaa Ali

这里有个例子。另一个例子:您删除了一个用户,但没有删除该用户的目录和文件。然后再次添加一个具有相同名称的用户。而且有很多,而且没有错误:)
RaduRădeanu13年

如果您不在/bin/sh用户行中/etc/passwd,则必须为该用户添加外壳程序,例如,默认外壳程序为usermod -s /bin/sh testuser
rubo77

并非所有系统都具有GNOME,建议仅删除某人以创建主目录就删除并重新添加该用户是不好的建议。
ntwrkguru

12

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

如果要创建用户的主目录(如果该目录不存在),请运行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.

8
这似乎试图创建一个新用户,因为它告诉我“用户'new-user'已经存在”。
Jo Rijo

-m无论如何,在创建新用户时,我还测试了该标志,但该标志无效。它仅复制框架文件。
Alaa Ali

@Jo:这怎么不正确,因为根据最初的帖子,该用户已经存在。
手工艺者

3
此答案不能解决问题。复制/etc/skel不会在主目录中创建子目录。另外,useradd -m在创建新用户时使用,而不是在已添加用户时使用。
Alaa Ali

我更新了帖子,因此在login.defs配置文件中将CREATE_HOME设置为yes。
手工艺者

5

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

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

sudo -i     #enter your user password when you are asked
gedit /etc/passwd

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

new_username:x:1001:1001::/home/new_username:/bin/sh

在这一行,您还可以为新用户添加真实姓名,或设置默认外壳程序。像这样:

new_username:x:1001:1001:Real New Username,,,:/home/new_username:/bin/bash

请注意,请勿进行任何其他更改。

保存文件后,要从根帐户退出,请运行以下命令:

mkdir /home/new_username                                #to create the directory /home/new_username
cp -r /etc/skel/. /home/new_username                    #to copy skeleton files to /home/new_username
chown -R new_username:new_username /home/new_username   #to change the owner of /home/new_username to the new user

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

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


据我所知,主文件夹不是自动创建的,您必须手动创建它并更新用户的条目/etc/passwd(如果尚未存在)。用户登录后,主文件夹将自动填充这些子目录。但是,所有这些工作都是在有人使用adduser而不是来添加用户的情况下进行的useradd
Alaa Ali

@Alaa我几天前刚刚测试过,并且使用过adduser:home文件夹自动创建的。实际上,首次登录后将自动填充主文件夹。
RaduRădeanu13年

这似乎无济于事。也许我会尝试另一个问题的bash脚本,但是我不能只是在/ home /中创建一个名为new_user的文件夹,然后将/ etc / skel的内容复制到其中吗?那是bash脚本的作用吗?
Jo Rijo

@JoRijo我编辑了答案。
RaduRădeanu13年

@RaduRădeanu不是cp /etc/skel/* /home/new_username吗?另外,使用两个连续chown命令是否有原因?
Alaa Ali

3

您真正需要的只是主文件夹,以使其正常运行。作为根,

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.