用戶吃警、組、文件權(quán)限

用戶泳桦、組汤徽、文件權(quán)限

1~3 重點(diǎn)

  • 若對(duì)某個(gè)用戶的所屬組進(jìn)行修改,
    相應(yīng)權(quán)限變化不會(huì)立即生效灸撰,需要重新登錄來(lái)更新自己的tokenZ烁!浮毯!
  • 對(duì)某個(gè)文件的某一項(xiàng)權(quán)限修改完疫,是立即生效的

1 Linux安全模型

資源分派:

  • Authentication:認(rèn)證,驗(yàn)證用戶身份
  • Authorization:授權(quán),不同的用戶設(shè)置不同權(quán)限
  • Accouting | Audition:審計(jì)

當(dāng)用戶登錄時(shí),系統(tǒng)會(huì)自動(dòng)分配令牌token债蓝,包括用戶標(biāo)識(shí)和組成員等信息

1.1 用戶 user

Linux中每個(gè)用戶是通過(guò)User Id (UID)來(lái)唯一標(biāo)識(shí)的

[root@CentOS8 ~]#id -u           #查看當(dāng)前用戶UID
0
[root@CentOS8 ~]#id -u jacklee   #查看指定用戶UID
1000
  • 管理員:root, UID=0
  • 普通用戶:1-60000 自動(dòng)分配
    1. 系統(tǒng)用戶:對(duì)進(jìn)程獲取資源進(jìn)行權(quán)限分配
      1-499 (CentOS 6以前), 1-999 (CentOS7以后)
    2. 登錄用戶:給用戶進(jìn)行交互式登錄使用
      500+ (CentOS6以前), 1000+(CentOS7以后)

1.2 用戶組 group

Linux中可以將一個(gè)或多個(gè)用戶加入用戶組中壳鹤,用戶組是通過(guò)Group ID(GID) 來(lái)唯一標(biāo)識(shí)的

GID與UID可使用相同的數(shù)字,是相互獨(dú)立的部分(各自使用各自的1~999)

  • 管理員組:root, 0
  • 普通組
    1. 系統(tǒng)組:對(duì)進(jìn)程獲取資源進(jìn)行權(quán)限分配
      1-499 (CentOS 6以前), 1-999 (CentOS7以后)
    2. 登錄組:給用戶進(jìn)行交互式登錄使用
      500+ (CentOS6以前), 1000+(CentOS7以后)

1.3 用戶和組的關(guān)系

  • 用戶的主要組(primary group):用戶必須屬于一個(gè)且只有一個(gè)主組
    1. 默認(rèn)創(chuàng)建用戶時(shí)會(huì)自動(dòng)創(chuàng)建和用戶名同名的組饰迹,做為用戶的主要組
    2. 組中只有一個(gè)用戶芳誓,稱(chēng)為私有組
  • 用戶的附加組(supplementary group): 一個(gè)用戶可以屬于零個(gè)或多個(gè)輔助組

組的存在是為了進(jìn)行多個(gè)用戶批量授權(quán),提高效率

范例:查看指定ID的用戶和組信息

[root@CentOS8 ~]#id jacklee
uid=1000(jacklee) gid=1000(jacklee) groups=1000(jacklee)

1.4 安全上下文

運(yùn)行中的程序稱(chēng)之為進(jìn)程 (process)
進(jìn)程能夠訪問(wèn)資源的權(quán)限取決于進(jìn)程的 運(yùn)行者的身份啊鸭,與進(jìn)程本身無(wú)關(guān)G绿省!赠制!

范例:root能訪問(wèn)/etc/shadow 赂摆,而用戶jacklee不行

[root@CentOS8 ~]#cat /etc/shadow
root:$6$ogqukkz6XDmQP2c3$lYEMf.Fuf5sXr8Y4G4Upzc/ii6n2WszGq5Yfz6ImMbLY1QPY04a2JzyqVBYk9w4z5h/tSYxb3ymON0fYQbHlY1::0:99999:7:::
bin:*:18027:0:99999:7:::
daemon:*:18027:0:99999:7:::
adm:*:18027:0:99999:7:::
[jacklee@CentOS8 ~]$cat /etc/shadow
cat: /etc/shadow: Permission denied

2 配置文件

2.1 用戶和組的主要配置文件

  • /etc/passwd: 用戶及其屬性信息(名稱(chēng)、UID、主組ID等)
  • /etc/shadow: 用戶密碼及其相關(guān)屬性
  • /etc/group: 組及其屬性信息
  • /etc/gshadow:組密碼及其相關(guān)屬性

查看上述文件烟号,除了cat命令绊谭,還可使用getent更為方便!直接 getent + basename

[root@CentOS8/~]# getent passwd   #不需要寫(xiě)路徑
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
......

#也可以指定用戶查看
[root@CentOS8/~]# getent shadow jacklee
jacklee:$6$ByWgJCxL2f/Afybr$wuxHkxi04SjJmsbQAGyO82K537ZR9vv/LwRjKMKC1lkyrmBEH/OHiuHbU8UcdUdmfgc4LcTpeO/DWNuJ07ncl1:18475:0:99999:7:::

2.2 passwd文件格式

用戶名 密碼 UID GID 描述信息 家目錄 默認(rèn)shell
root x(表示隱藏) 0 0 root /root bash

在不理解格式的情況下汪拥,應(yīng)該主動(dòng)使用幫助功能达传,對(duì)于passwd操作如下:

[root@CENTOS7 ~]#whatis passwd
sslpasswd (1ssl)     - compute password hashes
passwd (1)           - update user's authentication tokens
passwd (5)           - password file   
#此時(shí)是為了查看文件,應(yīng)該查看第五章內(nèi)容喷楣!
[root@CENTOS7 ~]#man 5 passwd    #進(jìn)入文件后使用page翻頁(yè)趟大!
Each  line of the file describes a single user, and contains 
seven colon-separated fields:
name:password:UID:GID:GECOS:directory:shell  #七個(gè)項(xiàng)目的含義,用:號(hào)隔開(kāi)
用戶名:密碼:UID:GID:描述信息:家目錄:默認(rèn)shell

實(shí)際操作查看:
[root@CentOS8 ~]#cat /etc/passwd
最后一行:jacklee:x:1000:1000:jacklee:/home/jacklee:/bin/bash

注意:

  1. 密碼位置的字符 x 是為了兼容性留下的占位符铣焊,表示密碼文件不在此處
    (實(shí)際存放在 /etc/shadow文件)
  2. shell類(lèi)型為nologin表示此用戶不需要登錄逊朽,開(kāi)機(jī)自啟,用于程序的相關(guān)服務(wù)
  3. 在/etc/passwd文件中修改對(duì)應(yīng)信息曲伊,即可實(shí)現(xiàn)對(duì)應(yīng)功能叽讳,但一般不直接修改文本

2.3 shadow文件格式

shadow存放密碼與其策略,因此只有root用戶有權(quán)限查看7啬肌5涸椤!

[jacklee@CentOS8 ~]$cat /etc/shadow
cat: /etc/shadow: Permission denied   #無(wú)權(quán)限

同理懈糯,可使用 man 5 shadow查看格式

