1. 程式人生 > 實用技巧 >使用者、組及許可權控制

使用者、組及許可權控制

使用者、組及許可權控制

使用者及組管理、使用者及許可權管理

1,使用者和組管理

1,資源分派

Authentication 認證:識別使用者
Authorization 授權:
Accoutiog 審計

token,identity (username/password)

2,Linux使用者:

Username/UID(UserID)
管理員:root,0
普通使用者:1-65535
系統使用者:

  守護程序獲取資源進行許可權分配

    1-499(centos 6),1-999(centos 7)不同的發行版會不同
  登入使用者(互動式登入):500+(centos 6),1000+(centos 7)

3,Linux使用者組:

Groupname/GID(GroupID)
管理員組:root,0
普通組:
系統組:1-499(centos 6),1-999(centos 7)
普通組:500+(centos 6),1000+(centos 7)

4,Linux安全上下文

執行中的程式:程序(process)

以程序發起者的身份執行
程序所能夠訪問的所有資源的許可權取決於程序的發起者的身份

5,Linux組的類別

使用者的基本組(主組):

  組名同用戶名,且僅包含一個使用者,即私有組
使用者的附加組(額外組)

6,Linux使用者和組相關的配置檔案:

  /etc/passwd 使用者及其屬性資訊(名稱、GID、基本組ID等)
  /etc/group 組及其屬性資訊

  /etc/shadow 使用者密碼及其相關屬性
  /etc/gshadow 組密碼及其相關屬性

/etc/passwd     

  name:password:UID:GID:GECOS:directory:shell

    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin

  使用者名稱:密碼佔位符:UID:GID(使用者的基本組ID):GECOS(使用者的備註資訊):主目錄:預設shell

/etc/group
  group_name:password:gid:user_list
  組名:組密碼佔位符:GID:以當前組為附加組的使用者列表(分隔符為逗號)

/etc/shadow

  user1: :17684:0:99999:7: : :
  ①使用者名稱

  ②加密了的密碼

  ③最近一次更改密碼的日期(相對時間,上次修改密碼到unix元年經過的天數)

  ④密碼的最小使用期限

  ⑤密碼的最大使用期限

  ⑥密碼警告時間段

  ⑦密碼禁用期(非活動期限)

  ⑧賬號過期日期(從 unix 元年到該日期經過的天數)

  ⑨保留欄位

順序:① : ② : ③ : ④ : ⑤ : ⑥ : ⑦ : ⑧ : ⑨

  加密機制:
    加密:明文-->密文
    解密:密文-->明文

    單向加密:提取資料指紋
      md5: message digest 訊息摘要 128bits
      sha1: secure hash algorithm 安全的雜湊演算法 160bits
      sha224:224bits
      sha256:256bits
      sha384:384bits
      sha512:512bits

      雪崩效應:初始條件的微小改變,將會引起結果的巨大改變;蝴蝶效應;

      定長輸出

  密碼的複雜性策略
    1、使用數字、大寫字母、小寫字母及特殊字元中至少3種
    2、足夠的長度;
    3、不要使用易猜測密碼,使用隨機密碼
    4、定期更換;不要使用最近曾經使用過的密碼

7,使用者和組相關的管理命令

①使用者建立:useradd

useradd [option] LOGIN

View Code

  -u UID: UID=[UID_MIN,UID_MAX] , 定義在/etc/login.defs

    UID: 使用者 ID 的數字值。此值必須為唯一的,除非使用了 -o

  -g GID: 指明使用者所屬的基本組,可以為組名,也可以為GID,注意:組名或GID必須已經存在 

  -c "COMMENT" :“使用者的註釋資訊”

View Code

  -d /PATH/TO/HOME/DIR 以指定的路徑為家目錄,注意:提前條件,該目錄事先不存在,如果存在,則報錯  

View Code

  -s SHELL 指明使用者的預設shell程式,可用列表在/etc/shells 檔案中

View Code

  -GGROUP1[,GROUP2,...[,GROUPN]]]: 為使用者指明附加組,組必須事先存在,多個附加組之間用逗號分隔

View Code

  -r: 建立系統使用者

   centos 6 id < 500
   centos 7 id < 1000

View Code

預設值設定:/etc/default/useradd檔案中 比如使用 useradd -D -s /etc/tcsh 來改變預設的shell

練習:建立使用者gentoo,附加組為distro和linux,預設shell為/bin/csh,註釋資訊為"gentoo distribution"

View Code

②groupadd:組建立

groupadd [OPTION].. group_name

-g GID: 指明GID號,[GID_MIN,GID_MAX] 定義在/etc/login.defs

View Code

-r:建立系統組
  centos 6 id < 500
  centos 7 id < 1000

View Code

③id: 檢視使用者相關的ID資訊

id [OPTION]... [USER]

 -u: UID 顯示UID

 -g: GID 顯示GID基本組id

 -G: Groups 顯示所有GID

 -n: NAME顯示使用者名稱或使用者組名

④su: 切換使用者或以其他使用者身份執行命令

  su [OPTION] [-] [user [args...]]

  切換使用者的方式:
    su UserName: 非登入式切換,即不會讀取目標使用者的配置檔案
    su - UserName: 登入式切換,會讀取目標使用者的配置檔案,完全切換

    注意:root使用者su到其他使用者無須密碼;非root使用者切換時需要密碼;

  換個身份執行命令
    su [-] UserName -c ‘COMMAND‘ 僅僅只是使用另一個使用者來執行命令,不進行使用者切換。
     [root@localhost~]# su - tom -c ‘echo $PATH‘
    /usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/tom/bin

    選項:
     -l "su -l username"相當於"su - username" 相當於登入式切換

View Code

 sudo

  sudo可以針對單個命令授予臨時許可權

  使用visudo進行修改,可以提示報錯

⑤usermod: 使用者屬性修改

usermod [OPTION] login

  -u UID: 新的UID

View Code

  -g GID: 新的基本組id 可以是組名或者gid 注意:前提條件,新的基本組必須事先存在

View Code

  -G GROUP1,GROUP2...GROUP# 新的附加組,原來的附加組將會覆蓋,若保留原有,則要同時使用-a選項,表示append -a選項必須作為首選項

View Code

  -s SHELL 新的預設shell

View Code

  -c "COMMENT": 新的註釋資訊[root@localhost~]# usermod -c "I am tom." tom

View Code

  -d HOME_DIR: 新的家目錄,原有家目錄中的檔案不會同時移動至新的家目錄,若要移動,則同時使用-m選項

View Code

  -l LOGIN_NAME: 新的名字

View Code

  -L: lock指定使用者,鎖定使用者的密碼,這會在使用者加密的密碼之前放置一個“!”

View Code

  -U: unlock指定使用者,解鎖使用者的密碼,這樣移除加密的密碼之前的“!”

View Code

  -e YYYY-MM-DD: 指定使用者賬號的過期日期 禁用日期 (從unix元年到該日期經過的天數)

View Code

  -f INACTIVE: 設定非活動期限

View Code

⑥passwd:給使用者新增密碼

 passwd [OPTION] UserName 修改指定使用者的密碼,僅root使用者有許可權

 passwd: 修改自己的密碼

View Code

常用選項:
 -l: 鎖定指定使用者, 在/etc/shadow 密碼加密欄位的前面加入"!!"

 -u: 解鎖指定使用者, 在/etc/shadow 密碼加密欄位的前面移除"!!"

 -n mindays: 指定最短使用期限

View Code

 -x maxdays: 指定最大使用期限

 -w warndays: 提前多少天開始警告使用者修改密碼

 -i inactivedays: 非活動期限(這段時間使用者不能用修改密碼,但是修改密碼後可以繼續使用)

 --stdin: 從標準輸入接收使用者的密碼
  echo "PASSWD" | passwd --stdin UserName

View Code

  注意:/dev/null, bit buckets 位桶 資料黑洞 空裝置,丟棄一切寫入其中的資料
     /dev/zero, 當你讀它的時候,它會提供無限的空字元

View Code

⑦userdel: 刪除使用者

 userdel [OPTION]... login
 -r 刪除使用者家目錄

View Code

⑧groupmod: 組屬性修改

 groupmod [OPTION]... group
 -n group_name: 新名字

 -g GID: 新的GID

⑨groupdel: 組刪除

  groupdel[OPTION]... group

  groupdel GROUP:新名字

⑩gpasswd:修改組密碼

  gpasswd [OPTION] GROUP

View Code

  -a user: 將user新增至指定組中

[root@localhost ~]# gpasswd -a tim gentoo
Adding user tim to group gentoo
[root@localhost ~]# id tim
uid=501(tim) gid=1502(testgrp) groups=1502(testgrp),508(gentoo)

  -d user: 刪除使用者user的以當期為組名的附加組

[root@localhost ~]# gpasswd -d tim gentoo
Removing user tim from group gentoo
[root@localhost ~]# id tim
uid=501(tim) gid=1502(testgrp) groups=1502(testgrp)

  -A user1,user2,...: 設定有管理許可權的使用者列表,使用者之間用逗號隔開

[root@localhost ~]# gpasswd -A tim,ben root

