1. 程式人生 > 實用技巧 >萬用字元的使用、使用者及組的管理

萬用字元的使用、使用者及組的管理

範例

範例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. 系統使用者:1-499(Centos6以前)1-999(Centos7之後)

      作用:對守護程序獲取資源進行許可權分配

    2. 登入使用者:500+(Centos6以前)1000+(Centos7之後)

      作用:給使用者進行互動式登入使用

使用者組

Linux中可以將一個或多個使用者加入使用者組中,使用者組是通過Group IDGID) 來唯一標識的。

  • 管理員組:root UID為0

  • 普通組:1~60000自動分配

    1. 系統使用者:1-499(Centos6

      以前)1-999(Centos7之後)

      作用:對守護程序獲取資源進行許可權分配

    2. 登入使用者:500+(Centos6以前)1000+(Centos7之後)

      作用:給使用者使用

使用者跟使用者組的關係

  • 使用者的主要組(primary group):使用者必須屬於一個且只有一個主組,預設建立使用者時會自動建立和使用者名稱同名的組,做為使用者的主要組,由於此組中只有一個使用者,又稱為私有組
  • 使用者的附加組(supplementary group): 一個使用者可以屬於零個或多個輔助組,附屬組

安全上下文(重要)

Linux安全上下文Context:執行中的程式,即程序 (process),以程序發起者的身份執行,程序所能夠訪問資源的許可權取決於程序的執行者的身份


比如:分別以root和普通使用者的身份執行/bin/cat /etc/shadow得到的結果是不同的,資源能否能被訪問,是由執行者的身份決定,非程式本身

使用者和組的配置檔案

  1. /etc/passwd 使用者及屬性資訊
  2. /etc/shadow使用者密碼及相關屬性
  3. /etc/group組及其屬性資訊
  4. /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