[root@CentOS8 ~]#cat /etc/shadow
root:$6$ogqukkz6XDmQP2c3$lYEMf.Fuf5sXr8Y4G4Upzc/ii6n2WszGq5Yfz6ImMbLY1QPY04a2JzyqVBYk9w4z5h/tSYxb3ymON0fYQbHlY1::0:99999:7:::
bin:*:18027:0:99999:7:::
...
jacklee:$6$QlCPFppDpXzzYYRB$Zot.igaBz4y8VWcAOKVjEfo54fnvC9GKd2DwmxOTXFCES5UU0zolUzUduI/607qQW6iLV04QFjxheuva/3lyd0:18449:0:99999:7:::
#其中jacklee的 salt 為 QlCPFppDpXzzYYRB

所有信息依次表示:

  1. 登錄名
  2. 密碼:字符 ! ! 表示密碼鎖定涤妒;字符 * 表示兼容占位符,即無(wú)密碼(多為系統(tǒng)用戶)
    一長(zhǎng)串亂碼表示密碼使用了 SHA512 加密赚哗,標(biāo)志是以 6 開(kāi)頭 即使密碼相同她紫,加密后也不一樣,因?yàn)?salt 代碼起作用(第2個(gè)和第3個(gè)$之間的字符)
  3. 上次改密碼的時(shí)間:從1970年1月1日起 到密碼最近一次被更改的時(shí)間(天)
    設(shè)置為0屿储,下次登錄必須修改(chage -d 0)
  4. 最短有效期:密碼再過(guò)幾天可以被變更(0表示隨時(shí)可被變更)
  5. 最長(zhǎng)有效期:密碼再過(guò)幾天必須被變更(99999表示永不過(guò)期)
  6. 密碼過(guò)期前幾天系統(tǒng)提醒用戶(默認(rèn)為一周)
  7. 寬限期:密碼過(guò)期幾天后帳號(hào)會(huì)被鎖定;叨铩!够掠!
  8. 從1970年1月1日算起民褂,多少天后帳號(hào)失效不填寫(xiě)此項(xiàng),表示永久
用戶名 密碼 上次修改 最短期限 最長(zhǎng)期限 提前提醒 寬限期 有效期
jacklee sha512加密 18449天 0=隨時(shí)可改 99999=不過(guò)期 7天 99999天 永久
#直接查看指定用戶的密碼策略
[root@CentOS8/~]# chage -l jacklee
Last password change                    : Aug 01, 2020
Password expires                    : never
Password inactive                   : never
Account expires                     : never
Minimum number of days between password change      : 0
Maximum number of days between password change      : 99999
Number of days of warning before password expires   : 7

#修改密碼策略:
[root@CentOS8/~]# chage jacklee
Changing the aging information for jacklee
Enter the new value, or press ENTER for the default

    Minimum Password Age [0]:    #按格式依次輸入設(shè)置值即可

注意:新建用戶都無(wú)密碼疯潭,默認(rèn)使用 !! 鎖定

  1. shadow文件中密碼處的字符 ! ! 表示密碼鎖定(如Ubuntu的root)
    普通用戶:將 !! 刪除后直接保存赊堪,則為空口令,可直接登錄
    nologin用戶:刪除 ! 也不能登錄竖哩,因?yàn)楸旧砭筒恍枰卿?/p>

    shadow中字符 * 與passwd中的 x 一樣雹食,為兼容而留下的占位符

  2. 普通用戶即使有密碼,root也可以直接刪除加密字符期丰,成為空口令

  3. 為了允許Ubuntu遠(yuǎn)程ssh登錄,需要修改/etc/ssh/sshd_config文件
    將#PermitRootLogin prohibit-password修改為 PermitRootLogin yes

  4. 快速生成一個(gè)12位隨機(jī)密碼

    [root@CentOS8/~]# tr -dc '[:alnum:]' < /dev/urandom | head -c 12 
    iQpKEMfMP1BZ
    
    [root@CentOS8/~]# openssl rand -base64 12 (可能帶符號(hào))
    Bf2goiJ9p7gfEWar
    
  5. 快速查看今天距離1970-1-1的天數(shù):

    echo `date +%s`/86400 | bc 
    

2.4 group文件格式

[root@CentOS8 ~]#cat /etc/group
root:x:0:
bin:x:1:
jacklee:x:1000:
......
組名 組密碼 GID 以當(dāng)前組為 附加組的 用戶列表
root x 0

組密碼存在的意義:

  • 管理員添加組員,相當(dāng)于賦予權(quán)限钝荡,需要驗(yàn)證密碼
  • 用戶主動(dòng)加入組街立,驗(yàn)證密碼通過(guò)即可

注意:

  1. 若有多個(gè)組員,使用逗號(hào)分隔
  2. 同理埠通,x 表示密碼儲(chǔ)存在其他文件(gshadow)

2.5 gshadow文件格式

[root@CentOS8 ~]#cat /etc/gshadow
root:::
bin:::
jacklee:!::
組名 組密碼 管理員列表 以當(dāng)前組為附加組的用戶列表
jacklee 赎离!鎖定 無(wú) 無(wú)

注意:

  1. 空密碼表示沒(méi)有密碼,因此普通用戶不能自己加入
  2. 無(wú)管理員端辱,則默認(rèn)管理員為root
  3. 同理梁剔,!表示鎖定

2.6 文件操作

  • getent直接查看文件舞蔽,也可指定用戶查看

    getent passwd
    getent shadow jacklee
    
  • vipw和vigr(vi + 文件名:編輯文件內(nèi)容)

  • pwck和grpck(文件名+check:具有檢查語(yǔ)法錯(cuò)誤的功能)

    [root@CentOS8 ~]#pwck  檢查passwd文件的語(yǔ)法錯(cuò)誤
    user 'pulse': directory '/var/run/pulse' does not exist
    user 'gluster': directory '/run/gluster' does not exist
    user 'saslauth': directory '/run/saslauthd' does not exist
    user 'clevis': directory '/var/cache/clevis' does not exist
    user 'pipewire': directory '/var/run/pipewire' does not exist
    user 'gnome-initial-setup': directory '/run/gnome-initial-setup/' does not exist
    pwck: no changes
    

3 用戶與組的管理

用戶
新建 useradd groupadd
修改屬性 usermod groupmod
修改密碼 passwd gpasswd
修改密碼策略 chage
刪除 userdel groupdel
查看用戶的屬組 id user_name groups user_name
管理組員 gpasswd 或 groupmems

3.0 重點(diǎn)&易錯(cuò)點(diǎn)

  • 要求下次登錄必須修改密碼

    passwd -e jack
    chage -d 0 jack
    

3.1 用戶創(chuàng)建@@@

useradd 命令可以創(chuàng)建新的Linux用戶

useradd [options] NEWUSER

-r  創(chuàng)建系統(tǒng)用戶  CentOS 6之前: ID<500荣病,CentOS 7以后: ID<1000
-u  UID(指定想要的UID,不可重復(fù))
-o  不檢查UID唯一性 '因此 -uo 相當(dāng)于對(duì)用戶創(chuàng)建硬鏈接I痢8雠琛!一個(gè)UID兩個(gè)name
-g  GID 指明用戶所屬基本組朵栖,'輸入時(shí)可指定組名或GID
-s  SHELL 指明用戶的默認(rèn)shell程序颊亮,可用列表在/etc/shells文件中
    '在Ubuntu中創(chuàng)建新用戶默認(rèn)使用sh而不是bash(可修改配置)
