Linux賬号和權限管理
--------------Isuncle 原著
Linux基于使用者身份對資源通路進行控制
使用者帳号:
超級使用者root
超級使用者,即root使用者,類似于Windows系統中的Administrator使用者,非執行管理任務時不建議使用root使用者登入系統;root使用者的UID的固定值為0、root組帳号的GID号為固定值0。
普通使用者
普通使用者帳号一般隻在使用者自己的宿主目錄中有完全權;,普通使用者/組使用的UID、GID号在500~60000之間。
程式使用者
程式使用者:用于維持系統或某個程式的正常運作,一般不允許登入到系統。例如:bin、daemon、ftp、mail等;1~499的UID、GID預設保留給程式使用者使用。
組帳号:
基本組(私有組)
附加組(公共組)
UID和GID:
UID(User Identity,使用者辨別号)
GID(Group Identify,組辨別号)
用于儲存使用者的帳号基本資訊
檔案位置:/etc/passwd
每一行對應一個使用者的帳号記錄
1.基于系統運作和管理需要,所有使用者都可以通路passwd檔案中的内容,但是隻有root使用者才能進行更改
2.在早期的UNIX作業系統中,使用者帳号的密碼資訊是儲存在passwd檔案中的,不法使用者可以很容易的擷取密碼字串并進行暴力破解,是以存在一定的安全隐患
後來經改進後,将密碼轉存入專門的shadow檔案中(見下頁)并嚴格控制全新,而passwd檔案中僅保留密碼占位符“x”

字段1:使用者帳号的名稱
字段2:使用者密碼字串或者密碼占位符“x”
字段3:使用者帳号的UID号
字段4:所屬基本組帳号的GID号
字段5:使用者全名
字段6:宿主目錄
字段7:登入Shell資訊
用于儲存密碼字串、密碼有效期等資訊
檔案位置:/etc/shadow
每一行對應一個使用者的密碼記錄
1.預設隻有root使用者能夠讀取檔案中的内容,并且不允許root直接編輯該檔案中的内容
2.上次修改密碼的時間,表示從1970年01月01日(可了解為Unix系統的誕生日)算起到最近一次修改密碼時間隔的天數
字段1:使用者帳号的名稱
字段2:加密的密碼字串資訊
字段3:上次修改密碼的時間
字段4:密碼的最短有效天數,預設值為0
字段5:密碼的最長有效天數,預設值為99999
字段6:提前多少天警告使用者密碼将過期,預設值為7
字段7:在密碼過期之後多少天禁用此使用者
字段8:帳号失效時間,預設值為空
字段9:保留字段(未使用)
添加使用者賬号:
useradd指令
格式:useradd[選項]...使用者名
常用指令選項
-u:指定UID 标記号
-d:指定宿主目錄,預設為/home/使用者名
-e:指定帳号失效時間
-g:指定使用者的基本組名(或UID号)
-G:指定使用者的附加組名(或GID号)
-M:不為使用者建立并初始化宿主目錄
-s:指定使用者的登入Shell
比如下面我們來用–u指令建立一個UID為504的使用者st02:
[root@localhost~]# useradd -u504 st02
[root@localhost~]# tail -1 /etc/passwd (檢視一下)
st02:x:504:504::/home/st02:/bin/bash (檢視結果)
這裡我們建立一個考試測試用的帳号exam01,指定屬于users組,該帳号于2009-07-30失效
[root@localhost~]# useradd -gusers-e 2009-07-30 exam01
指定mike的基本組為mike,并加入到ftpuser組;指定主目錄為/ftphome/mike;不允許mike通過本地登入伺服器
(對應的基本組mike、ftpuser必須存在,添加組賬号的方法後面會講解)
添加一個新的使用者賬号後,useradd指令會在該使用者的宿主目錄中建立一些初始配置檔案。這些檔案來自于賬号的末班目錄”/etc/skel/”
檔案來源
建立使用者帳号時,從/etc/skel 目錄中複制而來
主要的使用者初始配置檔案
~/.bash_profile:使用者每次登入時執行
~/.bashrc:每次進入新的Bash環境時執行
~/.bash_logout:使用者每次登出時執行
預設情況下,使用者宿主目錄下的初始配置檔案隻對目前使用者有效,而全局配置檔案對所有使用者有效
設定/更改使用者密碼——passwd
passwd指令
格式:passwd[選項]...使用者名
-d:清空使用者的密碼,使之無需密碼即可登入
-l:鎖定使用者帳号
-S:檢視使用者帳号的狀态(是否被鎖定)
-u:解鎖使用者帳号
不指定使用者名時,修改目前賬号的密碼
修改使用者賬号的屬性——usermod
usermod指令
格式:usermod[選項]...使用者名
-l:更改使用者帳号的登入名稱
-L:鎖定使用者賬戶
-U:解鎖使用者賬戶
以下選項與useradd指令中的含義相同
-u、-d、-e、-g、-G、-s
删除使用者賬号——userdel
userdel指令
格式:userdel[-r]使用者名
添加-r 選項時,表示連使用者的宿主目錄一并删除
删除使用者賬号stu01
組賬号檔案:
與使用者帳号檔案相類似
/etc/group:儲存組帳号基本資訊
/etc/gshadow:儲存組帳号的密碼資訊
添加組賬号——groupadd
groupadd指令
格式:groupadd[-g GID]組帳号名
添加删除組成員——gpasswd
gpasswd指令
用途:設定組帳号密碼(極少用)、添加/删除組成員
格式:gpasswd[選項]...組帳号名
-a:向組内添加一個使用者
-d:從組内删除一個使用者成員
-M:定義組成員清單,以逗号分隔
删除組賬号——groupdel
groupdel指令
格式:groupdel組帳号名
查詢賬号資訊
id指令
用途:查詢使用者身份辨別
格式:id[使用者名]
groups指令
用途:查詢使用者所屬的組
格式:groups[使用者名]
finger指令
用途:查詢使用者帳号的詳細資訊
格式:finger[使用者名]
users、w 、who指令
用途:查詢已登入到主機的使用者資訊
了解了使用者群組之後下面我們再來介紹提下權限,在Linux中,權限沒有windows中那麼複雜隻分為三種,以及檔案/目錄的歸屬。
檔案/目錄的權限和歸屬
通路權限
讀取r:允許檢視檔案内容、顯示目錄清單
寫入w:允許修改檔案内容,允許在目錄中建立、移動、删除檔案或子目錄
可執行x:允許運作程式、切換目錄
歸屬(所有權)
屬主:擁有該檔案或目錄的使用者帳号
屬組:擁有該檔案或目錄的組帳号
檢視檔案/目錄的權限和歸屬
“-rw-r—r--”部分的第一個字元表示檔案類型,可以是d(目錄)、b(塊裝置檔案)、c(字元裝置檔案),減号“-”(普通檔案)、字母“l”(連結檔案)等
其餘部分指定了檔案的通路權限
在表示屬主、屬組内使用者或其他使用者對該檔案的通路權限時,主要使用了四種不同的權限字元:r可讀;w可寫;x可執行;-無權限
r、w、x、- 權限字元還可分别表示為8進制數字4、2、1、0
設定檔案和目錄的權限——chmod
chmod指令
格式1:chmod[ugoa][+-=][rwx]檔案或目錄...
格式2:chmod nnn 檔案或目錄...
-R:遞歸修改指定目錄下所有子項的全新
設定檔案和目錄的歸屬——chown
chown指令
格式:chown屬主檔案或目錄
chown:屬組檔案或目錄
chown屬主:屬組檔案或目錄
-R:遞歸修改指定目錄下所有檔案、子目錄的歸屬