2013-04-25 168 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中刪除,因此您沒有孤立的信息。 (如果你編寫了自己的用戶刪除程序,你將不得不自己處理這個問題。)