如何在不指定的情况下将新用户添加到组中?

Sae*_*eed 3 linux user-accounts

我对此进行了一些谷歌搜索(可能是不正确的关键字),但我没有找到如何做到这一点。

考虑以下命令:

useradd -s /bin/bash -m user1
useradd -s /bin/bash -m user2
useradd -s /bin/bash -m user3
Run Code Online (Sandbox Code Playgroud)

我希望以这种方式创建的任何新用户也可以添加到名为 的组中test,但不需要每次运行时都指定它useradd。我希望这种情况默认发生。

我的意思是创建后user1,当我运行时grep user1 /etc/group,它应该分为两组:testuser1

那可能吗?我正在使用 CentOS。

ter*_*don 5

是的,您可以设置创建新用户后要执行的默认操作。诚然,这是相当间接地记录在man useradd接近尾部的“文件”部分中:

/etc/shadow-maint/useradd-pre.d/ , /etc/shadow-maint/useradd-post.d/

在用户添加期间执行的运行部分文件。环境变量ACTION将使用 useradd 填充,而SUBJECT将使用username填充。useradd-pre.d 将在添加任何用户之前执行。useradd-post.d 将在用户添加后执行。如果脚本以非零值退出,则执行将终止。

这意味着放置在该/etc/shadow-maint/useradd-post.d/目录中的任何脚本都将在创建新用户后执行。在这些脚本中,对环境变量的任何使用都$SUBJECT将替换为新创建的用户名。现在,run-parts有点奇怪,需要非常具体的命名方案。但是,就您而言,由于您想要的只是一个脚本,因此将其命名为01groups. 因此,首先创建目录:

sudo mkdir -p /etc/shadow-maint/useradd-post.d/
Run Code Online (Sandbox Code Playgroud)

接下来,创建一个包含以下内容的文本文件:

sudo mkdir -p /etc/shadow-maint/useradd-post.d/
Run Code Online (Sandbox Code Playgroud)

确保该test组存在。如果没有,请先使用 来创建它sudo groupadd test

最后,将该文件另存为/etc/shadow-maint/useradd-post.d/01groups并使其可执行:

sudo chmod a+x /etc/shadow-maint/useradd-post.d/01groups
Run Code Online (Sandbox Code Playgroud)

就是这样。如果您现在创建一个新用户,该用户也将被添加到您的额外组中。例如,我使用以下命令在我的系统上测试了它:

sudo useradd -d /home/bib1 -m -s /bin/bash bib1
Run Code Online (Sandbox Code Playgroud)

进而:

$ grep bib1 /etc/group
test:x:1003:bib1
bib1:x:1004:
Run Code Online (Sandbox Code Playgroud)

如您所见,新用户已自动添加到额外test组中。请注意,现在添加到系统的所有用户都会发生这种情况useradd。这可能不是最好的主意。