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


8

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

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

我正在寻找可以在几乎所有Linux系统(任何发行版)上使用的标准工具。


1
groupmod。我不会回答这个问题。...但是最标准的方法可能是使用文本编辑器...请记住,受影响的文件只是定界文本。
xenoterracide 2010年

有趣的是,在问这个问题之前,我从未见过如此提及直接编辑文件的内容。(以某种方式,我觉得/etc/passwd它只是复杂系统的一部分)
David Z

Answers:


9

可悲的是,这些操作都没有标准化。

某些操作系统(例如Linux)作为操作系统的一部分提供了此功能,但是即使您的Linux系统包含了这些功能,随着时间的推移以及在整个Linux发行版中,这些工具及其名称也发生了变化,因此您不能真正依靠一套标准的工具来完成此工作。这些任务。

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


我从未更改过名称...但是我更改过开关。我记得曾经发现Linux没有gpasswd -a。
xenoterracide 2010年

1
如果有内存的话-RedHat曾经使用'adduser'而不是'useradd',并且表现不同(我认为useradd更像Debianish)。他们后来使“ adduser”成为“ useradd”的符号链接。请参阅redhat.com/docs/manuals/linux/RHL-5.2-Manual/install-guide/…上的
Stefan Lasiewski 2010年

7

在Debian(和衍生)系统,adduser以及deluser更高级别的包装器useradd的相关功能。封面用户的创建,组成员资格的添加和减少以及用户的删除。明智地,来自创建/删除组的相应命令足够了,addgroup并且delgroupusermod似乎涵盖了您命名的其余用例。


6

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

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

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

等等。但是,可以将命令分为两部分:usermod; 一个名词和一个动词。此外,还可以使用groupdel

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其他用户或组的选项和参数。


这是一个Linux问题,但是无论如何该信息还是值得赞赏的。如果Linux具有这样的功能,那就太好了。
David Z

名词和动词,你的意思是。
沃伦·杨

天哪!固定它。
gvkv

2

为了完整起见,在频谱的低端,我要提到vipw(8)和vigr(8),在“ vi / etc / passwd”和“ cat> / etc / passwd”上方,但在“ useradd”下方”。哦,它们存在于大多数Unix变体中。


2

所有这些工具最终都是为您编辑文本文件而构建的。如果您想知道如何在系统上管理用户和组,则应该熟悉这些基础文本文件。幸运的是,只有两个,/etc/passwd并且/etc/group。还有分别用于隐藏passwd和group的补充文件/etc/shadow/etc/gshadow文件。


4
...和/ etc / shadow中,因为大多数系统会发牢骚,如果我是不符合的/ etc / passwd文件
codehead

1

在许多情况下,了解如何编辑“ / etc / passwd”仍然很有用。


1
知道如何读取 / etc / passwd很有用,但是直接修改它是一个坏习惯。在我使用过的某些* ix上(现代SysV,OS X ...),这些文件不是用户和组数据存储的主要位置。它们或者是出于兼容性的卷影副本,或者它们是主要来源,但是无论何时更改,都有一个数据库或索引需要更新。在这些系统上,如果您不通过官方工具更新文件,则更改不会立即生效,即使更改生效。
沃伦·杨


1

如果您使用的是默认本地计算机后端以外的后端-OpenLDAP是最常见的-那么您可能正在寻找cpu(更改密码实用程序)。如果配置正确,它可以在LDAP主服务器之外的其他计算机上运行,​​并且其语法useradd与前缀等价的大多数语法与etc 相同cpu。所以我自己可以做

$ sudo cpu useradd hamish

有关更多详细信息,请参见cpu手册页


有趣,但是仅适用于从LDAP获取用户信息的机器上的答案对我来说用途非常有限。
David Z

0

如果您的问题仅限于

任何Linux系统(任何发行版)

但是所有系统都可以通过网络访问单个服务器。您可以使用NIS或YP之类的东西。因此,此答案仅限于单个组织内的管理员。

仍然存在几乎每个发行版都有略微不同的配置YP的方式的问题,但是配置只发生一次。同样,这种类型的网络也不是简单的。

在单个站点/网络中,您将获得很多好处。与自动挂载结合使用时,我最喜欢的是能够通过SSH连接到任何* nix机器,并可以使用我的所有主文件和工具。

到目前为止,您为主服务器选择的分发是用于管理用户的系统。然后,您将只有一组工具/文档来管理用户和组。

甚至可以在主服务器上使用诸如LDAP和samba工具之类的东西。使用samba还使我可以在Windows计算机上使用我的主文件。


谢谢,但是我正在寻找一个适用于非联网系统的答案。
David Z

0

最接近的一个标准,你会得到的是vi /etc/passwdvi /etc/shadowvi /etc/groups。(可以用Heretics代替emacs。)此后发现的所有内容都只能在某些系统上运行。

认真地,找出您的操作系统具有哪些工具,然后使用它们。只是不要期望它们在所有系统上都能正常工作。如果将它们标准化,那将是很好,但事实并非如此。


使用文本编辑器来编辑工具可以并且应该为您编辑的配置文件不是一种标准。当操作系统或应用程序提供实用程序为您执行此操作时,切勿使用文本编辑器来更改配置文件。这是尤其如此/etc/passwd/etc/shadow/etc/group,和/etc/gshadow。这就是工具的用途。人类很容易出错,而工具已经过测试并且(希望)没有错误。
亚伦·托彭斯

切勿/etc/passwd直接打电话给编辑和朋友。使用vipwvigr,其中:锁定文件以防止并发版本;运行您喜欢的编辑器($VISUAL); 如果出现语法错误,请不要更改文件;在某些系统(例如FreeBSD)上,还会重新生成必须保持同步的其他文件。
吉尔斯(Gilles)“所以
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.