我基本上是从命令行询问用户管理(例如,在没有可用图形工具的系统上)。过去,我使用过几种不同的程序来添加或删除用户和组,或者修改它们的属性:adduser
、useradd
、usermod
、gpasswd
,也许还有其他我已经忘记的程序。我还曾多次听说其中一些程序是低级的,应该避免用于一般用途,但我永远不记得是哪些程序。因此,我想得到一个明确的答案,即哪些程序是推荐用于至少以下任务的程序:
- 创建一个新用户
- 将用户添加到组
- 从组中删除用户
- 更改用户的主要组
- 更改用户的登录 shell 或主目录
- 删除用户
我正在寻找标准工具,我希望这些工具可以在几乎任何 Linux 系统(任何发行版)上使用。
答案1
遗憾的是,这些操作都没有标准化。
有些操作系统作为操作系统的一部分提供此功能,例如 Linux,但即使您的 Linux 系统包含它们,随着时间的推移,跨 Linux 发行版,工具及其名称也会发生变化,因此您不能真正依赖一组标准工具来完成任务那些任务。
您需要有一套针对每个操作系统的工具。
答案2
在 Debian(及其派生)系统上,adduser
和deluser
是相关功能的更高级别包装器useradd
。涵盖用户创建、组成员添加和删除以及用户删除。显然,创建/删除组的相应命令是addgroup
和delgroup
。usermod
似乎涵盖了您命名的其余用例。
更新:这些是标准命令(示例):
>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] ...
等等。然而,我们可以将命令解析为两部分:user
和mod
;一个名词和一个动词。此外,还可以使用group
and 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