-d  DIR 以指定的路徑為家目錄  '必須是不存在的目錄
-m  指定UID小于1000時(shí),加上 -m 可將其視為普通用戶陨溅,并創(chuàng)建家目錄 
-c  COMMENT 用戶的注釋信息

-p  指定密碼 '要求輸入的內(nèi)容為加密后的結(jié)果V栈蟆!门扇!

典型應(yīng)用:

  • 創(chuàng)建指定信息用戶
useradd -r -u 48 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache
#創(chuàng)建一個(gè)系統(tǒng)用戶雹有,UID=48,屬于主組apache悯嗓,shell類(lèi)型nologin件舵,指定家目錄為/var/www,注釋信息為Apache脯厨,用戶名為apache
  • 批量創(chuàng)建用戶

    newuser passwd 格式文件
    
  • 批量修改密碼(一鍵修改密碼)

    echo username:passwd | chpasswd
    

注意

  1. 普通用戶默認(rèn)會(huì)創(chuàng)建家目錄铅祸,系統(tǒng)用戶無(wú)家目錄
  1. 各個(gè)系統(tǒng)生成加密密碼的方式

    • Centos8 生成sha512加密密碼

      #選項(xiàng)-6表示SHA512加密算法,centos8特有
      [root@CentOS8/~]# openssl passwd -6 mimamima
      $6$nPam4qhiviJsajFj$VPu0EHBZ4kVc1rJNyRWkg76aZUwPrkcXHDX3v7RebfKMVPD6Pw3j5dSHKPyj9azStLuKbTeG4inmVV3mTlCpc1
      
    • Centos7 使用Python 生成sha512加密密碼

      python -c 'import crypt,getpass;pw="jacklee";print(crypt.crypt(pw))'
      
      [root@CentOS7/~]# python -c 'import crypt,getpass;pw="jacklee";print(crypt.crypt(pw))'
      $6$X3QI12Kgouk0r.VN$yTQDu9kxetQ3H1X2W8paI.4TnpIGN2YorprSub3XLAKWEaA0UGZ/iA0zPRN2X6kXIpXwl50SUFFJGN.JgBc4r1
      
    • Centos6 生成sha512加密密碼

      [root@CentOS6/~]# grub-crypt --sha-512
      Password:       #需要手動(dòng)輸入
      Retype password: 
      $6$bQkDf7TFR/YkAfRD$XfxboLIuWxcauEwuLKGOCe4FiN4952XzbBciKXq0.sBPXIfuB0ejTKVpIP3viVma8dbDOCIhA4O7pZO2zWQSh0
      
      #使用加密結(jié)果創(chuàng)建新用戶合武,名為jacky
      [root@CentOS6/~]# useradd -p '$6$bQkDf7TFR/YkAfRD$XfxboLIuWxcauEwuLKGOCe4FiN4952XzbBciKXq0.sBPXIfuB0ejTKVpIP3viVma8dbDOCIhA4O7pZO2zWQSh0' jacky
      [root@CentOS6/~]# id  jacky
      uid=500(jacky) gid=500(jacky) groups=500(jacky)
      
  1. useradd命令的默認(rèn)設(shè)置临梗,在文件/etc/defalut/useradd

    #使用useradd  -D可查看當(dāng)前設(shè)置
       [root@CentOS8/~]# useradd -D
       GROUP=100        系統(tǒng)默認(rèn)組users的GID
       HOME=/home       默認(rèn)家目錄
       INACTIVE=-1      密碼過(guò)期的寬限期
       EXPIRE=          賬戶有效期(從1970開(kāi)始算)
       SHELL=/bin/bash  默認(rèn)shell類(lèi)型
       SKEL=/etc/skel/  新用戶的家目錄中'默認(rèn)創(chuàng)建的文件的模板
       CREATE_MAIL_SPOOL=yes  是否創(chuàng)建郵箱
       
    #編輯默認(rèn)設(shè)置
    useradd -D            顯示默認(rèn)設(shè)置
    useradd -D -s shell   修改默認(rèn)值
    useradd -D -b 家目錄   修改默認(rèn)值
    useradd -D -g group   修改默認(rèn)值
    
  1. adduser命令在centos中與useradd等效,在Ubuntu中有所不同

    [root@CentOS8 ~]#which adduser
    /usr/sbin/adduser
    [root@CentOS8 ~]#which useradd
    /usr/sbin/useradd
    [root@CentOS8 ~]#ll /usr/sbin/adduser
    lrwxrwxrwx. 1 root root 7 May 11  2019 /usr/sbin/adduser -> useradd
    

3.2 用戶屬性修改(少用)

usermod 命令可以修改用戶屬性

usermod [OPTION] user
-u UID: 新UID
-l login_name: '設(shè)置新的名字
-g GID: 新GID或新組名
-G GROUP1[,GROUP2,...[,GROUPN]]]:
   設(shè)置新的附加組稼跳,原來(lái)的附加組將會(huì)被覆蓋盟庞;
   若想保留原有的附加組,則要同時(shí)使用 -a選項(xiàng)
-s 新的默認(rèn)SHELL
-c 新的注釋信息
-d newdir 修改家目錄為newdir
   新指定的家目錄不會(huì)自動(dòng)創(chuàng)建汤善,若要'創(chuàng)建新家目錄并移動(dòng)原家數(shù)據(jù)什猖,同時(shí)使用-m選項(xiàng)

-L lock指定一個(gè)用戶,在/etc/shadow 密碼欄的增加 ! '表示進(jìn)行鎖定票彪,禁止登錄
-U unlock指定一個(gè)用戶,將 /etc/shadow 密碼欄的!拿掉,'表示解鎖
   若提示禁止解鎖不狮,同時(shí) -p 設(shè)置新密碼即可
   
-e YYYY-MM-DD: 指明用戶賬號(hào)過(guò)期日期
-f INACTIVE: 設(shè)定非活動(dòng)期限

3.3 刪除用戶

userdel 可刪除Linux 用戶

userdel [OPTION]... user

-f, --force  強(qiáng)制刪除
-r, --remove 刪除用戶家目錄和郵箱

注意:若不加選項(xiàng)直接刪除降铸,無(wú)法刪除用戶的配置文件

3.4 查看用戶相關(guān)的ID信息

id [OPTION]... [USER]

-u: 顯示UID
-g: 顯示GID
-G: 顯示用戶的所屬組的ID(主+附加)
-n: 顯示名稱(chēng)'需配合ugG使用
[root@CentOS8/~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@CentOS8/~]# id -u
0
[root@CentOS8/~]# id -u jacklee
1000
[root@CentOS8/~]# id jacky
uid=1001(jacky) gid=1001(jacky) groups=1001(jacky)

3.5 切換用戶@@@

su: 即switch user

可以切換用戶身份

切換用戶的兩種方式:

  • su UserName:非登錄式切換,即不會(huì)讀取目標(biāo)用戶的配置文件摇零,不改變當(dāng)前工作目錄
  • su - UserName:登錄式切換推掸,會(huì)讀取目標(biāo)用戶的配置文件,切換至家目錄驻仅,完全切換

