萬用字元的使用、使用者及組的管理
範例
範例1:顯示/etc目錄下,以非字母開頭,後面跟了一個字母以及其他任意長度任意字元的檔案
ls /etc/[^a-Z][a-Z]*
範例2:複製/etc目錄下所有以p開頭,以非數字結尾的檔案或目錄到/tmp/mytest1目錄中
mkdir -p /tmp/mytest1;cp /etc/p*[^0-9] /tmp/mytest1
範例3:將/etc/issue檔案中的內容轉換為大寫後儲存到/tmp/issue.out檔案中
cat /etc/issue|tr 'a-z' 'A-Z' > /tmp/issue.out
使用者及組管理
Liunx的安全模型(3A)
Authentication:認證,驗證使用者身份
Authorization:授權,不同的使用者設定不同許可權
Accouting|Audition:審計
使用者
Linux
中的每個使用者都是通過User ID
(UID
)來唯一標識。
-
管理員:
root
UID為0 -
普通使用者:1~60000自動分配
-
系統使用者:1-499(
Centos6
以前)1-999(Centos7
之後)作用:對守護程序獲取資源進行許可權分配
-
登入使用者:500+(
Centos6
以前)1000+(Centos7
之後)作用:給使用者進行互動式登入使用
-
使用者組
Linux
中可以將一個或多個使用者加入使用者組中,使用者組是通過Group ID
(GID
) 來唯一標識的。
-
管理員組:
root
UID為0 -
普通組:1~60000自動分配
-
系統使用者:1-499(
Centos6
Centos7
之後)作用:對守護程序獲取資源進行許可權分配
-
登入使用者:500+(
Centos6
以前)1000+(Centos7
之後)作用:給使用者使用
-
使用者跟使用者組的關係
- 使用者的主要組(primary group):使用者必須屬於一個且只有一個主組,預設建立使用者時會自動建立和使用者名稱同名的組,做為使用者的主要組,由於此組中只有一個使用者,又稱為私有組
- 使用者的附加組(supplementary group): 一個使用者可以屬於零個或多個輔助組,附屬組
安全上下文(重要)
Linux安全上下文Context:執行中的程式,即程序 (process),以程序發起者的身份執行,程序所能夠訪問資源的許可權取決於程序的執行者的身份
比如:分別以root和普通使用者的身份執行
/bin/cat
/etc/shadow
,得到的結果是不同的,資源能否能被訪問,是由執行者的身份決定,非程式本身
使用者和組的配置檔案
/etc/passwd
使用者及屬性資訊/etc/shadow
使用者密碼及相關屬性/etc/group
組及其屬性資訊/etc/gshadow
組密碼及其相關屬性
使用者管理命令
useradd 建立使用者
格式:
useradd [options] login
常用選項:
-u 指定UID
-o 配合-u選項,不檢查UID
-g 指明使用者所屬基本組,可為組名,也可以GID
-d 建立指定路徑作為家目錄
-c "註釋資訊" 使用者的註釋資訊
-s 指定使用者的shell程式
-G 指定使用者的附加組,需要注意的是附加組一定要存在
-r 建立系統使用者
-m 用於系統使用者建立家目錄
-N 不建立私有組作為主組,使用users為主組,跟Windows類似
-M 不建立家目錄,用於非系統使用者
範例1:建立使用者mandriva,其ID為1005,基本組為distro
#先建立基本組distro
#建立使用者
useradd -u 1005 -g distro mandriva
範例2:建立使用者mageia,其ID為1100,家目錄為/home/liunx
#建立使用者
useradd -u 1100 -d /home/liunx mageia
#檢視建立使用者的資訊
getent passwd mageia
mageia:x:1100:1100::/home/liunx:/bin/bash
usermod 使用者屬性修改
格式:
usermod [option] login
常用選項:
-u UID: 新UID
-g GID: 新主組
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項
-s SHELL:新的預設SHELL
-c 'COMMENT':新的註釋資訊
-d HOME: 新家目錄不會自動建立;若要建立新家目錄並移動原家資料,同時使用-m選項
-l login_name: 新的名字
-L: lock指定使用者,在/etc/shadow 密碼欄的增加 !
-U: unlock指定使用者,將 /etc/shadow 密碼欄的 ! 拿掉
-e YYYY-MM-DD: 指明使用者賬號過期日期
-f INACTIVE: 設定非活動期限,即寬限期
範例1:修改slackware的預設shell為/bin/bash
usermod -s /bin/bash slackware
userdel 刪除使用者
格式:
userdel [option] login
常用選項:
-f 強制
-r 刪除使用者家目錄和郵箱
範例1:刪除mandrive使用者,並保留家目錄
#刪除使用者
usedel mandrive
#刪除郵箱
rm -rf /var/mail/mandrive
ID 檢視使用者UID,GID相關資訊
格式:
id [option] login
常用選項:
-u 檢視使用者的uid
-g 檢視使用者的gid
-G 顯示使用者所屬的組ID
-n 顯示名稱,需配合ugG使用
passwd 修改使用者密碼
格式:
passwd [OPTIONS] UserName
常用選項:
-d 刪除指定使用者密碼
-l 鎖定指定使用者
-u 解鎖指定使用者
-e 強制使用者下次登入修改密碼
-f 強制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天開始警告
-i inactivedays:非活動期限
--stdin:從標準輸入接收使用者密碼,Ubuntu無此選項
chage 修改使用者密碼策略
格式:
chage [OPTIONS] UserName
常用選項:
-m 密碼可更改的最小天數。為零時代表任何時候都可以更改密碼。
-M 密碼保持有效的最大天數。
-W 使用者密碼到期前,提前收到警告資訊的天數。
-E 帳號到期的日期。過了這天,此帳號將不可用。
-d 上一次更改的日期
-I 停滯時期。如果一個密碼已過期這些天,那麼此帳號將不可用。
-l 例出當前的設定。由非特權使用者來確定他們的密碼或帳號何時過期。
其他命令(不重要)
- chfn 指定個人資訊
- chsh 指定shell,相當於usermod -s
- finger 可看使用者個人資訊
使用者組管理命令
groupadd 建立組
格式:
groupadd [option] groupname
常用選項:
-g GID 指明GID號
-r 建立系統組 CentOS 6之前(ID<500)CentOS 7以後(ID<1000)
groupmod 修改組
格式:
groupmod [option] groupname
常用選項:
-n group_name: 新名字
-g GID: 新的GID
groupdel 刪除組
格式:
groupdel [option] groupname
常用選項:
-f 強制刪除,即使是使用者的主組也強制刪除組
groupwd更改組密碼,修改附加組的成員關係
格式:
groupwd [option] groupname
常用選項:
-a user 把使用者新增到指定組中
-d user 從指定組上移除使用者
-A user1,user2... 設定有管理員許可權的使用者列表
newgrp臨時切換主組
格式:
newgrp [-] [group]
注意:使用者不屬於該組,則需要組密碼。
更改和檢視組成員
groupmems 可以管理附加組的成員關係
格式:
groupmems [options] [action]
常用選項:
-g, --group groupname #更改為指定組 (只有root)
-a, --add username #指定使用者加入組
-d, --delete username #從組中刪除使用者
-p, --purge #從組中清除所有成員
-l, --list #顯示組成員列表
groups 可檢視使用者組關係
格式:
#檢視使用者所屬組列表
groups [OPTION].[USERNAME]...
範例
範例1:建立組distro,其GID為2019
groupadd -g 2019 distro
範例2:建立使用者mandriva,其ID為1005,基本組為distro
useradd -u 1005 -g distro mandriva
#檢視建立的使用者
id mandriva
uid=1005(mandriva) gid=2019(distro) groups=2019(distro)
範例3:建立使用者mageia,其ID為1100,家目錄為/home/linux
useradd -u 1100 -d /home/linux mageia
#檢視
getent passwd mageia
mageia:x:1100:1100::/home/liunx:/bin/bash
範例4:給使用者mageia新增密碼,密碼為mageedu,並設定使用者密碼7天后過期
echo mageedu | passwd --stdin mageia;chage -M 7 mageia
#檢視密碼過期日期
chage -l mageia
Last password change : Nov 02, 2020
Password expires : Nov 09, 2020
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 7
Number of days of warning before password expires : 7
範例5:刪除mandriva使用者,但保留家目錄
#刪除使用者並刪除郵箱
userdel mandriva;rm -rf /var/mail/mandriva /var/spool/mail/mandriva
範例6:建立使用者slackware,其ID為2002,基本組為distro,附加組為peguin
groupadd peguin;useradd -u 2002 -g distro -G peguin slackware
範例7:修改slackware的預設shell為/bin/bash
usermod -s /bin/bash slackware
範例8:為使用者slackware新增附加組admins
groupadd admins;usermod -a -G admins slackware