標籤:uid gid /etc/passwd /etc/shadow /etc/group /etc/gshadow
使用者分類:
管理員:root使用者,UID為0
系統使用者:UID範圍1-499
一般使用者:UID範圍:500-60000
組分類:
基本組或私人組:建立使用者時,如果沒有為其指定所屬的組,則系統預設會建立一個與使用者名稱同名的組。
附屬組:預設組以外的其他組。
當一個使用者執行程式的時候,系統會判斷目前使用者有沒有許可權執行這個程式,如果沒有許可權執行,則啟動不了該程式。如果有許可權執行,則執行後該程式會產生一個或多個進程,該進程的許可權就是執行該程式的使用者的許可權,因此進程的屬主和屬組就是該使用者的屬主和屬組。當該進程訪問一個對象的時候,會判斷該進程的屬主與屬組是否與要訪問的對象的屬主和屬組一樣,如果屬主一樣,則具有要訪問對象的屬主的許可權,如果屬組相同,則具有要訪問對象的屬組的許可權,如果都相同,則同時具有該許可權,如果都不相同,則具有Others的許可權。
樣本:
程式:/bin/ls
程式的許可權:-rwxr-xr-x 1 root root 117024 Apr 17 2012 /bin/ls
使用者:tom
組:tom
對象:drw-r--r-- 1 root root 0 Jun 30 21:59 a123
當使用者tom想執行/bin/ls這個程式時,系統會判斷tom是否有許可權執行/bin/ls,而ls這個程式的屬主和屬組都是root,而tom使用者的屬主和屬組都是tom,因此當tom執行ls時,就會具有others的許可權,而ls這個程式的others的許可權是rx,因此tom可以執行ls,執行後會產生一個進程,該ls進程的屬主和屬組就是tom,當tom使用ls訪問對象a123時,要和對象的屬組和屬主進行比較,因此對於a123來說,只能查看ls列出a123目錄裡面的檔案,不能使用ls -l列出該目錄下的檔案或目錄的詳細資料。
1. /etc/passwd檔案格式說明:
格式:
account:password:UID:GID:GECOS:directory:shell
各個欄位的說明:
account:使用者的名稱。
password:使用者的加密密碼,可以是*或x。如果是x,則是一個預留位置,真正的密碼位於/etc/shadow這個影子檔案中。
UID:使用者的UID
GID:使用者的基本組的GID。附屬組的資訊存放在/etc/group裡面。
GECOS:使用者的注釋資訊,如使用者的全名,使用者的家庭住址等等。
directory:使用者的家目錄。
shell:使用者在登入系統的時候所啟動並執行shell。如果為空白,則為/bin/sh即/bin/bash。如果設定為不存在的shell,則使用者無法通過login登入系統。當設定為/sbin/nologin時,使用者也無法登入系統,因此系統使用者的預設shell都是/sbin/nologin。
查看系統中的合法shell:
cat /etc/shells或者是chsh -l
樣本:
[[email protected] ~]# cat /etc/shells /bin/sh/bin/bash/sbin/nologin/bin/tcsh/bin/csh[[email protected] ~]# chsh -l/bin/sh/bin/bash/sbin/nologin/bin/tcsh/bin/csh[[email protected] ~]#
2. /etc/shadow檔案說明
shadow檔案存放是系統中的賬戶的密碼資訊以及賬戶的老化資訊。該檔案採用冒號(:)作為分隔字元,分為9個欄位,格式如下:
login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field
樣本:
[[email protected] tmp]# grep ‘frame‘ /etc/shadowframe:$6$raWrlosK$jwlpWIiYAfMLOreKEXsMwvbwieNsG.vGl72KYf.stzQCQwMDayhtCTl/B.Apjn/UlyLBTZcbvmjNOL1vhqMTd0:16247:0:99999:7:::[[email protected] tmp]#
login name:登入名稱,存在於系統中的有效使用者名稱。在上述樣本中,登入名稱為frame。
encrypted password:在加密密碼裡面,分為如下的幾個部分,
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/38/1B/wKiom1OzTyiifNlgAABznXyku_s276.jpg" title="a.jpg" alt="wKiom1OzTyiifNlgAABznXyku_s276.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/38/1B/wKiom1OzT42iC7OxAAB4G0H93nI742.jpg" title="a.jpg" alt="wKiom1OzT42iC7OxAAB4G0H93nI742.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/38/1B/wKioL1OzT5KQLnQUAACLhQ2u-5k081.jpg" title="a.jpg" alt="wKioL1OzT5KQLnQUAACLhQ2u-5k081.jpg" />
該部分的格式如下:
$id$salt$encrypted
ID | Method --------------------------------------------------------- 1 | MD5 2a | Blowfish (not in mainline glibc; added in some | Linux distributions) 5 | SHA-256 (since glibc 2.7) 6 | SHA-512 (since glibc 2.7)
encrypted的長度: MD5 | 22 characters SHA-256 | 43 characters SHA-512 | 86 characters
第一部分:表示的是採用的加密方式。如果$後是1,則表示的是使用MD5方式加密的,如果是2,則表示
的是使用的Blowfish密碼編譯演算法,如果是5,則表示的使用的SHA256密碼編譯演算法,如果是6,則使用的是
SHA512密碼編譯演算法
加密方法:對稱式加密和非對稱式加密。
對稱式加密:加密和解密使用相同的密碼。
非對稱式加密:也稱為公開金鑰加密。在非對稱式加密中,每個密碼都是成對出現的,一個為私密金鑰(private key或者是secret key),一個為公開金鑰(public key),公開金鑰加密,私密金鑰解密。
單向加密:也成為散列加密。可以由資料取得密文,反之不能以密文取得資料。提取資料特徵碼,每一個資料的特徵碼都是唯一的,可以用於資料校正,校正資料是否遭到破壞。計算一個檔案的特徵碼,可以用md5sum。
樣本:
[[email protected] tmp]# md5sum issue bbee69205bff2d11233b02a8f80ba4fd issue[[email protected] tmp]# echo a >> issue [[email protected] tmp]# md5sum issue f80ac7948edb06fa27b1a0ddbe09d3af issue[[email protected] tmp]# 說明:當往issue檔案中增加一個字元a時,重新計算其特徵碼時,所產生的結果差別很大,這個也就是單向加密的一個特徵,稱為雪崩效應。初始結果的微小改變可以引起結果的巨大差異。
常用的單向密碼編譯演算法有:MD5和SHA1。
MD5(Message Digest)為128位的定長輸出。
SHA1(Secure Hash Algorithm)為160位的定長輸出。
SHA256和SHA512:則表示為256和512位的密碼編譯演算法。
第二部分:稱為salt,為8位元組的字串,為隨機產生的。在計算密碼的時候,是把這部分也加進去計算的。如果salt和密碼都一樣,則加密出來的結果才一樣,如果僅僅是密碼一樣,而salt不一樣,則加密出來的結果也不一樣。
當使用者登入系統的時候,先將salt加進去,然後使用相同的演算法,對使用者輸入的密碼進行加密,然後和第三部分進行比較,判斷是否相同,相同則密碼一樣,否則不一樣。
第三部分:就是使用者的密碼。
在encrypted password中,如果是*,則表示該使用者不允許登入,如果是!則表示該使用者沒有密碼,NP也表示沒有密碼,即No Password,如果不想讓一個使用者登入系統,可以在該欄位的前面加上!!即可,!!表示的是該使用者被鎖定,LK也可以表示賬戶被鎖定(LocK)
date of last password change:上一次密碼修改的時間距離1970年1月1日的天數。如果該欄位為空白,則表示關閉密碼老化的特性。如果為0,則表示使用者下一次登入系統時,必須要修改密碼。
minimum password age:兩次修改密碼的最小時間間隔,密碼最短使用到期日。如果是0或空,則意味著可以隨時修改密碼。
maximum password age:密碼最長使用到期日。意味著該時間到期後,使用者必須要修改自己的密碼。使用者下次登入的時候,會詢問使用者是否要修改密碼。
password warning period:提前多少天警告使用者口令將到期。如果為0,則密碼即將到期時,不會提示使用者修改密碼。
password inactivity period:密碼到期後多少天,使用者依然可以使用該密碼登入,但是登入後系統會強制使用者修改密碼。如果該時間到期後使用者沒有修改密碼,則該密碼將失效。
account expiration date:賬戶到期時間,也是距離1970年1月1日起的天數。賬戶到期和密碼到期是不一樣的,賬戶到期意味著使用者不能使用該賬戶登入,密碼到期則意味著使用者不能使用該密碼登入。如果是空,則意味著該賬戶永遠不會到期.
reserved field:保留供將來使用。
3. /etc/group
格式:
group_name:passwd:GID:user_list
group_name:組名
passwd:組密碼
GID:組的GID
user_list:使用者列表,用逗號隔開。
樣本:
daemon:x:2:bin,daemon
4. /etc/gshadow
格式:
group name:encrypted password:administrators:members
group name:組名
encrypted passwd:加密後的組密碼
administrators:組管理員
members:群組成員列表,多個群組成員之間用逗號分隔。
樣本:
mail:::mail,postfix
本文出自 “HeZhang” 部落格,請務必保留此出處http://hezhang.blog.51cto.com/1347601/1433335