以编程方式为新用户克隆 /etc/skel

Nam*_*yen 11 adduser useradd skel

/etc/skel是一个将为新用户克隆的文件夹。有没有一种可能的方法可以定义从/etc/skel文件夹复制什么的规则?

例如,我正在寻找一种方法,如果创建用户并属于名为 的组A,则克隆/etc/skel文件夹除外/etc/skel/not_for_a.txt. 可能的?

Muk*_*mar 12

请注意,该useradd命令允许您使用该-k选项指定自定义 SKEL 目录。您可以创建一个不带 的 /etc/skel-for-group-A 目录not-for-a.txt,然后添加默认组为 A 的新用户,并使用以下命令指定他们的 SKEL 目录:

useradd username -g groupA -k /etc/skel-for-group-A -m
Run Code Online (Sandbox Code Playgroud)

参考:http : //manpages.ubuntu.com/manpages/trusty/man8/useradd.8.html

  • @J.Starnes 在 `adduser` 命令中无法指定自定义 SKEL 目录,因此我们使用 `useradd`。并不完全不鼓励:“`useradd` 是用于添加用户的低级实用程序。在 Debian 上,管理员应该**通常**使用 `adduser` 代替。” 在这样的异常情况下使用此命令是可以的。 (8认同)

J. *_*nes 8

  1. 创建其他skel目录。

    sudo mkdir /etc/skel{A,B}
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将内容复制/etc/skel/etc/skelA.

    sudo cp /etc/skel/* /etc/skelA/
    
    Run Code Online (Sandbox Code Playgroud)
  3. 自定义备用 skel 目录内容。

  4. adduser没有 homedir,但具有其他正常设置。用适当的设置替换省略号。

    sudo adduser --no-create-home ... bob
    
    Run Code Online (Sandbox Code Playgroud)
  5. mkhomedir_helper 根据替代 skel 目录创建用户 homedir。

    sudo mkhomedir_helper bob /etc/skelA
    
    Run Code Online (Sandbox Code Playgroud)
sudo mkdir /etc/skel{A,B}
Run Code Online (Sandbox Code Playgroud)