AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 63764
Accepted
cd1
cd1
Asked: 2009-09-10 06:33:03 +0800 CST2009-09-10 06:33:03 +0800 CST 2009-09-10 06:33:03 +0800 CST

创建用户后创建主目录

  • 772

我创建了一些用户:

$ useradd john

我忘了指定参数-m来创建主目录并将骨架文件复制给每个用户。现在我想这样做,并且我不想重新创建所有用户(必须有更简单的方法)。那么,有没有办法创建用户目录和复制骨架文件呢?

我考虑过创建目录,将它们分配给相应的用户,复制所有骨架文件并将它们分配给相应的用户。但是如果有这样的命令useradd -m不会再次创建用户,而是创建目录,那就更好了。

linux
  • 12 12 个回答
  • 224888 Views

12 个回答

  • Voted
  1. Rahul Patil
    2013-05-17T19:59:21+08:002013-05-17T19:59:21+08:00

    你也可以使用mkhomedir_helper

    Usage: /sbin/mkhomedir_helper <username> [<umask> [<skeldir>]]
    
    • 135
  2. math
    2012-05-13T08:14:42+08:002012-05-13T08:14:42+08:00

    您将需要手动创建用户目录。这需要三个步骤:

    1. 创建符合 的目录/etc/passwd,通常已经有一个 /home/login 条目。
    2. 从 /etc/skel 复制初始文件
    3. 最后设置正确的权限:

      • mkdir /home/YOU
      • cd /home/YOU
      • cp -r /etc/skel/. .
      • chown -R YOU.YOURGROUP .
      • chmod -R go=u,go-w .
      • chmod go= .

    顺便说一句:我也总是想念-museradd 的选项。至少基于 Debian 的系统应该有一个adduser命令,我建议使用 useradd。如果您错过了-m选项,也可能值得考虑deluser,然后使用适当的选项重新创建用户。

    编辑:添加-r用于复制目录。

    • 21
  3. Best Answer
    dotwaffle
    2009-09-10T07:02:07+08:002009-09-10T07:02:07+08:00

    这可能听起来像一个愚蠢的想法,但如果用户实际上没有做任何事情,你可以这样做:

    cat /etc/passwd | cut -f 1 -d : >/tmp/users.list

    然后编辑 /tmp/users.list 以仅包含您想要的用户。然后做:

    
    for i in `cat /tmp/users.list`
    do
        userdel $i
        useradd -m $i
    done
    

    但是,许多基于 Redhat 的发行版会在您第一次登录时为您创建一个新的主目录,前提是它在 /etc/passwd 中指定的目录应该在哪里。

    要对此进行测试,请执行“su -”并查看它是否“正确”。如果没有,我认为上面的脚本会很好地工作。

    • 17
  4. David Rickman
    2009-09-10T06:49:59+08:002009-09-10T06:49:59+08:00
    mkdir -p /home/john
    chown john:john /home/john
    usermod -d /home/john john
    

    我相信这应该可以解决问题

    • 14
  5. jgoldschrafe
    2012-05-13T08:29:34+08:002012-05-13T08:29:34+08:00

    您可以使用诸如pam_mkhomedir 之类的东西来防止这在将来成为任何用户的问题。pam_mkhomedir 是一个 PAM 模块,如果用户的主目录不存在,它会在登录时自动创建它,并使用 /etc/skel(或您指定的任何 skel 目录)中的文件填充它。

    这也是一种很好的可扩展方法,因为如果您将来将用户存储库切换到像 LDAP 这样的目录服务,它将继续解决这个问题。

    • 10
  6. S P Arif Sahari Wibowo
    2012-10-09T08:45:44+08:002012-10-09T08:45:44+08:00

    就我而言,主卷已损坏,我决定从头开始重建它,因为涉及的数据不多,但我想保留用户的登录信息,因此我使用此脚本手动重新创建了主目录:

    #!/bin/bash
    cat /etc/passwd | while IFS=: read n x i g c d r
    do
      # my system has uid started at 1000, but has nfsnobody at 65534:
      if [[ "$i" -ge 1000 && "$i" -le 65000 && ! -x "$d" ]]
      then
        cp -av /etc/skel "$d"
        chown -R "$i:$g" "$d"
        # may needed in SELinux system:
        restorecon -R "$d"
        # add your chmod as your need:
        chmod -R o-rw "$d"
      fi
    done
    
    • 4
  7. Jenny D
    2013-12-13T00:28:07+08:002013-12-13T00:28:07+08:00

    如果您编辑/etc/login.defs包含

    CREATE_HOME yes
    

    然后将自动为任何未来的用户创建主目录,除非您告诉系统不要这样做。

    另一种选择是使用 PAM 登录,并使用 pam_mkhomedir 模块在第一次登录时自动创建 homedir。

    • 2
  8. Pedro José Piquero Plaza
    2018-02-08T11:44:19+08:002018-02-08T11:44:19+08:00

    使用用户 john 登录并从 shell 写入:

    xdg-user-dirs-update
    

    而已!不要使用 sudo 或 su,你不需要 root 权限来创建一些目录。从 root 帐户,您可以使用:

    sudo -u john xdg-user-dirs-update
    

    这样,您将以 john 的身份执行命令,如果您对多个用户犯了错误,这将很有用。

    • 1
  9. warren
    2009-09-10T06:35:55+08:002009-09-10T06:35:55+08:00

    我做 a 后的第一步useradd是su - <user>.

    创建主目录、复制骨架等——至少在我最常这样做的 CentOS 4 机器上。

    • 0
  10. Amandasaurus
    2015-06-19T00:43:46+08:002015-06-19T00:43:46+08:00

    这正是该mkhomedir_helper $USERNAME命令的作用。

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve