2013-04-25 175 views
0

假设节点以root权限运行,我如何:管理本地用户帐户

  • 添加新的本地(OS)的用户帐户,并获得它的UID?
  • 按名称删除帐户?

这些帐户将用于守护程序进程,因此它们不需要是完整的用户帐户。

在Linux上这样做是优先考虑的事情,在OS X上这样做会很好,而且支持Windows也会带来额外奖励。

在Linux上,我想你可能会产生useradd,但是如何确定新用户的uid?直接修改/etc/passwd和朋友是否会更好(或更糟糕)?

在Windows上,它看起来像NetUserAdd是正确的地方;有人已经写了一个插件来调用它?

回答

0

这是一个很大的问题(MacOS,Windows,Linux都在一起),但要create a new user from the command line on the Macintosh is not trivialwould require you to be authenticated as root/admin

+0

而且我不确定如何在Linux和/或Windows端执行此操作。也许你可以将你的问题重新分成三个问题,每个架构一个,并描述你到目前为止试过的尝试或代码? – 2013-04-25 03:59:57

+0

如果用户帐户不需要真正以交互方式登录,但仅用作'setuid'的目标,它在OS X上更容易吗? – josh3736 2013-04-25 04:33:33

1

对于Linux,一旦您创建了useradd的帐户,您可以拨打getent passwd <username>查看所有主要相关帐户的详细信息,包括在第3个字段中的uid。

实施例:

# useradd -c "Jamie Carter" jamiec

# getent passwd jamiec

收率:

jamiec:X:2722:500:杰米卡特:/家/ jamiec:/ bin中/假

为了在一个班轮中抓取uid,你可以结合cut命令抓住第3场,同时将:a S上的分隔符:

$ getent passwd jamiec | cut -d: -f 3

一般来说它是更安全,更容易不操纵的/ etc/passwd文件直接和朋友。你需要做的大部分事情可能已经在某个系统命令中。例如,userdel <username>将从/ etc/passwd中按名称删除一个帐户,但也会将用户从/ etc/groups中删除,因此您没有孤立的信息。 (如果你编写了自己的用户删除程序,你将不得不自己处理这个问题。)