Users

讓多個 UNIX 使用者共享一個 UID 的副作用是什麼?

  • December 8, 2020

我的 GNU/Linux 系統上的sys-apps/shadow包帶有一個useradd支持我之前忽略的選項的命令:--non-unique. 為了方便 shellig 從大學回家時,我為我的原始使用者名(家中的臨時名稱)創建了一個別名:

useradd --non-unique -u 1001 \
    --no-create-home --home-dir /home/casualname \
    -g 1001 -G `id casualname -G | tr ' ' ,` universityUsername

這允許我使用登錄名 universityUsername 從校園登錄,而無需創建 ~/.ssh/config 別名或為ssh. 登錄後,whoami報告我是casualname。這是因為casualname 更接近/etc/passwd 文件的頂部。

我想知道此類別名的支持範圍有多廣,以及使用它們是否有任何缺點。此外,有沒有辦法在使用者無法在 /etc/passwd 中重新排序條目的系統上選擇首選使用者別名作為代理使用者別名($USER 設置為)?

您不能有多個具有相同 UID 的使用者。如果他們有相同的 UID,那麼他們就是同一個使用者。

您擁有的是同一使用者的使用者數據庫中的多個條目。這在我見過的所有 unix 變體中都是可能的。使用者名決定了使用哪個條目,因此在登錄時應用了哪個密碼、主目錄和 shell。第一個條目確定使用者數據庫將返回哪些基於 id 的查找。一些應用程序通過名稱查找使用者數據庫(使用可能$USER),其他應用程序通過 UID;如果他們使用 UID,那麼他們將獲得第一個條目,而您對此無能為力。

這是一個可愛的設置,但它是這些可愛但大多無用的東西之一。這很不尋常:如果您有其他管理員,他們不會感謝您;許多應用程序不會費心處理這種情況,並且可能表現不佳(例如,取決於您$LOGNAME的某些功能,導致根據您登錄的使用者名使用不同的數據)。這也容易出錯:您需要使用 root 訪問權限來創建第二個條目,您需要記住在passwdor中編輯兩個條目shadow(例如更改您的密碼,這將需要 root 訪問權限,這與正常passwd呼叫不同)。只有當你有充分的理由時,你才應該這樣做。

如果您只想為 SSH 使用相同的使用者名,那麼其他人的做法就是.ssh/config. 這就是他們的目的。它設置起來更簡單,不需要更多權限,並且不會設置不尋常且可能令人困惑的配置。

對同一使用者使用多個條目的一個有用的用途是出現問題時的救援使用者。例如,一個toor帳戶(傳統名稱),其外殼是靜態連結的二進製文件,僅用於系統修復。

不推薦,因為它不是真正的別名。某些程序(例如 kerberos)通過名稱而不是 UID 來辨識使用者。

例如,以下可能有效

kinit universityUsername

但以下不保證工作

kinit casualname

除非您知道程序實際使用的是 UID 還是使用者名,否則您會混淆自己和您使用的程序,因此這不是最佳實踐。

引用自:https://unix.stackexchange.com/questions/124968