說(shuō)明:

  1. root 切換至其他用戶無(wú)須密碼谅畅;其他用戶切換時(shí)需要密碼
  2. 使用 su 切換之后,exit 返回原用戶噪服,避免重復(fù) su 導(dǎo)致bash子進(jìn)程環(huán)境混亂

以指定用戶的身份執(zhí)行命令

普通用戶想要執(zhí)行高級(jí)命令:

su [-] UserName -c 'COMMAND'

#用戶jacklee查看shadow文件
[jacklee@CentOS8 ~]$su - root -c "getent shadow"
Password:    #需要輸入密碼
root:$6$zPRAwzA.VZmVBIZ0$z5mVDGTn7jdDUBUINVr2at9kI45e9ScHQGaLjPqIFKnOVEv51Fq6feVhrJH33MEz/.m/XXvk/o6ro0kj22Jva1::0:99999:7:::
bin:*:18027:0:99999:7:::
daemon:*:18027:0:99999:7:::
adm:*:18027:0:99999:7:::
......

禁止普通用戶登錄

su -s /sbin/nologin user    

3.6 設(shè)置用戶密碼@@@

新建用戶useradd命令默認(rèn)不設(shè)置密碼

passwd 可以修改用戶密碼

passwd [OPTIONS] UserName

-d 刪除指定用戶密碼
-l 鎖定指定用戶
-u 解鎖
-e 強(qiáng)制用戶下次登錄修改密碼!!!!!!!!!!!同   chage -d 0 jack
-f 強(qiáng)制操作

-n 指定最短使用期限
-x 指定最長(zhǎng)使用期限
-w 指定提醒期限
--stdin:從標(biāo)準(zhǔn)輸入接收用戶密碼毡泻,'ubuntu沒(méi)有此選項(xiàng)

對(duì)密碼策略各種時(shí)間期限的圖解:

  • passwd expiration date —— 密碼到期日期
  • inactive days —— 到期后的寬限期
  • inactive dte —— 密碼失效日期

常用功能:一鍵修改密碼

#適用各種Linux版本:
[root@CentOS8/~]# echo -e '123456\n123456' | passwd jacky
Changing password for user jacky.
New password: BAD PASSWORD: The password is shorter than 8 characters
Retype new password: passwd: all authentication tokens updated successfully.

#適用紅帽系列:
[root@CentOS8/~]# echo 'jacklee' | passwd --stdin jacky
Changing password for user jacky.
passwd: all authentication tokens updated successfully.

3.7 修改密碼策略

chage 可以修改用戶密碼策略

chage [OPTION]... LOGIN

選項(xiàng):

-l  顯示密碼策略
-d   LAST_DAY   -d 0 表示下次登錄必須修改密碼
-m --mindays MIN_DAYS
-M --maxdays MAX_DAYS
-W --warndays WARN_DAYS
-I --inactive INACTIVE 密碼過(guò)期后的寬限期
-E --expiredate EXPIRE_DATE 用戶的有效期

范例:

[root@CentOS8 ~]#chage -m 3 -M 42 -W 14 -I 7 -E 2020-10-10 jacklee
#將用戶jacklee的密碼策略進(jìn)行重新定義
[root@CentOS8 ~]#chage -l jacklee 
Last password change                    : Jul 06, 2020
Password expires                    : Aug 17, 2020
Password inactive                   : Aug 24, 2020
Account expires                     : Oct 10, 2020
Minimum number of days between password change      : 3
Maximum number of days between password change      : 42
Number of days of warning before password expires   : 14
[root@CentOS8 ~]#getent shadow jacklee 
jacklee:$6$QlCPFppDpXzzYYRB$Zot.igaBz4y8VWcAOKVjEfo54fnvC9GKd2DwmxOTXFCES5UU0zolUzUduI/607qQW6iLV04QFjxheuva/3lyd0:18449:3:42:14:7:18545:

#下一次登錄強(qiáng)制重設(shè)密碼
[root@CentOS8 ~]#chage -d 0 jacklee 
[root@CentOS8 ~]#getent shadow jacklee 
jacklee:$6$QlCPFppDpXzzYYRB$Zot.igaBz4y8VWcAOKVjEfo54fnvC9GKd2DwmxOTXFCES5UU0zolUzUduI/607qQW6iLV04QFjxheuva/3lyd0:0:3:42:14:7:18545:
[root@CentOS8 ~]#chage -l jacklee 
Last password change                : password must be changed
Password expires                    : password must be changed
Password inactive                   : password must be changed
Account expires                     : Oct 10, 2020
Minimum number of days between password change      : 3
Maximum number of days between password change      : 42
Number of days of warning before password expires   : 14

3.8 用戶相關(guān)的其它命令

  • chfn 指定個(gè)人信息
  • chsh 指定shell( 等于命令usermod -s )
  • finger 可看用戶個(gè)人信息
[root@CentOS8 ~]#chfn jacklee    #手動(dòng)輸入相關(guān)信息
Changing finger information for jacklee.
Name [jacklee]: abb     #將會(huì)在開(kāi)機(jī)界面顯示!P具帧Q雷健!>挫P安!
Office []: bba
Office Phone []: 110
Home Phone []: 120
Finger information changed.

[root@CentOS8 ~]#chsh -s /bin/sh jacklee 
Changing shell for jacklee.
Shell changed.
[root@CentOS8 ~]#getent passwd jacklee 
jacklee:x:1000:1000:abb,bba,110,120,:/home/jacklee:/bin/sh

注意:若修改普通用戶的shell類(lèi)型為nologin无拗,將導(dǎo)致用戶無(wú)法登錄


3.9 管理組

組沒(méi)有"管理員組"的說(shuō)法带到,root組就是一個(gè)名為root的普通組

3.9.1 創(chuàng)建組

groupadd實(shí)現(xiàn)創(chuàng)建組

groupadd [OPTION]... group_name

-g GID 指明GID號(hào);[GID_MIN, GID_MAX]
-r 創(chuàng)建系統(tǒng)組英染,CentOS 6之前: ID<500揽惹,CentOS 7以后: ID<1000

用法:

groupadd -g 48 -r apache
#表示創(chuàng)建組名為apache、GID為48的系統(tǒng)組

3.9.2 修改組

groupmod [OPTION]... group

-n group_name: 新名字
-g GID: 新的GID

3.9.3 刪除組

groupdel [options] GROUP  #此操作只能刪除空組

-f, --force 強(qiáng)制刪除四康,即使是用戶的主組也強(qiáng)制刪除組

[root@CentOS8/~]# id jacky
uid=1001(jacky) gid=1001(jacky) groups=1001(jacky)
[root@CentOS8/~]# groupdel -f jacky
[root@CentOS8/~]# id jacky
uid=1001(jacky) gid=1001 groups=1001

