您好,登錄后才能下訂單哦!
這篇“Linux用戶組如何運用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Linux用戶組如何運用”文章吧。
Linux 系統中多數用戶賬戶被設為用戶名與用戶組名相同。用戶 jdoe 會被賦予一個名為jdoe 的用戶組,且成為該新建用戶組的唯一成員。如本例所示,該用戶的登錄名,用戶 id 和用戶組id 在新建賬戶時會被添加到 /etc/passwd 和 /etc/group 文件中:
$ sudo useradd jdoe $ grep jdoe /etc/passwd jdoe:x:1066:1066:Jane Doe:/home/jdoe:/bin/sh $ grep jdoe /etc/group jdoe:x:1066:
這些文件中的配置使系統得以在文本(jdoe)和數字(1066)這兩種用戶id 形式之間互相轉換—— jdoe 就是 1006,且 1006 就是jdoe 。
分配給每個用戶的 UID(用戶 id)和 GID(用戶組 id)通常是一樣的,并且順序遞增。若上例中 Jane Doe 是最近添加的用戶,分配給下一個新用戶的用戶 id 和用戶組 id 很可能都是 1067。
GID = UID?
UID 和 GID 可能不一致。例如,如果你用 groupadd 命令添加一個用戶組而不指定用戶組 id,系統會分配下一個可用的用戶組 id(在本例中為 1067)。下一個添加到系統中的用戶其 UID 會是 1067 而 GID 則為 1068。
你可以避免這個問題,方法是添加用戶組的時候指定一個較小的用戶組 id 而不是接受默認值。在下面的命令中我們添加一個用戶組并提供一個 GID,這個 GID 小于用于用戶賬戶的 GID 取值范圍。
$ sudo groupadd -g 500 devops
創建賬戶時你可以指定一個共享用戶組,如果這樣對你更合適的話。例如你可能想把新來的開發人員加入同一個 DevOps 用戶組而不是一人一個用戶組。
$ sudo useradd -g staff bennyg $ grep bennyg /etc/passwd bennyg:x:1064:50::/home/bennyg:/bin/sh
用戶組實際上有兩種:主要用戶組primary group和次要用戶組secondary group。
主要用戶組是保存在 /etc/passwd 文件中的用戶組,該用戶組在賬戶創建時配置。當用戶創建一個文件時,用戶的主要用戶組與此文件關聯。
$ whoami jdoe $ grep jdoe /etc/passwd jdoe:x:1066:1066:John Doe:/home/jdoe:/bin/bash ^ | +-------- 主要用戶組 $ touch newfile $ ls -l newfile -rw-rw-r-- 1 jdoe jdoe 0 Jul 16 15:22 newfile ^ | +-------- 主要用戶組
用戶一旦擁有賬戶之后被加入的那些用戶組是次要用戶組。次要用戶組成員關系在 /etc/group 文件中顯示。
$ grep devops /etc/group devops:x:500:shs,jadep ^ | +-------- shs 和 jadep 的次要用戶組
/etc/group 文件給用戶組分配組名稱(例如 500 = devops)并記錄次要用戶組成員。
每個用戶是他自己的主要用戶組成員,并可以成為任意多個次要用戶組成員,這樣的一種準則允許用戶更加容易地將個人文件和需要與同事分享的文件分開。當用戶創建一個文件時,用戶所屬的不同用戶組的成員不一定有訪問權限。用戶必須用 chgrp 命令將文件和次要用戶組關聯起來。
添加新賬戶時一個重要的細節是 useradd 命令并不一定為新用戶添加一個家目錄/home家目錄。若你只有某些時候想為用戶添加家目錄,你可以在 useradd 命令中加入 -m 選項(可以把它想象成“安家”選項)。
$ sudo useradd -m -g devops -c "John Doe" jdoe2
此命令中的選項如下: -m 創建家目錄并在其中生成初始文件 -g 指定用戶歸屬的用戶組 -c 添加賬戶描述信息(通常是用戶的姓名) 若你希望總是創建家目錄,你可以編輯 /etc/login.defs 文件來更改默認工作方式。更改或添加 CREATE_HOME 變量并將其設置為 yes:
$ grep CREATE_HOME /etc/login.defs CREATE_HOME yes
另一種方法是用自己的賬戶設置別名從而讓 useradd 一直帶有 -m 選項。
$ alias useradd=’useradd -m’
確保將該別名添加到你的~/.bashrc 文件或類似的啟動文件中以使其永久生效。
下面這個命令可列出 /etc/login.defs 文件中的全部設置。下面的grep 命令會隱藏所有注釋和空行。
$ cat /etc/login.defs | grep -v "^#" | grep -v "^$"MAIL_DIR /var/mailFAILLOG_ENAB yesLOG_UNKFAIL_ENAB noLOG_OK_LOGINS noSYSLOG_SU_ENAB yesSYSLOG_SG_ENAB yesFTMP_FILE /var/log/btmpSU_NAME suHUSHLOGIN_FILE .hushloginENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/gamesTTYGROUP ttyTTYPERM 0600ERASECHAR 0177KILLCHAR 025UMASK 022PASS_MAX_DAYS 99999PASS_MIN_DAYS 0PASS_WARN_AGE 7UID_MIN 1000UID_MAX 60000GID_MIN 1000GID_MAX 60000LOGIN_RETRIES 5LOGIN_TIMEOUT 60CHFN_RESTRICT rwhDEFAULT_HOME yesCREATE_HOME yes
注意此文件中的各種設置會決定用戶 id 的取值范圍以及密碼使用期限和其他設置(如 umask)。
出于各種原因用戶可能是多個用戶組的成員。用戶組成員身份給與用戶對用戶組擁有的文件和目錄的訪問權限,有時候這種工作方式是至關重要的。要生成某個用戶所屬用戶組的清單,用groups 命令即可。
$ groups jdoe jdoe : jdoe adm admin cdrom sudo dip plugdev lpadmin staff sambashare
你可以鍵入不帶任何參數的 groups 命令來列出你自己的用戶組。
如果你想添加一個已有用戶至別的用戶組,你可以仿照下面的命令操作:
$ sudo usermod -a -G devops jdoe
你也可以指定逗號分隔的用戶組列表來添加一個用戶至多個用戶組:
$ sudo usermod -a -G devops,mgrs jdoe
參數 -a 意思是“添加”,-G 指定用戶組列表。
你可以編輯/etc/group 文件將用戶名從用戶組成員名單中刪除,從而將用戶從用戶組中移除。usermod 命令或許也有個選項用于從用戶組中刪除某個成員。
fish:x:16:nemo,dory,shark | V fish:x:16:nemo,dory
以上就是關于“Linux用戶組如何運用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。