本篇文章為大家展示了必須掌握的Linux用戶組知識(shí)都有哪些,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為海林企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè),海林網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
在 Linux 系統(tǒng)中用戶組起著重要作用。用戶組提供了一種簡(jiǎn)單方法供一組用戶互相共享文件。用戶組也允許系統(tǒng)管理員更加有效地管理用戶權(quán)限,因?yàn)楣芾韱T可以將權(quán)限分配給用戶組而不是逐一分配給單個(gè)用戶。 |
盡管通常只要在系統(tǒng)中添加用戶賬戶就會(huì)創(chuàng)建用戶組,關(guān)于用戶組如何工作以及如何運(yùn)用用戶組還有很多需要了解的。
一個(gè)用戶一個(gè)用戶組?
Linux 系統(tǒng)中多數(shù)用戶賬戶被設(shè)為用戶名與用戶組名相同。用戶 jdoe 會(huì)被賦予一個(gè)名為jdoe 的用戶組,且成為該新建用戶組的唯一成員。如本例所示,該用戶的登錄名,用戶 id 和用戶組id 在新建賬戶時(shí)會(huì)被添加到 /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:
這些文件中的配置使系統(tǒng)得以在文本(jdoe)和數(shù)字(1066)這兩種用戶id 形式之間互相轉(zhuǎn)換—— jdoe 就是 1006,且 1006 就是jdoe 。
分配給每個(gè)用戶的 UID(用戶 id)和 GID(用戶組 id)通常是一樣的,并且順序遞增。若上例中 Jane Doe 是最近添加的用戶,分配給下一個(gè)新用戶的用戶 id 和用戶組 id 很可能都是 1067。
GID = UID?
UID 和 GID 可能不一致。例如,如果你用 groupadd 命令 添加一個(gè)用戶組而不指定用戶組 id,系統(tǒng)會(huì)分配下一個(gè)可用的用戶組 id(在本例中為 1067)。下一個(gè)添加到系統(tǒng)中的用戶其 UID 會(huì)是 1067 而 GID 則為 1068。
你可以避免這個(gè)問(wèn)題,方法是添加用戶組的時(shí)候指定一個(gè)較小的用戶組 id 而不是接受默認(rèn)值。在下面的 命令 中我們添加一個(gè)用戶組并提供一個(gè) GID,這個(gè) GID 小于用于用戶賬戶的 GID 取值范圍。
$ sudo groupadd -g 500 devops
創(chuàng)建賬戶時(shí)你可以指定一個(gè)共享用戶組,如果這樣對(duì)你更合適的話。例如你可能想把新來(lái)的開(kāi)發(fā)人員加入同一個(gè) DevOps 用戶組而不是一人一個(gè)用戶組。
$ sudo useradd -g staff bennyg $ grep bennyg /etc/passwd bennyg:x:1064:50::/home/bennyg:/bin/sh
主要用戶組和次要用戶組
用戶組實(shí)際上有兩種:主要用戶組primary group和次要用戶組secondary group。
主要用戶組是保存在 /etc/passwd 文件中的用戶組,該用戶組在賬戶創(chuàng)建時(shí)配置。當(dāng)用戶創(chuàng)建一個(gè)文件時(shí),用戶的主要用戶組與此文件關(guān)聯(lián)。
$ 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 ^ | +-------- 主要用戶組
用戶一旦擁有賬戶之后被加入的那些用戶組是次要用戶組。次要用戶組成員關(guān)系在 /etc/group 文件中顯示。
$ grep devops /etc/group devops:x:500:shs,jadep ^ | +-------- shs 和 jadep 的次要用戶組
/etc/group 文件給用戶組分配組名稱(例如 500 = devops)并記錄次要用戶組成員。
首選的準(zhǔn)則
每個(gè)用戶是他自己的主要用戶組成員,并可以成為任意多個(gè)次要用戶組成員,這樣的一種準(zhǔn)則允許用戶更加容易地將個(gè)人文件和需要與同事分享的文件分開(kāi)。當(dāng)用戶創(chuàng)建一個(gè)文件時(shí),用戶所屬的不同用戶組的成員不一定有訪問(wèn)權(quán)限。用戶必須用 chgrp 命令將文件和次要用戶組關(guān)聯(lián)起來(lái)。
哪里也不如自己的家目錄
添加新賬戶時(shí)一個(gè)重要的細(xì)節(jié)是 useradd 命令并不一定為新用戶添加一個(gè)家目錄/home家目錄。若你只有某些時(shí)候想為用戶添加家目錄,你可以在 useradd 命令中加入 -m 選項(xiàng)(可以把它想象成“安家”選項(xiàng))。
http://news.yesky.com/hotnews/192/577302692.shtml
http://www.chinaz.com/news/mt/2019/0812/1038725.shtml
https://www.ithome.com/0/438/645.htm
$ sudo useradd -m -g devops -c "John Doe" jdoe2
此命令中的選項(xiàng)如下:
-m 創(chuàng)建家目錄并在其中生成初始文件
-g 指定用戶歸屬的用戶組
-c 添加賬戶描述信息(通常是用戶的姓名)
若你希望總是創(chuàng)建家目錄,你可以編輯 /etc/login.defs 文件來(lái)更改默認(rèn)工作方式。更改或添加 CREATE_HOME 變量并將其設(shè)置為 yes:
$ grep CREATE_HOME /etc/login.defs CREATE_HOME yes
另一種方法是用自己的賬戶設(shè)置別名從而讓 useradd 一直帶有 -m 選項(xiàng)。
$ alias useradd=’useradd -m’
確保將該別名添加到你的~/.bashrc 文件或類似的啟動(dòng)文件中以使其永久生效。
深入了解 /etc/login.defs
下面這個(gè)命令可列出 /etc/login.defs 文件中的全部設(shè)置。下面的grep 命令會(huì)隱藏所有注釋和空行。
$ cat /etc/login.defs | grep -v "^#" | grep -v "^$" MAIL_DIR /var/mail FAILLOG_ENAB yes LOG_UNKFAIL_ENAB no LOG_OK_LOGINS no SYSLOG_SU_ENAB yes SYSLOG_SG_ENAB yes FTMP_FILE /var/log/btmp SU_NAME su HUSHLOGIN_FILE .hushlogin ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games TTYGROUP tty TTYPERM 0600 ERASECHAR 0177 KILLCHAR 025 UMASK 022 PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_WARN_AGE 7 UID_MIN 1000 UID_MAX 60000 GID_MIN 1000 GID_MAX 60000 LOGIN_RETRIES 5 LOGIN_TIMEOUT 60 CHFN_RESTRICT rwh DEFAULT_HOME yes CREATE_HOME yes < === USERGROUPS_ENAB yes ENCRYPT_METHOD SHA512
注意此文件中的各種設(shè)置會(huì)決定用戶 id 的取值范圍以及密碼使用期限和其他設(shè)置(如 umask)。
如何顯示用戶所屬的用戶組
出于各種原因用戶可能是多個(gè)用戶組的成員。用戶組成員身份給與用戶對(duì)用戶組擁有的文件和目錄的訪問(wèn)權(quán)限,有時(shí)候這種工作方式是至關(guān)重要的。要生成某個(gè)用戶所屬用戶組的清單,用groups 命令即可。
$ groups jdoe jdoe : jdoe adm admin cdrom sudo dip plugdev lpadmin staff sambashare
你可以鍵入不帶任何參數(shù)的 groups 命令來(lái)列出你自己的用戶組。
如何添加用戶至用戶組
如果你想添加一個(gè)已有用戶至別的用戶組,你可以仿照下面的命令操作:
$ sudo usermod -a -G devops jdoe
你也可以指定逗號(hào)分隔的用戶組列表來(lái)添加一個(gè)用戶至多個(gè)用戶組:
$ sudo usermod -a -G devops,mgrs jdoe
參數(shù) -a 意思是“添加”,-G 指定用戶組列表。
你可以編輯/etc/group 文件將用戶名從用戶組成員名單中刪除,從而將用戶從用戶組中移除。usermod 命令或許也有個(gè)選項(xiàng)用于從用戶組中刪除某個(gè)成員。
fish:x:16:nemo,dory,shark | V fish:x:16:nemo,dory
上述內(nèi)容就是必須掌握的Linux用戶組知識(shí)都有哪些,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。