我用 Google 搜索了一下这个(可能是关键字不正确),但我没有找到如何做到这一点。
考虑以下命令:
useradd -s /bin/bash -m user1
useradd -s /bin/bash -m user2
useradd -s /bin/bash -m user3
我希望以此方式创建的任何新用户也能被添加到名为的组中test
,但不需要在每次运行时都指定它useradd
。我希望这默认发生。
我的意思是创建之后user1
,当我运行时grep user1 /etc/group
,它应该分为两组:test
和user1
。
这可能吗?我正在使用 CentOS。
答案1
是的,您可以设置在创建新用户后执行的默认操作。诚然,这一点在文件man useradd
末尾的 FILES 部分中进行了间接记录:
/etc/shadow-maint/useradd-pre.d/,/etc/shadow-maint/useradd-post.d/
在添加用户期间执行的运行部分文件。环境变量行动将填充 useradd 和主题与用户名. 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/
接下来,创建一个包含以下内容的文本文件:
#!/bin/sh
usermod -a -G test "$SUBJECT"
确保该test
组存在。如果不存在,请先使用 创建它sudo groupadd test
。
最后,将该文件另存为/etc/shadow-maint/useradd-post.d/01groups
并使其可执行:
sudo chmod a+x /etc/shadow-maint/useradd-post.d/01groups
就是这样。如果您现在创建一个新用户,该用户也将添加到您的额外组中。例如,我使用以下命令在我的系统上进行了测试:
sudo useradd -d /home/bib1 -m -s /bin/bash bib1
进而:
$ grep bib1 /etc/group
test:x:1003:bib1
bib1:x:1004:
如您所见,新用户已自动添加到额外test
组。请注意,现在将发生这种情况全部通过 添加用户到系统useradd
。这可能不是最好的主意。
答案2
我不知道你为什么要这样做,但这是一种方法。我认为最简单的方法是扩展变量$PATH
。所以在 bash 中你可以这样做(请替换路径):
export PATH="/home/user1/myscripts:$PATH"
.bashrc
将其放在或的末尾.bash_profile
。
然后将一个名为的脚本放在文件夹useradd
中myscripts
。您必须编写一个简短的脚本来执行您想要的操作。useradd
使用绝对路径调用原始二进制文件。
另一种方法是用 bash 脚本替换原始useradd
二进制文件并重命名。您可以运行
which useradd
看看它在哪里。但你的系统可能会变得不稳定。我建议使用第一种方法。