一、用戶和組
Linux系統(tǒng)是一個多用戶多任務的分時操作系統(tǒng)脱惰,任何一個要使用系統(tǒng)資源的用戶搏嗡,都必須首先向系統(tǒng)管理員申請一個賬號,然后以這個賬號的身份進入系統(tǒng)。
用戶的賬號一方面可以幫助系統(tǒng)管理員對使用系統(tǒng)的用戶進行跟蹤采盒,并控制他們對系統(tǒng)資源的訪問旧乞;另一方面也可以幫助用戶組織文件,并為用戶提供安全性保護纽甘。
用戶在系統(tǒng)中是分角色的良蛮,在Linux系統(tǒng)中,由于角色的不同悍赢,權限和所完成的任務也不同决瞳;值得注意的是用戶的角色是通過UID和GID識別的;特別是UID左权,在運維工作中皮胡,一個UID是唯一標識一個系統(tǒng)用戶的賬號。每個用戶賬號都擁有一個惟一的用戶名和各自的口令赏迟。
1-1屡贺、用戶和組類別說明
Linux用戶的角色分為3類:
- 管理員:uid為0(root用戶)
- 普通用戶: uid在1-65535之間
- 系統(tǒng)用戶:uid在1-499之間。與真實用戶區(qū)分開來锌杀,這類用戶的最大特點是安裝系統(tǒng)后默認就會存在的甩栈,且默認情況不能登錄系統(tǒng),它們是系統(tǒng)正常運行必不可少的糕再,它們的存在主要是方便系統(tǒng)管理量没,滿足相應的系統(tǒng)進程都文件屬主的要求。例如系統(tǒng)默認的bin突想、adm殴蹄、nodoby、mail用戶等猾担。由于服務器角色的不同袭灯,有部分用不到的系統(tǒng)服務被禁止開機執(zhí)行,因此绑嘹,在做系統(tǒng)安全優(yōu)化時稽荧,被禁止開機啟動了的服務對應的虛擬用戶也是可以處理掉的(刪除或注釋)。工腋。
- 真實用戶:uid在500-65535之間姨丈。這類用戶一般是由具備系統(tǒng)管理員root的權限的運維人員添加的。
組是權限的容器夷蚊,用戶組分類:
- 管理員組:root用戶所在組
- 公有組:也稱普通組/附加組,可以加入多個用戶
- 私有組:也稱基本組/初始組髓介,當創(chuàng)建用戶時,如果沒有為其指明所屬組,則就為其定義一個私有的用戶組,起名稱與用戶名同名惕鼓。
注:私有組可以變成公有組,當把其他用戶加入到該組中,則其就變成了公有組
用戶和用戶組的對應關系:
- 一對一:即一個用戶可以存在一個組中,也可以是組中的唯一成員唐础。比如箱歧,root矾飞。
- 一對多:即一個用戶可以存在多個組中,這個用戶就具有這些組呀邢。
- 多對一:即多個用戶可以存在一個組中洒沦,這些用戶這些組的共同權限。
- 多對多:即多用戶可以存在于多個組中价淌。并且?guī)讉€用戶可以歸屬相同的組申眼;其實多對多的關系是前面三條的擴展。
1-2蝉衣、用戶和組相關文件
/etc/passwd: #用戶的配置文件括尸, 保存用戶賬戶的基本信息
/etc/shadow #用戶影子口令文件
/etc/group #用戶組配置文件
/etc/gshadow #用戶組的影子文件
- /etc/passwd文件:每行定義一個用戶賬號,有多少行就表示多少個賬號病毡,在一行中可以清晰的看出濒翻,各內容之間又通過”:”號劃分了7個字段,這7個字段分別定義了賬號的不同屬性啦膜,passwd文件實際內容如下:
[root@docker200 ~]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
在passwd文件中有送,第一行內容就是超級用戶root行,可以看到它的uid和gid都為0.為了方便理解僧家,下面是各字段的描述:
字段1:帳號名雀摘,這是用戶登陸時使用的賬戶名稱,在系統(tǒng)中是唯一的啸臀,不能重名届宠。
字段2:密碼占位符x;早期的unix系統(tǒng)中乘粒,該字段是存放賬戶和密碼的豌注,由于安全原因,后來把這個密碼字段內容移到/etc/shadow中了灯萍。這里可以看到一個字母x轧铁,表示該用戶的密碼是/etc/shadow文件中保護的。
字段3:UID旦棉;范圍是0-65535齿风。
字段4:GID;范圍是0-65535绑洛;當添加用戶時救斑,默認情況下會同時建立一個與用戶同名且UID和GID相同的組。
字段5:用戶注釋說明真屯;這個字段是對這個賬戶的說明脸候。
字段6:宿主目錄;用戶登陸后首先進入的目錄,一般與"/home/用戶名"這樣的目錄运沦。
字段7:登錄Shell 當前用戶登陸后所使用的shell泵额,在centos/rhel系統(tǒng)中,默認的shell是bash携添;如果不希望用戶登陸系統(tǒng)嫁盲,可以通過usermod或者手動修改passwd設置,將該字段設置為/sbin/nologin 即可烈掠。大多數(shù)內置系統(tǒng)賬戶都是/sbin/nologin,這表示禁止登陸系統(tǒng)羞秤。這是出于安全考慮的。
- /etc/shadow:由于passwd文件必須要被所有的用戶讀向叉,所以會帶來安全隱患锥腻。而shadow文件就是為了解決這個安全隱患而增加的。
來看一下/etc/shadow的權限:
[root@docker200 ~]# ls -l /etc/shadow
----------. 1 root root 1059 4月 11 14:13 /etc/shadow
文件內容:
[root@docker200 ~]# head -5 /etc/shadow
root:$6$jmM2rFzPCFbmqBkf$oz3AUooR3qaV5uXU67HcXlYiE3hNf0sSsunk1eBTDPrGUOM1xYCyesGoj.ZLTIzdiXEdrnnqNyC5g8SsRnxQm.:16338:0:99999:7:::
bin:*:15615:0:99999:7:::
daemon:*:15615:0:99999:7:::
adm:*:15615:0:99999:7:::
lp:*:15615:0:99999:7:::
和/etc/passwd一樣母谎,shadow文件的每一行內容瘦黑,也是以冒號(:)作為分隔符,共9個字段奇唤,其各個字段的意義如下表:
字段1:帳號名稱
字段2:加密的密碼
字段3:最近更改密碼的時間幸斥;從1970/1/1到上次修改密碼的天數(shù)
字段4:禁止修改密碼的天數(shù);從1970/1/1開始咬扇,多少天之內不能修改密碼甲葬,默認值為0
字段5:用戶必須更改口令的天數(shù);密碼的最長有效天數(shù)懈贺,默認值為99999
字段6:警告更改密碼的期限经窖;密碼過期之前警告天數(shù),默認值為7梭灿;在用戶密碼過期前多少天提醒用戶更改密碼
字段7:不活動時間画侣;密碼過期之后賬戶寬限時間 3+5;在用戶密碼過期之后到禁用賬戶的天數(shù)
字段8:帳號失效時間堡妒,默認值為空配乱;從1970/1/1日起,到用戶被禁用的天數(shù)
字段9:保留字段(未使用)皮迟,標志
密碼過期:一旦超過密碼過期日期搬泥,用戶成功登陸,Linux會強迫用戶設置一個新密碼伏尼,設置完成后才開啟Shell程序
賬戶過期:若超過賬戶過期日期忿檩,Linux會禁止用戶登陸系統(tǒng),即使輸入正確密碼爆阶,也無法登陸
- /etc/group:文件是用戶組的配置文件燥透,也就是記錄GID與用戶組的文件代赁,內容包括用戶與用戶組,并且能顯示用戶歸屬哪個用戶組兽掰,因為一個用戶可以歸屬一個或多個不同的用戶組;同一用戶組的用戶之間具有相似的特性徒役。如果某個用戶下有對系統(tǒng)管理有最重要的內容孽尽,最好讓用戶擁有獨立的用戶組,或者是把用戶下的文件的權限設置為完全私有忧勿;另外root用戶組一般不要輕易把普通用戶加入進入杉女。/etc/group文件同/etc/passwd類似,其文件權限也是644:
[root@docker200 ~]# ls -l /etc/group
-rw-r--r--. 1 root root 832 4月 11 14:13 /etc/group
/etc/group的文件內容為:
[root@docker200 ~]# head -5 /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
group文件各個字段的詳細說明:
字段1:組賬戶名稱鸳吸。
字段2:密碼占位符x熏挎;通常不需要設置該密碼,由于安全原因晌砾,該密碼被記錄在/etc/gshadow中坎拐,因此顯示為'x'。這類似/etc/shadow养匈。
字段3:組賬戶GID號,用戶組ID哼勇。
字段4:本組的成員用戶列表;加入這個組的所有用戶賬號呕乎。
- /etc/gshaow是/etc/group的加密文件积担,比如用戶組的管理密碼就是存放在這個文件。/etc/group和/etc/gshadow是互補的兩個文件猬仁;比如大型服務器帝璧,針對很多用戶和用戶組,定制一些關系結構比較復雜的額權限模型湿刽,設置用戶組密碼是極有必要的的烁。比如不想讓一些非用戶組成員永久擁有用戶組的權限和特性,這時就可以通過密碼驗證的方式來讓某些用戶臨時擁有一些用戶組特性叭爱,這時就要用到用戶組密碼撮躁;/etc/gshadow格式如下,每個用戶組獨占一行买雾;
[root@docker200 ~]# ls -l /etc/gshadow
----------. 1 root root 682 4月 11 14:13 /etc/gshadow
[root@Web ~]# head -5 /etc/gshadow
root:::
bin:::bin,daemon
daemon:::bin,daemon
sys:::bin,adm
adm:::adm,daemon
gshadow文件中各個字段詳細說明:
字段1:組賬號的名稱把曼。
字段2:加密后的密碼字符串,這個字段可以空的或者!漓穿;如果是空的或有嗤军!,表示沒有密碼晃危。
字段3:本組的管理員列表叙赚;這個字段也可為空老客;如果有多個用戶組管理員,用,號分隔震叮。
字段4:本組的成員列表胧砰;加入這個組的所有用戶賬戶;列表中多個用戶通過","分隔苇瓣。
二尉间、用戶權限
Linux 一般將文件可存取訪問的身份分為 3 個類別,分別是 owner击罪、group哲嘲、others,且 3 種身份各有 read媳禁、write眠副、execute 等權限。
權限的三種身份:
文件所有者(owner)
用戶級別的文件權限竣稽,通常為文件的創(chuàng)建者囱怕,可以通過 chown 修改文件所有者。用戶組(group)
如果把用戶組比作團隊毫别,用戶就是其中的成員光涂,團隊中的隊員對于該文件都有相同的權限∨》常可以通過 chgrp 修改文件的用戶組忘闻。
用戶組最有用的功能之一,就是在團隊開發(fā)資源的時候恋博。兩個項目 project1 和 project2 由兩個團隊開發(fā)齐佳,則分別給項目分配用戶組權限1、2债沮,然后上司同時支持1炼吴、2 權限,即:每個賬號都可以有多個用戶組的支持疫衩。其他人(others)
不是文件所有者而且不屬于文件的用戶組硅蹦,就是其他人。
如圖所示闷煤,r 代表讀(read)童芹,w 代表寫(write),x 代表執(zhí)行(execute)
讀鲤拿,權限是二進制的100假褪,十進制是4;
寫近顷,權限是二進制的010生音,十進制是2宁否;
執(zhí)行,權限是二進制的001缀遍,十進制是1慕匠;
具備多個權限,就把相應的 4域醇、2絮重、1 相加就可以了:
若要 rwx 則 4+2+1=7
若要 rw- 則 4+2=6
若要 r-x 則 4+1=5
若要 r-- 則 =4
若要 -wx 則 2+1=3
若要 -w- 則 =2
若要 --x 則 =1
若要 --- 則 =0
Linux下權限設置一共十個字符,分成四段歹苦。
例如:
-rw-rw-r--
第一個字符“-”表示普通文件;“d”表示目錄督怜;這個位置還可能會出現(xiàn)“l(fā)”表示鏈接殴瘦。
第二三四個字符“rw-”表示當前所屬用戶的權限。 所以用數(shù)值表示為4+2=6号杠,也就是110蚪腋。
第五六七個字符“rw-”表示當前所屬組的權限。 所以用數(shù)值表示為4+2=6姨蟋,也就是110屉凯。
第八九十個字符“r--”表示其他用戶權限。 所以用數(shù)值表示為2眼溶,也就是100悠砚。