⑾newgrp命令,臨時切換基本組

 臨時切換基本組,切換後建立檔案,該檔案屬組是切換後的組
 如果使用者不屬於此組,切換需要密碼
 如果使用者屬於此組,切換不需要密碼

View Code

⑿pwck 檢查密碼檔案的完整性

 檢查密碼檔案的完整性,命令檢查使用者及其認證資訊的完整性

⒀chage:修改使用者密碼過期資訊

 chage [OPTION].. login     

View Code

 -d: LAST_DAY 格式 YYYY-MM-DD 上一次修改密碼的日期 (相對時間,unix元年到該日期經過的天數)

 -E: --expiredate EXPIRE_DATE 過期日期 格式 YYYY-MM--DD (相對時間,unix元年到該日期經過的天數)

 -I: --inactive INACTIVE 設定非活動期限

 -m: --mindays MIN_DAYS 設定密碼最短使用期限

 -M: --maxdays MAX_DAYS 設定密碼最長使用期限

 -W: --warndyas WARN_DAYS 設定提前多少天警告

⒁其他命令:chfn、chsh、finger

 chfn 修改使用者的註釋資訊

 chsh修改使用者的預設shell

View Code

 finger檢視使用者的詳細資訊(Linux未裝)

2,許可權管理:

①檔案的許可權主要針對三類物件進行定義

owner:屬主,u
group:屬組,g
other:其他,o

-rw-------. 1 root root 1631 5月 5 17:57 anaconda-ks.cfg

前三位為屬主許可權(紅色),中間三位為屬組許可權(粉色),後面三位為其他許可權(藍綠色)

②每個檔案針對每類訪問者都定義了三種許可權

r:readable 可讀
w:writable 可寫
x:execuable 可執行

檔案
 r:可使用檔案檢視類工具獲取其內容 cat tac more less head tail
 w:可修改其內容 nano vim vi
 x:可以把此檔案提前核心啟動為一個程序 bash

目錄
 r:可以使用ls檢視此目錄中檔案列表 ls
 w:可以在此目錄中建立檔案,也可刪除此目錄中的檔案 touch rm
 x:可以使用ls -l檢視此目錄中檔案列表,可以cd進入此目錄 ll cd

   許可權轉換二進位制數、八進位制數
    --- 000 0
    --x 001 1
    -w- 010 2
    -wx 011 3
    r-- 100 4
    r-x 101 5
    rw- 110 6
    rwx 111 7

    例如:640:rw-r----- rw-r-xr-x:755

③chmod: 修改檔案許可權

三種身份(user,group,others)各自的三個許可權(r,w,x)

使用八進位制修改

chmod [OPTION]... OCTAL-MODE FILE...

 -R 遞迴修改許可權

View Code

 使用八進位制數修改檔案或目錄許可權

View Code

使用MODE修改

 chmod [OPTION]... MODE[,MODE]... FILE...

MODE:
修改一類或多類使用者的所有許可權,若沒有任何許可權,則留空,a表示所有三類使用者
  u= 屬主
  g= 屬組
  o= 其他
  ug= 屬主、屬組
  a= 所有使用者
  u= ,g= 多個使用者指定許可權 使用逗號隔開

View Code

修改一類使用者某位或某些許可權
  u+: +表示增加許可權
  u-: -表示移除許可權

View Code

參考RFILE修改

chmod [OPTION].. --reference=RFILE FILE...

 參考RFILE檔案的許可權,修改FILE的許可權和RFILE一樣

View Code

④修改檔案的屬主,屬組

僅root有使用許可權    

chown:修改檔案的屬主

chown [OPTION]...[OWNER][:[GROUP]] FILE...
 用法:
  OWNER:修改檔案屬主

  OWNER:GROUP: 修改檔案屬主、屬組

  :GROUP: 修改檔案屬組

    注意:命令中的 : 可用 . 替換

       -R 遞迴修改檔案屬主、屬組

View Code

chown [option]... --reference=rfile file... 參考rfile的屬主屬組,修改file的屬主屬組

View Code

chgrp: 修改檔案的屬組

chgrp [OPTION]... GROUP FILE...

View Code

chgrp [option]... --reference=rfile file... 參考rfile的屬組,修改file的屬組

View Code

-R 遞迴修改目錄檔案的屬組

View Code

⑤umask: 檔案或目錄建立的遮罩碼

建立檔案: 666-umask

建立檔案的預設許可權

View Code

注意:如果某類的使用者的許可權減得的結果中存在x執行許可權,則將其許可權+1

View Code

建立目錄: 777-umask

 建立目錄的預設許可權

View Code

 umask 檢視umask

  [root@localhost~]# umask
  0022

 umask # 設定umask

  [root@localhost~]# umask 023
  [root@localhost~]# umask
  0023