uid最大值的疑問

如果您覺得您的問題不屬於 debian desktop 或是 debian server 版的範圍內,請在這裡發問。

版主: mufa

uid最大值的疑問

文章訪客 » 週一 1月 09, 2006 1:24 am

很早以前就想到,如果有一個需要實體帳號的服務,那麼那個服務的帳號不會就受到linux帳號uid的限制了嗎?
(書上說UID最大值為2^16-1),所以我也一直以為是這樣,剛剛去網路上爬了一下文,
發現linux的kernel在2.3版的時候已經加入UID32-bit的支援了,所以穩定版的 2.4版都已經可以容許2^32-1個帳號,
也就是4294967295個帳號,於是查了一下主機的核心版本是2.6.8-2-686,於是就手癢測試了一下,
先後使用adduser -u UID NAME的方式,新增了三個使用者

帳號名稱 uid
testuser 70000
testuser2 4200000000
testuser3 5000000000

分別測試登入,登入結果都ok
ls -la /home的結果如下

drwxr-xr-x 2 testuser testuser 4096 2006-01-08 19:41 testuser
drwxr-xr-x 2 4200000000 testuser2 4096 2006-01-08 19:40 testuser2
drwxr-xr-x 2 root staff 4096 2006-01-08 19:42 testuser3

打開/etc/passwd一看

testuser:x:70000:70000:root,,,:/home/testuser:/bin/bash
testuser2:x:2147483647:2147483647:root,,,:/home/testuser2:/bin/bash
testuser3:x:2147483647:2147483647:root,,,:/home/testuser3:/bin/bash

我發現,除了testuser外其他的兩個帳號都緩衝區溢滿了,這32個bit只使用了31個bit來計算,第一個bit為正負(二的補數表示法),
不知道這是bug還是有什麼特別的設計,uid應該不會有負的吧,
所以實際帳號的數量是2^31-1個也就是2147483648個

補充一下
/etc/group內容如下

testuser:x:70000:
testuser2:x:4200000000:
testuser3:x:4294967295:

後話
再另一架RH9 Kernel 2.4.22-1.2115的系統上測試結果
帳號名稱 uid
testuser 4200000000
testuser1 5000000000

testuser:x:4200000000:4200000000::/home/testuser:/bin/bash
testuser1:x:4294967295:4294967295::/home/testuser1:/bin/bash

結論
看起來這像是Debian adduser程式的問題
訪客
 

回到 debian misc

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客