此篇部落格是本人的第一篇部落格,寫得不好或者有錯誤的地方,希望看到的部落客能予以指出,本人将很樂意去接受并積極地去更正!!!
Linux最優秀的地方之一就在于他的多人多任務環境,為了讓每個使用者都具有比較安全的檔案資料,是以檔案的權限管理就變得相當重要了。Linux一般将檔案可存取的身份劃分為三個類别,即屬主(owner)、屬組(group)和其它(other),并且三種身份都有各自的可讀(readable)、可寫(writable)和可執行(executable)的權限
首先說使用者:
既指實作能夠将有限的資源在多個使用者之間進行配置設定的這麼一個元件
多使用者:多人同時使用系統資源
多任務:同時進行多個程序
使用者的分類
系統使用者:管理者賬戶(root)
普通使用者:
系統使用者:僅用于運作服務程式
登入使用者:系統資源的使用者
使用者的辨別:UserID 即UID。使用者的ID号由16位二進制數字表示,取值範圍為:0-65535
管理者賬戶:ID号為 0
普通使用者:
系統使用者:
Centos 5和6上:ID号取值為1-499
Centos 7上:ID号取值為1-999
普通使用者:
Centos 5和6上:ID号取值為大于等于500
Centos 7上:ID号取值為大于等于1000
使用者的名稱和ID号是通過名稱解析:username <--> UID 即名稱轉換來實作的,而解析是通過解析庫檔案;預設情況下,使用者的賬号存在于/etc/passwd 這一檔案中。其存儲格式name:password:UID:GID:GECOS(資訊注釋字段,可選的):directory:shell(預設登入shell),包含了使用者名、UID及預設登入shell等資訊解析庫。
使用者組
組可以認為是一種完成快速配置設定資源的一種機制;或者是完成統一授權的一種容器
組的分類:
管理者組:
普通使用者組:
系統組
登入組
組的辨別:GroupID,即GID. 同樣組的ID号也由16位二進制數字表示,取值範圍為:0-65535
管理者組:即root組 ID取值為 0
系統組:
CentOS 5和6: 組ID取值為 1-499
CentOS 7: 組ID号取值為 1-999
登入組:
CentOS 5和6: 組ID号大于等于500
CentOS 7: 組ID号大于等于1000
同樣使用者的組名稱群組ID也是通過組名稱解析方式:groupname <--> gid 來實作轉換的;解析也是通過庫檔案;預設情況下,組的解析庫檔案存在于:/etc/group 當中。其存儲格式為:GRPNAME:x:GID:user1, user2, ... 與之對應得意義為: 組名:密碼點位符:GID:以此組為附加組的使用者清單,以逗号分隔。
同樣組還可以以此種方式進行分類:
以使用者為核心:
使用者的主組:基本組
使用者的附加組:即額外組
根據組内容納的使用者來劃分:
私有組:與使用者名相同,且隻有一個此使用者
公共組:組内包含了多個使用者
對使用者的認證機制:
采用AAA認證機制,即身份認證 (Authentication)授權許可 (Authorization)統計 (Accounting),通過對比事先存儲的與登入時所提供的資訊是否一緻,進而驗正使用者的确是他所聲稱的人。使用者的認證資訊庫存在于 /etc/shadow 當中; 組的認證資訊庫存在于 /etc/gshadow 當中。密碼是使用單向加密機制進行加密存放的。
使用者群組的管理
對使用者和租的管理,通常主要以指令的方式進行,下面介紹常用的指令及對應選項:
組相關的指令:groupadd, groupmod, groupdel
使用者相關指令:useradd, usermod, userdel
認證相關的指令:passwd
組相關指令
gruopadd:建立一個組
使用格式:groupadd [選項] group
常用選項:
-g, --gidGID :添加組的時候指明GID号
-o, --non-unique :此選項允許添加一個使用非唯一 GID 的組
-r, --system :建立一個系統組
groupmod:modify a group definition on the system(修改組相關資訊)
使用格式:groupmod [選項] GROUP
-g, --gidGID :修改組ID号
-n, --new-nameNEW_GROUP :修改組名
-o, --non-unique :此選項允許修改一個使用非唯一 GID 的組
groupdel:删除組
使用格式:groupdel [選項] GROUP
注意:
不能移除現有使用者的主組。在移除此組之前,必須先移除此使用者;需要手動檢查所有檔案系 統,以確定沒有遺留的屬于此組的檔案。
使用者相關指令
useradd :建立一個新使用者或更新預設新使用者資訊
使用格式:useradd [選項] 登入名
-c, --comment COMMENT:注釋資訊,一般為Full Name
-d, --home /PATH/TO/HOME_DIR:家目錄路徑;目标路徑不能事先存在,否則會有警 告,不會得到skel相關的檔案給使用者
-g, --gid GROUP:使用者的基本組組名或GID
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:使用者所屬的附加組清單,彼此間用逗号 隔開,而且中間沒有空格
-m, --create-home:強制建立家目錄,此選項一般預設使用
-M:不建立使用者主目錄,即使系統在 /etc/login.defs 中的設定
(CREATE_HOME) 為 yes
-r, --system:建立一個系統賬戶(ID号是在一個指定範圍内的)
(注:系統使用者是不建立使用者的家目錄的,因為系統使用者不會用于登入系統)
-s, --shell SHELL:使用者的登入 shell 名稱,預設為留白,讓系統根據 /etc/default/useradd 中的 SHELL 變量來選擇預設的登入shell
注意:建立登入使用者時,為其自定義的shell程式必須為可登入shell,
且要位于/etc/shells檔案中
-u, --uid UID:使用者 ID 的數字值。此值必須為唯一的,除非使用了 -o 選項。此值必須 非負,預設使用大于等于UID_MIN,且大于任何其他使用者 ID 最小值
補充:檢視添加使用者時的預設設定資訊的一個指令為:# cat /etc/default/useradd
useradd -D:檢視建立使用者時的預設設定值的;
useradd -D 選項 加上選項為設定某預設選項;
-e, --expiredate EXPIRE_DATE:使用者賬号的過期期限;過期後會被鎖定(此時需要 管理者進行解鎖);日期以 YYYY-MM-DD 格式指定
-f, --inactive INACTIVE:密碼過期後,賬戶被徹底禁用之前的天數。0表示立即禁 用,-1表示禁用這個功能。
注:為使用者提供預設配置的配置檔案:
/etc/login.defs, /etc/default/useradd
影子密碼檔案:/etc/shadow
如:# cat /etc/shadow magedu:$6$qA1Ctt/redREhoZG$lmoMrY9Th7cw4Pt7qNm8ZrVJ3KmJ.LTvPbL4FVFkAZiPbJ1lNdfM9g/AOUOTZW ogOb6e66EGwWOPNg2Ic44xh0:16870:0:99999:7:::
格式:登入名:密碼:最近一次的修改時間:密碼的最短使用期限:密碼最長使用期限:提前警告的天 數:非活動期限:賬号的禁用日期:保留字段
密碼字段表示格式:$加密算法$salt$加密的密碼字元串
注:密碼:!!$加密算法$salt$加密的密碼字元串(若$符前加兩個!!号表示此使用者已被鎖定,禁止 登入了);最近一次的修改時間:其顯示的數字意義是從1970年1月1日到上一次修改中間所經 過的完整的天數)
usermod:修改賬号資訊
使用格式:usermod [選項] 登入名
常用選項:
-c, --comment COMMENT
-d, --home HOME_DIR:修改家目錄為新的位置,但一般應該同時使用-m選項以保證原 家目錄中的檔案會移動到新目錄中
-g, --gid GROUP
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改時會覆寫原有的附加組;一同 使用-a選項,表示為使用者添加新的附加組
-l, --login NEW_LOGIN:修改目前使用者的使用者名
-s, --shell SHELL:使用者的新登入 shell 的名稱。将此字段設定為空會讓系統選擇 預設的登入 shell
-u, --uid UID:使用者 ID 的新數值。這個值必須是唯一的,除非使用了 -o 選項,必 須是非負值
-m, --move-home 将使用者的主目錄移動到新位置。這個選項隻有和 -d (或 --home) 選 項組合使用時才有效。usermod 會改寫檔案的屬主并複制模式、ACL 和擴充屬性, 但是稍後也可能需要手動修改
-L, --lock:鎖定使用者的密碼。這會在使用者加密的密碼之前放置一個“!”
-U, --unlock:解鎖使用者的密碼。這将移除加密的密碼之前的“!”
userdel指令:删除使用者賬号
使用格式: userdel [選項] 登入名
常用選項:
-r, --remove:使用者主目錄中的檔案将随使用者主目錄和使用者郵箱一起删除;如果不使用此 選項不會删除使用者家目錄和郵箱檔案
認證相關指令
passwd:密碼管理指令(update user's authentication tokens)
使用格式:passwd [-l][-u[-f]][-d][-e][-n mindays][-x maxdays] [-w warndays]
[-i inactivedays][--stdin] [username]
-l:鎖定密碼
-u:解鎖密碼
-d:清除密碼
--stdin:從标準輸入接收密碼(一般在腳本中使用,免得重複)
echo "PASSWORD" | passwd --stdin USERNAME
注:
(1)passwd:不帶任何選項,表示修改自己的密碼
(2)passwd username:修改其它使用者的密碼,僅root有此權限
gpasswd指令:為組添加密碼
組密碼檔案放在:/etc/gshadow 檔案當中
使用格式:gpasswd [選項] group
常用選項:
-a USERNAME:把使用者添加至組中
-d USERNAME:從此組中移除此使用者
注意:密碼複雜度應符合如下要求:
(1) 不能少于8個字元
(2) 不能使用與過去的密碼太相似的密碼
(3) 應該使用四類字元中的至少三類
id指令:檢視使用者相關的id資訊
使用格式:id [OPTION]...[USER]
-u:僅檢視uid
-g:僅檢視gid
-G:檢視所屬的所有組的ID
-n:顯示名稱,而非ID
su指令:switch user
切換使用者時:
(1)不讀取目标使用者的配置檔案(非登入式切換,半切換)
su USERNAME
(2)讀取目标使用者的配置檔案(登入式切換,完全切換)
su -l USERNAME
su - USERNAME
常用選項:
-c command, --command=command:僅以指定的使用者的身份運作此處指定的指令,而不執 行真正的身份切換操作
注意:root切換至任何其它使用者無須認證密碼;普通使用者切換至其它使用者,都需要密碼
newgrp指令:登入到一個新組;可用于臨時切換
主要是将目前登入使用者臨時加入到已有的組,可以變更目前使用者的有效群組, 而且是另外以 一個 shell來提供這個功能。是以用該指令變更目前的有效群組後,就取得了一個新的shell,如 果要回到原先的shell環境中可以輸入exit,退出新的shell就又回到原本的環境中
chage指令:(change age)修改使用者賬号的各種期限
權限管理
一般指根據系統設定的安全規則或者安全政策,使用者可以通路而且隻能通路自己被授權的資源
權限模型生效的機制:也即程序的安全上下文的機制
程序的運作者:是否與檔案的屬主相同,如果是,則以檔案屬主的身份來通路此檔案;
否則是否屬于檔案的屬組;如果是,則以檔案屬組的身份來通路此檔案;
否則以檔案的其它使用者的身份來通路此檔案
安全上下文:
程序:以某個使用者的身份運作,程序對資源的操作權限取決于它所代表的使用者;
注:在計算機上一般運作的程序最多不能超過1024個
檔案系統檔案權限
三類使用者:
屬主:owner, u
屬組:group, g
其它:other, o
各自的權限:
r: readable,可讀
w: writable, 可寫
x:excutable, 可執行
權限管理
檔案:
r:可擷取檔案的資料;
w:可修改檔案的資料;
x:可将此檔案運作為程序;
目錄:
r:可使用ls指令擷取其下的所有檔案清單;但不可以使用“ls -l”去擷取詳細
資訊,也不可以cd至此目錄中
w:可修改此目錄下的檔案清單, 即可以在此目錄下建立或删除檔案
x:可以使用"ls -l“指令來擷取其下的檔案的詳細屬性資訊,也可cd至此目錄中
Linux上對三類使用者設定的權限:
rwxrwxrwx:每三個字段表示一類使用者的權限
owner: rwx
group: rwx
other: rwx
權限組合機制:以owner為例
對應權限 二進制表示 八進制表示
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
權限管理指令
ownership: 僅管理者有權限 ;
改屬主:chown
改屬組:chgrp
mode(permission):改變檔案權限通常僅屬主屬組有權限,但對管理者來說一切都不是障礙
chmod 改變檔案當中屬主屬組其他使用者的權限
chmod:change file mode bits
使用格式:chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...(八位權限模型)
chmod [OPTION]... --reference=RFILE FILE...
把目标檔案權限設定為何參考檔案權限模型相同
使用者的辨別符:u,g,o,a
chmod:
(1) chmod [OPTION]... MODE[,MODE]... FILE...
a 賦權表示法:直接操作一類使用者的所有權限位rwx
u=
g=
o=
a=
兩類使用者權限相同:ug=, go=
不同類的使用者權限不同:u=,g=,o=
b 授權表示法:操作一類使用者一位或多位權限
u+, u-
g+, g-
o+, o-
a+, a-
兩類使用者權限收授機制相同:ug+, ug-, ...
不同類的使用者權限不同(分開寫):u+,g+,o+
(2) chmod [OPTION]... OCTAL-MODE FILE...
使用八位數字跟上一個檔案即可
如: chmod 770 fstab
注:在寫八位數字時,三位數字一定要寫全;如77表示:077
(3) chmod [OPTION]... --reference=RFILE FILE...
--reference=RFILE:RFILE:表示參考其它檔案其權限模型;把後面
的檔案設定為和前面引用權限位模型相同;
常用選項:對以上三種方式都試用
-R, --recursive:遞歸修改;
注:當使用八位方式修改檔案時,使用此選項有很大風險;因為在系統上。預設一般為不允許文
件有執行權限,是以當目錄中有檔案時一定不要輕易使用八進制修改目錄及目錄檔案權限
chown:
此方式既能改屬主又能改屬組;僅管理者有權限
使用格式:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
(冒号前的内容可省,如果省略表示隻改屬組不改屬主;冒号可以換成一個點号)
chown [OPTION]... --reference=RFILE FILE...
-R, --recursive:遞歸修改; 可以改目錄及目錄中檔案中的屬主屬組;
chgrp:
更改屬組,從屬關系隻有管理者有權限;
使用格式:
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
umask
當我們登入系統之後建立一個檔案總是有一個預設權限的,那麼這個權限是怎麼來的呢?這就是umask幹的事情。umask設定了使用者建立檔案的預設權限,它與chmod的效果剛好相反,umask設定的是權限“補碼”,而chmod設定的是檔案權限碼。一般可在/etc/profile、/etc/bashrc、$[HOME]/.bash_profile、$[HOME]/.profile或$[HOME]/.bashrc中設定umask值。具體取決于Linux發行版,比如Fedora19下要更改自己的umask值,在$[HOME]/.profile或$[HOME]/.bash_profile下的增加umask的值覆寫不了/etc/profile中的配置值的,必須在$[HOME]/.bashrc下增加umask值才可以永久定義自己的umask值
umask:顯示或設定檔案模式掩碼
對于檔案:666-umask
對于目錄:777-umask
注意:之是以檔案用666去減,表示檔案預設不能有執行權限;如果減得的結果中,某類
或某位使用者的u,g或o有執行權限時,則需要加1,即把寫權限改為讀權限
檢視目前umask值:
使用以下兩種方式:
# umask 顯示的結果隻看後三位數字;如0022 其umask值為022;
# umask -S 如對一個目錄顯示結果為 u=rwx,g=rx,o=rx
設定方式:
# umask MASK
注意:此設定方式僅對目前shell程序有效