用于管理用户和组的标准 CLI 程序是什么?

用于管理用户和组的标准 CLI 程序是什么?

我基本上是从命令行询问用户管理(例如,在没有可用图形工具的系统上)。过去,我使用过几种不同的程序来添加或删除用户和组,或者修改它们的属性:adduseruseraddusermodgpasswd,也许还有其他我已经忘记的程序。我还曾多次听说其中一些程序是低级的,应该避免用于一般用途,但我永远不记得是哪些程序。因此,我想得到一个明确的答案,即哪些程序是推荐用于至少以下任务的程序:

  • 创建一个新用户
  • 将用户添加到组
  • 从组中删除用户
  • 更改用户的主要组
  • 更改用户的登录 shell 或主目录
  • 删除用户

我正在寻找标准工具,我希望这些工具可以在几乎任何 Linux 系统(任何发行版)上使用。

答案1

遗憾的是,这些操作都没有标准化。

有些操作系统作为操作系统的一部分提供此功能,例如 Linux,但即使您的 Linux 系统包含它们,随着时间的推移,跨 Linux 发行版,工具及其名称也会发生变化,因此您不能真正依赖一组标准工具来完成任务那些任务。

您需要有一套针对每个操作系统的工具。

答案2

在 Debian(及其派生)系统上,adduserdeluser是相关功能的更高级别包装器useradd。涵盖用户创建、组成员添加和删除以及用户删除。显然,创建/删除组的相应命令是addgroupdelgroupusermod似乎涵盖了您命名的其余用例。

更新:这些是标准命令(示例):

>useradd -m  john
-m = creates home directory

>userdel -r john
-r = removes home directory

>groupadd devs

>groupdel devs

>usermod -a -G devs john
-a = append
-G = group name

>id john
lists the users id and group ids
>groups john
lists the users groups

>passwd john
will ask you for current password and new password

>sudo passwd john
will ask you for only new password

>sudo passwd -l john
will lock the user out

>sudo passwd -a -G sudo john
or
>sudo passwd -a -G wheel john
or
>sudo nano /etc/sudoders
different OS variants, adds user to the sudo group
wheel = CENTOS/RHEL

答案3

您在问题的最后部分提到了 Linux,但由于标题是通用的,我将回答 FreeBSD。

FreeBSD 具有与 Linux 类似的命令,但它们是传递给pw实用程序的命令:

pw useradd [user|uid] ...
pw usermod [user|uid] ...

等等。然而,我们可以将命令解析为两部分:usermod;一个名词和一个动词。此外,还可以使用groupand del

pw groupdel [group|gid] ...

例如,删除一个组。所以这就是我认为非常酷的: 顺序并不重要,间距也不重要! 这意味着,您可以通过思考您想要做什么来记住要调用什么(无论如何都是英语):

pw del user [user|uid] ...
pw mod group [group|gid] ...
pw show user [user|uid] ...
pw next user [user|uid] ...

和更多!该pw实用程序还允许您锁定和解锁帐户:

pw lock [user|uid] ...
pw unlock [user|uid] ...

您传递的选项和任何参数都是标准化的(尽管并不总是适用于调用命令),因此可以最大限度地减少记忆。总而言之,这是一种很好的做事方式。

注意:以上示例中的省略号表示传递给pw非其他用户或组的选项和参数。

答案4

所有这些工具最终都是为您编辑文本文件而构建的。如果您想了解如何通过系统管理用户和组,您应该熟悉这些底层文本文件。对你来说幸运的是,只有两个,/etc/passwd并且/etc/group。还有分别用于隐藏 passwd 和组的补充文件/etc/shadow和文件。/etc/gshadow

相关内容