3.9.4 管理組成員

  • gpasswd命令

    • 修改組密碼

      gpasswd GROUP
      [root@CentOS8/~]# gpasswd jacklee
      Changing the password for group jacklee
      New Password:   #手動(dòng)輸入密碼
      Re-enter new password: 
      
    • 修改組的成員關(guān)系

      gpasswd [OPTION] GROUP
      
      常見(jiàn)選項(xiàng):
      -a user    將user添加至指定組中
      -d user    從指定組中移除用戶user
      -A user1,user2,... 批量設(shè)置管理員
      
      [root@CentOS8/~]# id jacky
      uid=1001(jacky) gid=1003(jacky) groups=1003(jacky)
      [root@CentOS8/~]# gpasswd -a jacky admin
      Adding user jacky to group admin
      [root@CentOS8/~]# id jacky
      uid=1001(jacky) gid=1003(jacky) groups=1003(jacky),1002(admin)
      [root@CentOS8/~]# groups jacky
      jacky : jacky admin
      [root@CentOS8/~]# getent group admin
      admin:x:1002:jacky
      
      [root@CentOS8/~]# gpasswd -d jacky admin 
      Removing user jacky from group admin
      [root@CentOS8/~]# groups jacky
      jacky : jacky
      [root@CentOS8/~]# id jacky
      uid=1001(jacky) gid=1003(jacky) groups=1003(jacky)
      [root@CentOS8/~]# getent group admin
      admin:x:1002:
      
  • groupmems命令可以顯示搪搏、管理組成員關(guān)系(格式與gpasswd不同: -g group)

    groupmems [options] [action]
    
    -g groupname 更改為指定組 (只有root可用)
    
    -a 指定用戶加入組  格式:groupmems -a user -g group
    -d 從組中刪除用戶  格式:groupmems -d user -g group
    
    -p 從組中清除所有成員
    -l 顯示組成員列表
    
  • groups命令 可查看用戶的屬組

    #查看用戶所屬組列表
    groups  [USERNAME]...
    [root@CentOS8/~]# groupmems -a jacky -g root
    [root@CentOS8/~]# groups jacky
    jacky : jacky root
    [root@CentOS8/~]# id jacky
    uid=1001(jacky) gid=1003(jacky) groups=1003(jacky),0(root)
    

3.9.5 臨時(shí)切換主組

newgrp命令可以臨時(shí)切換主組, 如果用戶本不屬于此組闪金,則需要組密碼

newgrp [-] [group]

如果使用 - 選項(xiàng)疯溺,可以初始化用戶環(huán)境

如果用戶不屬于此組,則需要組密碼


4 文件權(quán)限管理

4.0 重點(diǎn)

討論文件權(quán)限的前提哎垦,必須指明是對(duì)哪個(gè)或哪一類(lèi)用戶的權(quán)限

討論文件權(quán)限的前提囱嫩,必須指明是對(duì)哪個(gè)或哪一類(lèi)用戶的權(quán)限

討論文件權(quán)限的前提,必須指明是對(duì)哪個(gè)或哪一類(lèi)用戶的權(quán)限

4.1 所有者和所屬組

4.1.1 設(shè)置文件的所有者chown@@@

chown 命令可以修改文件的屬主漏设,也可以修改文件所屬組

chown [OPTION]... [OWNER][:[GROUP]] FILE...   #冒號(hào)也可用 . 替換
chown [OPTION]... --reference=RFILE FILE...

用法說(shuō)明:
OWNER 只修改所有者
OWNER:GROUP 同時(shí)修改所有者和屬組
:GROUP 只修改屬組
-R: 遞歸
--reference=RFILE 參考指定的的屬性墨闲,來(lái)修改

[root@CentOS8 data]#cp /etc/fstab f1.txt
[root@CentOS8 data]#ll
total 4
-rw-r--r-- 1 root root 709 Jul  8 16:08 f1.txt
[root@CentOS8 data]#chown jacklee f1.txt 
[root@CentOS8 data]#ll
total 4
-rw-r--r-- 1 jacklee root 709 Jul  8 16:08 f1.txt
[root@CentOS8 data]#chown :jacklee f1.txt 
[root@CentOS8 data]#ll
total 4
-rw-r--r-- 1 jacklee jacklee 709 Jul  8 16:08 f1.txt
[root@CentOS8 data]#chown root:bin f1.txt 
[root@CentOS8 data]#ll
total 4
-rw-r--r-- 1 root bin 709 Jul  8 16:08 f1.txt
[root@CentOS8 data]#chown jacklee.root f1.txt   #用.代替:
[root@CentOS8 data]#ll
total 4
-rw-r--r-- 1 jacklee root 709 Jul  8 16:08 f1.txt

[root@CentOS8 data]#touch f2.txt
[root@CentOS8 data]#ll
total 4
-rw-r--r-- 1 jacklee bin  709 Jul  8 16:08 f1.txt
-rw-r--r-- 1 root    root   0 Jul  8 16:12 f2.txt
[root@CentOS8 data]#chown --reference=f1.txt  f2.txt 
[root@CentOS8 data]#ll
total 4
-rw-r--r-- 1 jacklee bin 709 Jul  8 16:08 f1.txt
-rw-r--r-- 1 jacklee bin   0 Jul  8 16:12 f2.txt

4.1.2 設(shè)置文件的屬組信息 chgrp

chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...

-R 遞歸

此命令也可由 chown :GROUP完成

4.2 文件權(quán)限@@@

4.2.0 重要原則

討論文件權(quán)限的前提,必須指明是對(duì)哪個(gè)或哪一類(lèi)用戶的權(quán)限

討論文件權(quán)限的前提郑口,必須指明是對(duì)哪個(gè)或哪一類(lèi)用戶的權(quán)限

討論文件權(quán)限的前提鸳碧,必須指明是對(duì)哪個(gè)或哪一類(lèi)用戶的權(quán)限


并不是每個(gè)文件系統(tǒng)都支持設(shè)置權(quán)限

例如盾鳞,Linux也支持FAT文件系統(tǒng),但是此系統(tǒng)不能設(shè)置權(quán)限


4.2.1 文件權(quán)限說(shuō)明

  • 文件的權(quán)限主要針對(duì)三類(lèi)對(duì)象進(jìn)行定義(ACL權(quán)限設(shè)置第四類(lèi))
    owner 屬主, u
    group 屬組, g
    other 其他, o
    用戶的最終權(quán)限杆兵,根據(jù)ugo的順序從左往右進(jìn)行匹配雁仲!一旦匹配到,權(quán)限立即生效
  • 每個(gè)文件針對(duì)每類(lèi)訪問(wèn)者都定義了三種權(quán)限
    r Readable
    w Writable
    x eXcutable

