2012-06-01 32 views

回答

1

此錯誤由pam_unix模塊中在下面的代碼(:Linux的PAM-0.99.5源):觸發

if (name == NULL || !isalnum(*name)) 

name == NULL的將由編程錯誤在使用PAM的觸發協議,其中用戶名變量未被設置爲pam會話的一部分。

的第二個原因,並且可能是最有趣的是,用戶名的第一個字符需要爲α-NUM即字符必須是A-Z一個,a-z0-9。重音字符不被接受。

的Linux-PAM的較新版本(從fedorahosted source of pam_unix.c看出)表示:

if (name == NULL || name[0] == '-' || name[0] == '+') 

這意味着它僅拒絕-+字符 - 即,它是比舊的源不太嚴格。

+0

您可以請我指向包含此代碼的文檔或鏈接。 –

+0

它實際上在Linux-PAM的源代碼中(https://fedorahosted.org/linux-pam/browser) - 儘管在最新的源代碼中它只拒絕'+'和' - ' - https://fedorahosted.org/ linux-pam/browser/modules/pam_unix/pam_unix_auth.c#L131 – Petesh

+0

非常感謝Petesh :) –