
我正在將硬碟安裝到我的 Ubuntu 盒子上/media/newhdd
,其中前掛載有以下權限:
drwxr-xr-x 2 root team 4096 Jan 19 17:26 newhdd
drwxr-x---+ 2 root root 4096 May 14 2020 oem
我已經把組改成team
組了。後然而,我看到的是:
drwx------ 4 29999 29999 4096 Jan 19 19:48 newhdd
drwxr-x---+ 2 root root 4096 May 14 2020 oem
這些數字是什麼意思?為什麼權限會改變?
訊息:我正在安裝sudo mount /dev/sda /media/newhdd
.
答案1
不,權限沒有改變。您的本機 UID/GID 分配與設定權限的系統的分配不匹配,只是您的系統顯示它們不同。但磁碟上的權限仍然是正確的,如果您將儲存空間移至設定這些權限的系統,它將按預期顯示它們。
每個系統都有自己的一組 ID。一般來說,它們是在需要時按需分配的。例如,當您建立一個群組時,系統會為其指派一個 GID 並將指派儲存到/etc/group
(預設)。類似地,當您建立使用者時,系統會為其分配一個 UID 並將分配儲存到/etc/passwd
.
系統帳戶沒有太大區別。發行版之間存在差異;例如,某些發行版可能會為某些應用程式「靜態分配」一些 UID 和 GID;這些分配在系統安裝時不會被存儲,但是當您安裝需要自己帳戶的軟體時,安裝程式會使用預先定義的 UID/GID 為它們建立帳戶。其他發行版(Gentoo)甚至不這樣做;如果需要,UID 和 GID 會在首次安裝軟體時重新分配。
有一些定義池的設置,從中分配這些 UID 和 GID。裡面的那些台詞/etc/adduser.conf
就是其中之一,但還有其他的;例如,我的系統沒有 /etc/adduser.conf,但我有/etc/default/useradd
.您可以透過提供特定的 ID 在帳戶建立時覆蓋該設置,如下所示:useradd -u 1100 -G users newuser
將建立 UID 1100 的用戶,無論任何配置的範圍如何。
因此,不同系統的 UID/GID 對應的名稱幾乎總是不同的。這在很大程度上取決於系統的歷史:它是哪個發行版;軟體已安裝以及安裝順序;創建了哪些用戶以及創建的順序等等。關於「任何」Linux 系統,我們可以說的唯一事實是使用者root
始終具有 UID 0
,而群組root
始終具有 GID 0
。
例如,如果我安裝兩個相同的 Ubuntu,然後首先在一個用戶“alice”上創建,它的 UID 可能為 1000,然後是“bob”,其 UID 可能為 1001;在另一個系統上,我首先創建“bob`,將獲得 1000,然後創建“alice”,她將獲得 1001。
另一方面,檔案系統不儲存使用者名稱和群組名稱;而是儲存使用者名稱和群組名稱。它們儲存號碼、UID 和 GID。擴展前面的範例,如果我在第一個系統上建立一個檔案並使其所有者為“alice”,則她的 UID 1000 將寫入檔案系統元資料中。如果我將儲存媒體移至第二台電腦並存取該文件,「bob」將顯示為其擁有者,因為文件在元資料中的UID 為1000,而在第二台電腦上,該UID 對應於「 bob」。
如果沒有分配UID怎麼辦?別擔心,作業系統本身並不關心名稱,它只使用 ID,並且名稱僅由用戶空間翻譯。當/etc/passwd
和中沒有分配使用者空間工具時,使用者空間工具通常只顯示「數字」ID /etc/group
。
Windows 系統沒有太大差別。它有一個單一的 ID“編號域”,稱為 RID,用戶和群組安全標識符均從中獲取(Linux 分別計算 UID 和 GID)。第一個本機使用者的 RID 通常為 500。分配儲存在 SAM 資料庫中。
這就帶來了一個非常重要的問題:如何集中管理一組電腦、儲存的可轉移等等?有幾種解決方案。迄今為止最常用的一種是擁有一個管理分配的中央系統,所有連接的系統都從中查詢分配。在本機系統上,那些指派的 ID 通常會對應到某個「ID 域」。例如,MS Active Directory 總是有一個具有活動 FSMO 角色的網域控制站RID master
;這正是管理域中所分配的系統。 (如果你想得更多,你就會得到為什麼此角色被設為 FSMO,即「單一主操作」角色。但是,如果媒體被移出域,則將出現所描述的損壞對映的所有影響。 Linux系統也可以使用集中分配,有NIS,甚至MS AD控制器可以為加入AD域的Linux系統分配UID/GID。
答案2
看來這是一個動態生成的 UID,它從以下位置選擇此類 id 的上限/etc/adduser.conf
:
# FIRST_[GU]ID to LAST_[GU]ID inclusive is the range of UIDs of dynamically
# allocated user accounts/groups.
FIRST_UID=1000
LAST_UID=29999