對(duì)root來(lái)說(shuō)琐脏,只有 x 權(quán)限可能會(huì)受到限制!8淄谩H杖埂!6杳邸0悍鳌!E撞8窈睢!2浦联四!

  • 對(duì)文件的權(quán)限的意義(能否刪除文件是由文件夾權(quán)限決定的
    1. 讀 r ——能訪問(wèn)文件
    2. 寫(xiě) w ——能修改文件內(nèi)容
    3. 執(zhí)行 x ——能運(yùn)行此程序
  • 對(duì)目錄的權(quán)限的意義(一般情況下目錄同時(shí)給 r-x
    1. 讀 r ——可以在外面使用ls查看此目錄中文件列表
    2. 寫(xiě) w——可在此目錄新建或刪除文件
      與 被刪除的文件具有什么權(quán)限 無(wú)關(guān)!3沤獭朝墩!
    3. 執(zhí)行 x——可cd進(jìn)入此目錄(最小權(quán)限)
    4. 特別 X——遞歸設(shè)置時(shí)只給目錄x權(quán)限,避開(kāi)文件
other對(duì)目錄的權(quán)限: r - - - - x r - x
不在目錄中 ls 可看到文件列表 Permission denied
不在目錄中 ll 可看到文件列表 Permission denied
能否 cd 進(jìn)入目錄 Permission denied 能進(jìn)入
cd 進(jìn)入目錄中 ls —— Permission denied
已知文件名能否查看文件 Permission denied 可查看文件屬性及內(nèi)容

[jacklee@centos8/~]$ ll -d /data/
drwxr-xr--. 3 root root 45 Aug  2 20:26 /data/      o=r的情況(ls成功伟姐,cd失斒账铡)
[jacklee@centos8/~]$ ls /data/
ls: cannot access '/data/f1.txt': Permission denied
ls: cannot access '/data/f2.txt': Permission denied
ls: cannot access '/data/dir': Permission denied
dir  f1.txt  f2.txt
[jacklee@centos8/~]$ cd /data/
-bash: cd: /data/: Permission denied

[jacklee@centos8/~]$ ll -d /data/
drwxr-x--x. 3 root root 45 Aug  2 20:26 /data/      o=x的情況(ls失敗,cd成功)
[jacklee@centos8/~]$ ls /data/
ls: cannot open directory '/data/': Permission denied
[jacklee@centos8/~]$ cd /data/
[jacklee@centos8/data]$ ls
ls: cannot open directory '.': Permission denied

權(quán)限還可用數(shù)字代替字母表示

因此總共存在8種不同的權(quán)限搭配方式:

--- --x -w- -wx r-- r-x rw- rwx
000 001 010 011 100 101 110 111
0 1 2 3 4 5 6 7

范例 :

  • 640 rw- r-- ---
  • 755 rwx r-x r-x

4.2.2 修改文件權(quán)限 chmod

格式: 
chmod who opt mod file
who= u,g,o,a
opt= +,-,=     '修改某個(gè)權(quán)限使用 +,-   修改全部權(quán)限使用 =
mod= r,w,x 

-R 遞歸修改權(quán)限(用于多級(jí)目錄) 
#參考RFILE文件的權(quán)限愤兵,將FILE的修改為與RFILE一致
chmod opt --reference=RFILE FILE...

#清空所有類(lèi)型用戶權(quán)限
chmod a=  file或/dir  

使用格式舉例:

chmod u+wx,g-r,o=rx file
chmod -R g+rwX /dir
chmod 644 file

實(shí)操范例:

[root@CentOS8 data]#ll
total 4
-rw-r--r-- 1 root root 709 Jul  8 16:08 f1.txt
-rw-r--r-- 1 root root   0 Jul  8 16:12 f2.txt
[root@CentOS8 data]#chmod u-w,g+w,o-r f1.txt 
[root@CentOS8 data]#ll
total 4
-r--rw---- 1 root root 709 Jul  8 16:08 f1.txt   #對(duì)應(yīng)權(quán)限已修改
-rw-r--r-- 1 root root   0 Jul  8 16:12 f2.txt

[root@CentOS8 data]#chmod u=rwx,g=rw f2.txt 
[root@CentOS8 data]#ll
total 4
-r--rw---- 1 root root 709 Jul  8 16:08 f1.txt
-rwxrw-r-- 1 root root   0 Jul  8 16:12 f2.txt   #對(duì)應(yīng)權(quán)限已修改(有x權(quán)限變綠)

[root@CentOS8 data]#chmod 666 f1.txt             #直接輸入八進(jìn)制權(quán)限
[root@CentOS8 data]#ll
total 4
-rw-rw-rw- 1 root root 709 Jul  8 16:08 f1.txt   #對(duì)應(yīng)權(quán)限已修改為666
-rwxrw-r-- 1 root root   0 Jul  8 16:12 f2.txt

子目錄權(quán)限遞歸范例:

[root@CentOS8 data]# ll
total 0
drwxr-xr-x 3 root root 16 Jul  8 19:40 a1   #原始屬性
[root@CentOS8 data]# ll a1 
total 0
drwxr-xr-x 3 root root 16 Jul  8 19:40 a2   #a2的原始屬性
[root@CentOS8 data]# ll a1/a2
total 0
drwxr-xr-x 2 root root 6 Jul  8 19:40 a3    #a3的原始屬性
[root@CentOS8 data]# chmod a-x a1       #不使用遞歸  
[root@CentOS8 data]# ll
total 0
drw-r--r-- 3 root root 16 Jul  8 19:40 a1   #a1屬性修改成功
[root@CentOS8 data]# ll a1
total 0
drwxr-xr-x 3 root root 16 Jul  8 19:40 a2   #a2無(wú)變化
[root@CentOS8 data]# ll a1/a2
total 0
drwxr-xr-x 2 root root 6 Jul  8 19:40 a3    #a3無(wú)變化

[root@CentOS8 data]# chmod -R a-x a1    #使用遞歸
[root@CentOS8 data]# ll a1
total 0
drw-r--r-- 3 root root 16 Jul  8 19:40 a2   #a2修改成功
[root@CentOS8 data]# ll a1/a2
total 0
drw-r--r-- 2 root root 6 Jul  8 19:40 a3    #a3修改成功

4.2.3 新建文件和目錄的默認(rèn)權(quán)限

umask的值可以用來(lái)設(shè)置創(chuàng)建新文件的權(quán)限

  • 新建文件的默認(rèn)權(quán)限為 666-umask的計(jì)算結(jié)果
    • root默認(rèn)umask=022鹿霸,新建文件權(quán)限為644=rw-r--r--
    • 普通用戶默認(rèn)umask=002,新建文件權(quán)限為664=rw-rw-r--
    • 當(dāng)umask被修改時(shí)秆乳,所得結(jié)果有可能出現(xiàn)奇數(shù)(表示文件有執(zhí)行權(quán)限)懦鼠,
      此時(shí)應(yīng)將其權(quán)限+1(消除x權(quán)限),防止執(zhí)行病毒**矫夷;若為偶數(shù)則不變
  • 新建目錄的默認(rèn)權(quán)限為 777-umask的計(jì)算結(jié)果目錄的執(zhí)行權(quán)限不存在風(fēng)險(xiǎn)
    • root新建目錄的權(quán)限為755
    • 普通用戶新建目錄的權(quán)限為775

臨時(shí)修改 uamsk

umask #  (#即為想要的設(shè)置)

持久保存umask葛闷,應(yīng)該修改配置文件

  • 全局設(shè)置: /etc/bashrc
  • 用戶設(shè)置:~/.bashrc

為了更直觀顯示出umask的數(shù)值表達(dá)的意思,可使用 -S 選項(xiàng)

[root@CentOS8 data]#umask
0022
[root@CentOS8 data]#umask -S
u=rwx,g=rx,o=rx
#此即為當(dāng)前的默認(rèn)設(shè)置

4.4 Linux文件系統(tǒng)上的特殊權(quán)限

  • 三種常見(jiàn)的權(quán)限:r, w, x
  • 三種特殊權(quán)限:SUID, SGID, Sticky
權(quán)限名稱(chēng) SUID SGID Sticky
功能說(shuō)明 繼承所有者權(quán)限 繼承所屬組權(quán)限 防止外人刪除文件
適用范圍 只對(duì)bin文件設(shè)置 文件和目錄 只對(duì)目錄設(shè)置
添加權(quán)限的操作 u+s 或 4xxx g+s 或 2xxx o+t 或 1xxx
刪除權(quán)限的操作 u-s g-s o-t
添加權(quán)限之后的顯示 rwS 或 rws rwS 或 rws r - T 或 r - t
特別說(shuō)明 設(shè)置在目錄用于協(xié)作

關(guān)于添加權(quán)限之后的顯示:rwS表示沒(méi)有 x 權(quán)限 双藕,rws 表示 rwxs 權(quán)限全部都有

刪除權(quán)限的操作:也可以 chmod xxx file/dir 直接覆蓋


4.4.1 特殊權(quán)限SUID—繼承own

SUID只對(duì)二進(jìn)制可執(zhí)行程序有效淑趾,設(shè)置在目錄上無(wú)意義

設(shè)置此權(quán)限的前提:進(jìn)程有屬主和屬組;文件有屬主和屬組

chmod u+s FILE...
chmod 4xxx FILE
chmod u-s FILE...

SUID權(quán)限的功能(u+s): 任何用戶運(yùn)行此程序忧陪,都可繼承 ‘ 此程序的所有者 ’ 的權(quán)限

#若給nano設(shè)置 s 權(quán)限扣泊,則nano可修改任意文件近范,因?yàn)閚ano的所有者為root,任意用戶運(yùn)行都相當(dāng)于root
[root@CentOS8 ~]# ll /bin/nano
-rwxr-xr-x. 1 root root 260848 May 11  2019 /bin/nano(綠色延蟹,表示可執(zhí)行)
[root@CentOS8 ~]# chmod u+s /bin/nano
[root@CentOS8 ~]# ll /bin/nano
-rwsr-xr-x. 1 root root 260848 May 11  2019 /bin/nano(紅色评矩,表示危險(xiǎn)權(quán)限)
[root@CentOS8 ~]# chmod u-s /bin/nano  # u-s取消

執(zhí)行程序的基本原則:
任何一個(gè)可執(zhí)行程序文件能不能啟動(dòng)為進(jìn)程,取決于 發(fā)起者對(duì)程序文件是否擁有執(zhí)行權(quán)限
即:程序能否執(zhí)行阱飘,與程序文件本身無(wú)關(guān)斥杜,與誰(shuí)來(lái)運(yùn)行相關(guān)

  • 啟動(dòng)為進(jìn)程之后,其進(jìn)程的屬主為原程序文件的屬主沥匈,屬組為原程序文件的屬組
  • 同時(shí)蔗喂,進(jìn)程訪問(wèn)文件時(shí)的權(quán)限,取決于進(jìn)程的發(fā)起者
#普通用戶不能訪問(wèn)/etc/shadow文件的原因
[root@CentOS8 data]# su jacklee
[jacklee@CentOS8 data]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[jacklee@CentOS8 data]$ ll /etc/shadow
----------. 1 root root 1423 Jul  7 18:13 /etc/shadow  #沒(méi)有給出任何權(quán)限
[root@CentOS8 ~]# ll /bin/cat
-rwxr-xr-x. 1 root root 51856 May 12  2019 /bin/cat   #而cat程序本身權(quán)限無(wú)問(wèn)題

4.4.2 特殊權(quán)限SGID—繼承g(shù)rp

即可對(duì)文件設(shè)置高帖,也可對(duì)目錄設(shè)置

  • 對(duì)二進(jìn)制文件:(g+s)表示任何人運(yùn)行此程序缰儿,都可繼承 ‘ 此程序的所屬組 ’ 的權(quán)限
chmod g+s FILE...
chmod 2xxx FILE
chmod g-s FILE...
  • 與SUID不同,目錄上的SGID權(quán)限功能(使新建文件屬組繼承為dir的屬組):
    默認(rèn)情況下散址,用戶創(chuàng)建文件時(shí)乖阵,其屬組為此用戶所屬的主組,一旦某目錄被設(shè)定了SGID预麸,則對(duì)此目錄有寫(xiě)權(quán)限的用戶 在此目錄中創(chuàng)建的文件 所屬的組 都為此目錄的屬組(而不是創(chuàng)建者的)瞪浸,通常用于創(chuàng)建一個(gè)協(xié)作目錄
chmod g+s DIR...
chmod 2xxx DIR
chmod g-s DIR...

4.4.3 特殊權(quán)限 Sticky —防止刪除

sticky 設(shè)置在文件上無(wú)意義,只針對(duì)目錄設(shè)置

在目錄設(shè)置Sticky 位(o+t)师崎,只有文件的所有者 或root可以刪除該文件

而一般情況下默终,具有寫(xiě)權(quán)限的目錄,普通用戶可以任意刪除文件

chmod o+t DIR...
chmod 1xxx DIR
chmod o-t DIR...

4.4.4 特殊權(quán)限數(shù)字法

根據(jù)三者對(duì)應(yīng)的作用位置犁罩,恰好也可分為4.2.1齐蔽,并獨(dú)立計(jì)算放在第一位

[root@CentOS8 data]# ll abc1.log 
-rw-r--r-- 1 root root 0 Jul  8 19:33 abc1.log
[root@CentOS8 data]# chmod 4644 abc1.log      #第一位4表示u+s
[root@CentOS8 data]# ll abc1.log 
-rwSr--r-- 1 root root 0 Jul  8 19:33 abc1.log
[root@CentOS8 data]# chmod 2644 abc1.log      #第一位2表示g+s
[root@CentOS8 data]# ll abc1.log 
-rw-r-Sr-- 1 root root 0 Jul  8 19:33 abc1.log
[root@CentOS8 data]# chmod 1644 abc1.log      #第一位1表示o+t 
[root@CentOS8 data]# ll abc1.log 
-rw-r--r-T 1 root root 0 Jul  8 19:33 abc1.log
[root@CentOS8 data]# chmod 7644 abc1.log      #第一位7表示全部加上 
[root@CentOS8 data]# ll abc1.log 
-rwSr-Sr-T 1 root root 0 Jul  8 19:33 abc1.log
###此處全部是大寫(xiě)ST,因?yàn)樵次募旧頉](méi)有執(zhí)行權(quán)限x床估,若有則為小寫(xiě)

#取消特殊權(quán)限含滴,輸入三位數(shù)即可:
[root@CentOS8 data]# chmod 555 abc1.log 
[root@CentOS8 data]# ll abc1.log 
-r-xr-xr-x 1 root root 0 Jul  8 19:33 abc1.log

4.5 設(shè)定文件特殊屬性約束root

可以防止 root 用戶誤操作刪除或修改文件

若發(fā)現(xiàn)某文件或目錄 除了查看 無(wú)法進(jìn)行任何操作,使用lsattr查看是否設(shè)置了特殊屬性Xの住L缚觥!
也有可能是此目錄下存在某個(gè)文件被設(shè)置了attr屬性

  • 設(shè)置為不能編輯內(nèi)容递胧、刪除碑韵、改名
    若對(duì)目錄設(shè)置,目錄下的文件是可以被編輯的缎脾,但不能刪除

    chattr +i  file或dir
    
  • 設(shè)置為只能追加內(nèi)容祝闻,不能刪除、改名

    chattr +a  file或dir
    
  • 顯示已經(jīng)設(shè)置的特定屬性

    lsattr   file或dir
    [root@centos8/data]# chattr +a f2.txt 
    [root@centos8/data]# ll
    total 8
    drw-r--r--. 2 root root    17 Aug  2 20:32 dir
    -rw-r--r--. 1 jack admins 709 Aug  2 19:52 f1.txt  #普通權(quán)限界面看不到
    -rwxr-xr-x. 1 jack root    23 Aug  2 19:53 f2.txt
    [root@centos8/data]# lsattr 
    ------------------ ./f1.txt
    -----a------------ ./f2.txt   #必須使用命令lasttr查看
    ------------------ ./dir
    

4.6 訪問(wèn)控制列表

4.6.1 ACL權(quán)限功能

ACL:Access Control List遗菠,實(shí)現(xiàn)靈活的權(quán)限管理

作用:除了文件的所有者联喘,所屬組和其它人华蜒,可以對(duì)更多的用戶設(shè)置權(quán)限(第四類(lèi)用戶)

要點(diǎn):

  • 文件一旦設(shè)置了ACL權(quán)限,中間3位表示mask權(quán)限豁遭,而不是group0认病!蓖谢!
  • ACL權(quán)限的生效順序優(yōu)先于other

CentOS7 默認(rèn)創(chuàng)建的xfs和ext4文件系統(tǒng)具有ACL功能
CentOS7 之前版本捂蕴,默認(rèn)手工創(chuàng)建的ext4文件系統(tǒng)無(wú)ACL功能,需手動(dòng)增加

tune2fs –o acl /dev/sda2   
#查看結(jié)果中的Default mount options ,若有acl表示ext4文件系統(tǒng)支持此功能

4.6.2 ACL相關(guān)命令

  • setfacl 可以設(shè)置ACL權(quán)限(作用:指定某個(gè)特定的用戶對(duì)文件的權(quán)限
    設(shè)置成功之后闪幽,權(quán)限末尾有 + 號(hào)(表示第四種用戶)
  • getfacl 可查看設(shè)置的ACL權(quán)限
setfacl -m u:jacklee:MODE FILE   #添加權(quán)限:設(shè)置用戶jacklee對(duì)文件FILE的權(quán)限為MODE
setfacl -m g:admins:MODE FILE    #添加權(quán)限:設(shè)置admins組對(duì)文件FILE的權(quán)限為MODE

setfacl -x u:jacklee FILE        #刪除權(quán)限:刪除用戶jacklee對(duì)文件FILE的特殊權(quán)限
setfacl -b FILE                  #清除 對(duì)文件FILE設(shè)置的所有ACL權(quán)限

setfacl --set 把原有的ACL權(quán)限全部刪除启绰,用新的覆蓋,'但是必須連同ugo的權(quán)限一起指定
如:setfacl --set u::rw,g::r,o::-,u:jacklee:rw file
getfacl FILE  #查看文件對(duì) 所有用戶類(lèi)型 的權(quán)限
getfacl file1 | setfacl --set-file=-  file2    #復(fù)制file1的acl權(quán)限給file2
[root@CentOS8 data]# setfacl -m u:jacklee:x abc2.log
[root@CentOS8 data]# ll abc2.log 
-rw-r-xr--+ 1 root root 0 Jul  8 19:33 abc2.log   #設(shè)置成功之后沟使,權(quán)限末尾有+號(hào)

[root@CentOS8 data]# setfacl -m u:jacklee:x abc2.log
[root@CentOS8 data]# getfacl abc2.log 
# file: abc2.log
# owner: root
# group: root
user::rw-
user:jacklee:--x        #權(quán)限添加成功
group::r--
mask::r-x         #同時(shí)ll中間三位權(quán)限表示mask!渊跋!而不是group@拔恕!拾酝!
other::r--

[root@CentOS8 data]# setfacl -b abc2.log 
[root@CentOS8 data]# ll abc2.log 
-rw-r--r-- 1 root root 0 Jul  8 19:33 abc2.log   #+號(hào)消失
[root@CentOS8 data]# getfacl abc2.log   
# file: abc2.log
# owner: root
# group: root
user::rw-
group::r--
other::r--       #正常三種用戶的權(quán)限

mask 權(quán)限(限高桿)

  • mask只影響除所有者和other之外的人和組的最大權(quán)限
  • mask需要與用戶的權(quán)限進(jìn)行邏輯與運(yùn)算后燕少,才能變成有限的權(quán)限(Effective Permission)
  • 用戶或組的設(shè)置必須在mask權(quán)限設(shè)定范圍內(nèi)才會(huì)生效(邏輯與運(yùn)算,取權(quán)限較小值)
setfacl -m mask::MODE file   #設(shè)置mask權(quán)限

文件權(quán)限生效優(yōu)先級(jí)順序:

所有者 >> 自定義用戶 >> 所屬組 | 自定義組 >> other

mask權(quán)限 最多針對(duì)中間三者進(jìn)行限制]锒凇?兔恰!


4.6.3 備份和還原ACL

主要的文件操作命令cp和mv都支持ACL材诽,cp命令加上 -p 選項(xiàng)即可復(fù)制權(quán)限信息

但是tar等常見(jiàn)的備份工具不會(huì)保留目錄和文件的ACL信息
為了防止權(quán)限丟失底挫,應(yīng)使用ACL備份功能

#備份ACL
getfacl -R /tmp/dir > acl.txt #保存設(shè)置過(guò)的ACL權(quán)限信息

#還原ACL
setfacl --restore acl.txt  (正常還原)

#將每一個(gè)文件的ACL權(quán)限 遞歸還原到所有文件!A辰摹建邓!
setfacl -R --set-file=acl.txt  /tem/dir
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市睁枕,隨后出現(xiàn)的幾起案子官边,更是在濱河造成了極大的恐慌,老刑警劉巖外遇,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件注簿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡跳仿,警方通過(guò)查閱死者的電腦和手機(jī)诡渴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)塔嬉,“玉大人玩徊,你說(shuō)我怎么就攤上這事租悄。” “怎么了恩袱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵泣棋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我畔塔,道長(zhǎng)潭辈,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任澈吨,我火速辦了婚禮把敢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谅辣。我一直安慰自己修赞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布桑阶。 她就那樣靜靜地躺著柏副,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚣录。 梳的紋絲不亂的頭發(fā)上割择,一...
    開(kāi)封第一講書(shū)人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音萎河,去河邊找鬼荔泳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛虐杯,可吹牛的內(nèi)容都是我干的玛歌。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼厦幅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼沾鳄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起确憨,我...
    開(kāi)封第一講書(shū)人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤译荞,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后休弃,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體吞歼,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年塔猾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了篙骡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖糯俗,靈堂內(nèi)的尸體忽然破棺而出尿褪,到底是詐尸還是另有隱情,我是刑警寧澤得湘,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布杖玲,位于F島的核電站,受9級(jí)特大地震影響淘正,放射性物質(zhì)發(fā)生泄漏摆马。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一鸿吆、第九天 我趴在偏房一處隱蔽的房頂上張望囤采。 院中可真熱鬧,春花似錦惩淳、人聲如沸蕉毯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)恕刘。三九已至,卻和暖如春抒倚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坷澡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工托呕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人频敛。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓项郊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親斟赚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子着降,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350