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...
注意:僅管理員可修改文件的屬組