2021-05-12 14:32:11
淺析Linux系統下使用者與許可權管理
Linux作為一種多使用者多工作業系統,在日常的使用中不可避免地要劃分出一個角色的概念來管理和使用計算機,這個角色與每一個計算機使用者關聯,在Linux中稱這種角色為使用者。而在每一個使用者使用計算機的過程中,又必然存在對有限計算機資源使用的限制性,那麼作業系統就必須提供一種途徑來保證每個使用者獨立、合理的使用計算機。
一、使用者和使用者組管理
(一)使用者及使用者組相關基本概念
使用者:泛指計算機的使用者。用計算機可識別的使用者ID(UID,user id)標識。
使用者組:使用者容器,用來將多個使用者合併為一個單一的邏輯元件。用計算機可識別的使用者組ID(GID,group id)標識。
UID和GID:都是16位元二進位制數,其範圍為0-65535,共計2^16=65536個。
使用者類別:
(1)管理員使用者:被稱為root,UID為0。
(2)系統使用者:為系統執行提供服務的非登陸式使用者,UID從1-999這個範圍進行分配。
(3)登陸使用者:真正使用計算機的普通使用者,UID從500-60000進行分配。
組類別:Linux系統中使用者組可按三種方式劃分:
1、與類似使用者的分類方式
(1)管理員組:管理員所在組,GID為0。
(2)系統使用者組:系統使用者所在組,GID為1-999。
(3)登陸使用者組:登陸使用者所在組,GID為1000-60000。
2、從使用者角度出發分類
(1)使用者的基本組:每個使用者的主要組。
(2)使用者的附加組:每個使用者加入的其他組。
3、從使用者組的角度出發分類
(1)私有組:組名和使用者名稱相同,且只包含一個使用者。
(2)公共組:組名包含多個使用者。
認證資訊:使用者名稱和密碼,通過比對事先儲存的資訊與登陸時使用者提供的資訊是否一致來認證使用者。
那麼遵從Linux中“一切皆檔案”的哲學理念,認證資訊也儲存在檔案來中。我們來認識三個檔案分別是/etc/passwd、/etc/group和/etc/shadow,這三個檔案分別儲存了使用者的資訊、組的資訊和密碼的資訊,當使用者登陸時就是通過比對這三個檔案中的資訊來實現認證,接下來,我們對這三個檔案的內容格式作出解釋。
(1)/etc/passwd 檔案欄位說明
name:password:UID:GID:GECOS:directory:shell
① name:使用者名稱
② password:可以是加密的密碼,也可以是預留位置x:
③ UID:使用者ID
④ GID:使用者所屬的基本組ID
⑤ GECOS:可選,使用者的注釋資訊
⑥ directory:使用者的家目錄
⑦ shell:使用者的預設shell(登陸時)
(2)/etc/shadow 檔案欄位說明
① name:使用者名稱。
② $加密演算法$salt$加密密碼:salt稱為雜質,加密時新增。
③ 最近一次修改密碼的時間:表示從1970年1月1日(unix元年)開始的天數;0表示使用者下次登入時應該更改密碼;空欄位表示這個功能被禁止。
④ 最短使用期限:從更改密碼開始,下次可更改密碼經過的天數。
⑤ 最長使用期限:從更改密碼開始,可合法使用此密碼的天數。
⑥ 警告期限:在最長使用期限過期之前,警告密碼應更改的天數。
⑦ 非活動期限:在最長使用期限後,此密碼還可被使用的一段時間。
⑧ 賬戶過期期限:從1970年開始,賬戶可被使用的天數。
⑨ 保留欄位
(3)/etc/group 檔案欄位說明
group_name:password:GID:user_list
① group_name:使用者組名
② passwd:組密碼
③ GID:使用者組ID
④ user_list:以該組為其附加組的使用者的使用者列表;
(二)使用者和使用者組管理相關命令
命令概述:useradd,userdel,usermod,passwd,groupadd,groupdel,groupmod,gpasswd,chage,id,su,chown,chgrp
1、groupadd 新增組
使用格式 :groupadd [options] group
-g,--gid GID 指定GID;如不指定則預設是上一個已存在組的GID加1
-r, --system 建立系統組
# group add mygroup
# groupadd -r mygroup
2、groupmod 修改組屬性
使用格式 : groupmod [options] GROUP
-g GID: 修改GID
-n new_name:修改組名
# groupmod -g 1002 mygroup
# groupmod -n mynewgroup mygroup
3、groupdel 刪除組
使用格式: groupdel [options] group
# groupdel mynewgroup
4、useradd 建立使用者
使用格式: useradd [options] LOGIN
-u,--uid UID:指定UID;
-g,--gid GROUP:指定基本組ID,此組需要事先存在
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:指明使用者所屬的附加組,多個組之
間用逗號隔開
-c,--comment COMMENT:指定註釋資訊
-d,--homeHOME_DIR: 以指定的路徑為使用者的家目錄;通過複製/etc/skel此目錄並
重新命名來實現:指定的家目錄路徑事先存在,則不會為使用者複製環境組態檔;
-s,--shell SHELL:指定使用者的預設shell,而可用的所有shell列表儲存在/etc/shells文
件當中;
-r,--system:建立系統使用者;
-M 不建立使用者主目錄
-f 密碼過期後的使用天數,0表示禁用,-1表示永不禁用
-D 顯示建立使用者的預設設定
注意:建立使用者時的諸多預設設定在/etc/login.defs檔案中
# useradd myuser
5、usermod 更改使用者屬性
使用格式: usermod [options] LOGIN
-u,--uid UID :修改使用者ID
-g,--gid GROUP 修改使用者所屬的基本組,
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改使用者所屬的附加組;原來的
附加組會被覆蓋
-a,--append:與-G一起使用,用於為使用者追加新的附加組;
-c,--comment COMMENT:修改註釋資訊
-d,--home HOME_DIR: 修改使用者的家目錄,使用者原有的檔案不會被轉移至新位置;
-m,--move-home:只能與-d一起使用,用於將使用者的主目錄移動到新位置
-l,--login LOGIN:修改使用者登入名
-s,--shell SHELL:修改使用者的預設shell
-L,--lock:鎖定使用者密碼
-U,--unclock:解鎖使用者的密碼;
# 將使用者myuser的家目錄更改為/tmp/home/user,並且原來的使用者設定不變,且更改使用者的預設shell為tcsh
# usermod -s /bin/tcsh -d /tmp/home/user -m myuser
6、userdel 刪除使用者
使用格式: userdel[option] login
-r 刪除使用者時,一併刪除其家目錄
注意:當刪除一個使用者時,其基本組也會被刪除。
# 刪除使用者myuser
# userdel myuser
7、passwd 密碼管理
使用格式: passwd [-k] [-l][-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i
inactivedays] [-S][--stdin] [username]
(1)passwd:修改使用者自己的密碼
(2)passwd USERNAME:修改指定使用者的密碼,但僅root使用者有此許可權,且不需要知道
原密碼;
-l,-u:鎖定和解鎖使用者
-d:清除使用者密碼串
-e DATE:設定過期期限;
-i DAYS:非活動期限;
-n DAYS: 密碼的最短使用期限
-x DAYS: 密碼的最長使用期限
-w DAYS:警告期限
--stdin:從標準輸入讀入密碼。
通常在指令碼中如此使用:echo "PASSWORD" | passwd--stdin USENAME
# 更改使用者user的密碼
# passwd myuser
8、gpasswd: 更改使用者組密碼
使用格式: gpasswd [option] group
-a USERNAME: 向組中新增使用者
-d USERNAME: 從組中移除使用者
# 更改使用者組密碼
# gpasswd mygroup
# 將使用者myuser新增進mygroup組中,即讓mygroup成為myuser的附加組。
# gpasswd myuser
9、chage 更改密碼過期資訊
使用格式: chage [options] LOGIN
-d:更改上次修改密碼的期限
-E:更改賬戶過期期限
-I:更改密碼的非活動期限
-W:更改警告期限
-m:更改密碼最短使用期限
-M:更改密碼最長使用期限
10、id 顯示使用者的真實和有效 id 資訊
使用格式: id[OPTION]... [USER]
id:顯示自己的ID資訊
-u:僅顯示有效UID
-g:僅顯示有效基本組ID
-G:顯示使用者所屬的所有組的ID
-n:不顯示ID而顯示名稱(配合以上顯示ID的選項一起用)
11、su 切換使用者
登陸時切換:會重新讀取目標使用者的組態檔來重新初始化
su- USERNAME
su-l USERNAME
非登陸式切換:不會讀取目標使用者的組態檔來進行初始化
suUSERNAME
-c 'COMMAND':僅以指定使用者的身份執行此處指定的命令
注意:管理員可無密碼切換至其他任何使用者;非管理員必須要給出目標使用者的登陸密碼
12、chown 更改檔案屬主或者屬組或者屬主和屬組
使用格式: chown [OPTION]... [OWNER][:|.[GROUP]] FILE...
可以使用OWNER:GROUP或者OWNER.GROUP
chown [OPTION]... --reference=RFILE FILE...
選項:
-R,--recursive:遞回修改
注意:使用者僅能修改屬主為自己的那些許可權
# 將檔案file1的屬組和屬主更改為mygroup和myuser
# chown myuser:mygroup file1
13、chgrp 僅更改屬組
使用格式: chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
注意:僅管理員可修改檔案的屬組
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2015-12/126635p2.htm
相關文章