2012-04-05 40 views
1

是否有任何C API用於驗證用戶名?在Unix/Solaris中驗證用戶名稱

我正在接受user_name的輸入,該輸入可能不會在該時間點出現。 由於用戶名需要遵循POSIX規則,是否有任何C API可以進行驗證?

+1

參見以下問題: http://stackoverflow.com/問題/ 6949667 /什麼是真正的規則爲linux用戶名-on-centos-6-and-rhel-6 – 2012-04-05 10:23:00

回答

1

我推測你正試圖弄清楚你的系統上是否存在用戶名。爲此,您正在尋找getwpent()/getpwnam() - 查看手冊頁以瞭解詳情。

儘管這些返回的信息比您想要的還多,但getpwnam()也會(輕鬆地)告訴您是否存在與給定用戶名對應的密碼文件條目。

(如果你只是希望確保用戶名只包含有效的字符,只要確保它只包含[A-Za-z0-9_]+

+0

用戶名應該不是純數字;至少,如果用戶名稱看起來像一個數字,則可能會產生混淆(如果UID與名稱不是同一個號碼,則可能會出現混淆 - 是的,您可以這樣做;否則,您不應該這麼做!)。 – 2013-10-24 00:46:14

+0

是的,的確如此。我猜想正確的正則表達式是[A-Za-z _] [A-Za-z_0-9] * – Perry 2013-11-07 15:51:11