Linux之用戶、權(quán)限的管理

Linux User and Group、Mode Management

早期Linux系統(tǒng)設(shè)計為了能夠?qū)崿F(xiàn)多用戶、多進程高效的利用服務器資源,在此種情況下,為了能夠保證用戶與用戶之間的文件不被隨意的訪問及修改、刪除等操作,用戶、組的管理能在某種程序上實現(xiàn)管理用戶或批量管理用戶。由于Linux的設(shè)計哲學思想『一切皆文件』,用戶對設(shè)備的訪問就是對文件的訪問。

此章節(jié)涉及到的命令匯總
useradd,usermod,userdel,groupadd,groupdel,groupmod,passwd,gpasswd,newgrp,su,id,chmod,chown,chgrp,setfacl,getfacl
==============

理論相關(guān)

User:

管理員
    UID:0,GID:0
系統(tǒng)用戶
    UID:1-499  GID:1-499(Centos6)
    UID:1-999  GID:1-999(Centos7)
普通用戶
    UID:500-60000  GID:500-6000(Centos6)
    UID:1000-60000 GID:1000-60000(Centos7)

group:

分類一:
    系統(tǒng)組
    普通用戶組
分類二:
    基本組
    附加組
分類三:
    私有組
    公有組
注:組的UID、GID跟用戶的分配類似

File Mode:

Linux系統(tǒng)安全上下文:
    當一個用戶發(fā)起一個進程時,此進程將繼承用戶的屬主、屬組的權(quán)限,再以進程繼承的權(quán)限來控制文件的訪問權(quán)限。
Linux權(quán)限標識:
    r: Readable 讀
    W: writable 寫
    x: executable 執(zhí)行
rwx標識對文件及目錄的意義:
    對文件:
        r : 可以讀取文件中的內(nèi)容
        w : 可以修改及刪除文件中的內(nèi)容
        x : 可以將其發(fā)起為一個進程
    對目錄:
        r : 可以查看目錄中的文件,可以使用ls命令, 但不能使用 -l選項
        w : 可以創(chuàng)建、刪除目錄,但不能修改文件中的內(nèi)容
        x : 可以使用cd命令進入目錄
文件及目錄權(quán)限詳細表示方面
    文件:-rwxrwxrwx
        從左邊第二位開始,每三位代表一個權(quán)限類別:
            u : owner
            g : owner group
            o : other
            a : 代表以上三項
    目錄:drwxrwxrwx
            u、g、o同文件權(quán)限位
    
Linux內(nèi)核對文件權(quán)限的表示方法:
    rwx: 4 2 1 

Umask Mode Control

Linux對初始權(quán)限的控制來自于Umask的設(shè)定,其工作原理如下:
    對新建立的文件:
        666 - Umask值(由于Linux對文件的執(zhí)行權(quán)限控制很嚴格,默認取消了文件的執(zhí)行權(quán)限,所以這里是666)
    對新建立的目錄:
        777 - Umask值 
Umask對管理員ROOT的初始值:022
Umask對普通用戶的初始值為:002

普通用戶建立的文件及目錄權(quán)限如下:
    文件:
        666-002=664 (如果減得的結(jié)果為奇數(shù),就自動加1)對應的權(quán)限如下:
            -rw-rw-r--
    目錄:
        777-002=775 ,對應的權(quán)限如下:
            drwxrwxr-x
對管理員root建立的文件及目錄權(quán)限如下:
    文件:
        666-022=644,對應的權(quán)限如下:
            -rw-r--r--
    目錄:
        777-022=755,對應的權(quán)限如下:
            drwx-r-xr-x
注:Umask的值可以使用umask命令來設(shè)置,但只對當前進程(即shell)有效,如要長期有效,需將此值設(shè)置到/etc/profile文件中,或者家目錄下的.開頭的文件中

===================

Configuration file for Linux system

User:
`/etc/passwd` (記錄用戶的詳細信息)
`/etc/shadow` (記錄用戶的密碼信息)
Group:
`/etc/group`   (記錄組的詳細信息)
`/etc/gshadow` (記錄組的密碼信息)
定義創(chuàng)建用戶時的默認配置信息:
`/etc/default/useradd`(記錄創(chuàng)建用戶所需設(shè)定的值)
    useradd -D 可以設(shè)置對應的參數(shù)
`/etc/login.defs`(配置創(chuàng)建用戶預設(shè)詳細參數(shù))

對應文檔的格式說明

/etc/passwd

root:x:0:0:root:/root:/bin/bash

用戶名:密碼:UID:GID:用戶注釋信息:用戶家目錄:Shell定義
  1. 用戶名: 用戶的名稱
  2. 密碼: X表示占位符,也可以是密碼
  3. UID: 用戶識別代碼
  4. GID: 用戶所屬組的GID(基本組)
  5. 用戶注釋信息:Comment,可以完善用戶的基本信息
  6. 用戶家目錄: 系統(tǒng)登錄用戶后的工作目錄
  7. shell: 定義用戶登錄系統(tǒng)所使用的shell,指定的shell需要在/etc/shells中出現(xiàn)

/etc/shadow

root:$6$YqkEsOcfKPptyhnS$YD0ym4BZ52pzcCnU....:16781:0:99999:7:::

用戶名:密碼:上一次修改密碼的時間:密碼最小使用期限:最長使用期限:警告時間:帳戶過期時間:保留字段
  1. 用戶名: 用戶的名稱,對應/etc/passwd文件中
  2. 密碼: Centos6中使用MD5加密算法,Centos7中使用sha1的算法,第一個$后面加密算法類型,第二個$后面表示salt,第三個$后面表示密碼的提取碼(參照加密類型)
  3. 上一次修改密碼的時間: 指用戶上次修改密碼的時間,計算方法:從Linux元年1970年01月01日0點0分到目錄所經(jīng)過的秒數(shù)
  4. 密碼最小使用期限: 指用戶修改密碼后,需要到多少天后方可更改密碼,0表示禁用
  5. 密碼最長使用期限: 指用戶的密碼到多少天后需要修改密碼
  6. 警告時間: 指用戶密碼到期前多少天提示用戶修改密碼,0和空字段表示禁用此功能
  7. 帳戶過期時間: 批帳戶在密碼過期后多少天還未修改密碼,將被停用

/etc/group

root:x:0:

組名:密碼:GID:User_list
  1. 組名:組的名稱,默認同名用戶名
  2. 密碼: 組的密碼占位符,用于用戶臨時切換至需要的組以獲取相應權(quán)限,可以使用newgrp - GROUP_NAME切換
  3. GID:組的全局識別號
  4. User_list:隸屬此組的用戶,多個用戶使用","隔開

/etc/gshadow

root:$6$PLRAi/Z/svr$PRelPtvLuGJqvFG3D8fbjYHDho2RQUe93glO.::

組名:密碼:組管理者:User_list
  1. 組名:組的名稱,同步/etc/group文件中
  2. 密碼:第一個$后面表示加密算法,第二個$后面表示加密的密碼
  3. 組管理者:可以對此組成員有操作權(quán)限,如果有多個,可以用逗號隔開
  4. User_list: 用戶的列表,如果有多個,可以使用逗號隔開

=============

Linux管理用戶的相關(guān)命令

添加用戶:

`useradd` - create a new user or update default new user information
    synopsis: useradd [options] LOGIN
              useradd -D [options]
              
    options:
        -u : 指定用戶的UID
        -g : 指定GID
        -c : 指定注釋信息,如果有空格,需要使用" "包含
        -d : 指定用戶家目錄,創(chuàng)建用戶時,會自動將/etc/skel中的文件復制到用戶家目錄下,如果指定的文件存               在將不會復制文件,如果父目錄不存在,創(chuàng)建也將會失敗
        -s : 指定用戶shell
        -r : 指定創(chuàng)建一個系統(tǒng)用戶
        -M :不創(chuàng)建用戶家目錄
        -G : 指定附加組,多個使用逗號隔開
        -D :修改創(chuàng)建用戶的配置信息,文件位于/etc/default/useradd
            注:創(chuàng)建用戶時的諸多默認設(shè)定配置文件為/etc/login.defs

修改用戶:

`usermod` - modify a user account
    synopsis: usermod [options] LOGIN
    
    options:
        -u : 修改用戶UID
        -g : 修改用戶GID
        -c : 修改用戶的注釋信息
        -d : 修改用戶家目錄,需要配合使用-m選項才會自動復制用戶家目錄下的文件到新的家目錄
        -m : move-home to new directory
        -s : 修改用戶的shell
        -l : 修改用戶的登陸名,即login名稱
        -G : 修改用戶的附加組信息,需要配合-a(append)一起使用,如果不使用-a將刪除原來的附加組
        -a : --append,連接多個附加組的參數(shù)
        -L : 鎖定用戶,即lock,在/etcpasswd文件中,密碼前面加!(一個)
        -U : 解鎖用戶,即unlock,在/etc/passwd文件中,取消密碼前面的!號

刪除用戶

`userdel` - delete a user account and related files
    synopsis: userdel [options] LOGIN
    
    options:
        -r : 刪除用戶的同時刪除用戶的家目錄,即--remove參數(shù)

用戶密碼設(shè)置

`passwd` - passwd - update user's authentication tokens
    synopsis:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
    1、passwd (修改自己的密碼)
    2、passwd USERNAME(修改其他用戶的密碼,root權(quán)限 )
    options:
        -l : 鎖定用戶,在/etc/passwd的密碼前面加!!,
        -u : 解鎖用戶,在/etcpasswd的密碼前!!取消
        -d : --delete,刪除用戶密碼
        -e DATE : --expire,設(shè)定過期時間
        -i DAYS : 非活動時間
        -n days : 最短使用期限
        -x days : 最長使用期限
        -w days : 警告期限
        --stdin : `echo "PASSWD" | passwd --stdin root` 

Linux管理組的相關(guān)命令

添加組

`groupadd` - create a new group
    synopsis: groupadd [options] group
    
    options:
        -g : 指定GID號
        -r : 指定為一個系統(tǒng)組

修改組

`groupmod` - modify a group definition on the system
    synopsis: groupmod [options] GROUP
    options:
        -g : 修改GID號碼
        -n : 修改組名稱 (groupmod -n NEW_GROUP OLD_GROUP)

刪除組

`groupdel` - delete a group
    synopsis: groupdel GROUP_NAME

組密碼設(shè)置

`gpasswd` - administer /etc/group and /etc/gshadow
    synopsis: gpasswd [option] group
    
    options:
        -a USER_NAME GROUP_NAME: 向組內(nèi)添加用戶
        -d USER_NAME GROUP_NAME: 把用戶從組內(nèi)刪除
        -r USER_NAMEG : 刪除組的密碼

臨時切換到其他組,好能夠獲取相應權(quán)限

`newgrp` - log in to a new group
    synopsis: newgrp [-] [group]
        - : 模擬用戶登陸, 以實現(xiàn)重新初始化環(huán)境變量

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

`id` - print real and effective user and group IDs
    synopsis: id [OPTION]... [USERNAME]
    
    options:
        -u : 查看UID號
        -g : 查看GID號
        -G : 查看附加組GID號,其他包含基本組ID號
        -n : 將各ID轉(zhuǎn)換為對應的名稱   

切換用戶

`su` - switch user
    sysnopsis: su [-] USER
    
    options:
        - : 以登陸方式切換用戶,以完成用戶環(huán)境變量、配置信息加載
        -c : 不用登陸用戶即可以以指定用戶執(zhí)行命令
              `su - mariabd -c 'id -u'`

用戶權(quán)限管理

`chmod` - change file mode bits
    sysnopsis: chmod [OPTION]... MODE[,MODE]... FILE...
               chmod [OPTION]... OCTAL-MODE FILE...
               chmod [OPTION]... --reference=RFILE FILE...
    options:
        -r --recursive : 遞歸修改
        --reference : 參照某文件來修改           
    Usage: 
        1、賦權(quán)等值法
            chmod u=rwx,g=rwx,0=rwx FILE
            chmod a=rwx FILE
        2、賦權(quán)加減法
            chmod u-rwx,g-rwx,o-rwx FILE
            chmod ugo-x FILE
            chmod u+rwx,go+r FILE
            chmod a+r FILE
        3、十進制賦權(quán)法
            chmod 777 FILE
        4、參照賦值法
            chmod --reference/var/log/file FILE
        
        注意:1、在使用a+w的情況下,只有屬主才會加w,go是不會加上W權(quán)限
             2、目錄有寫權(quán)限操作,但對目錄下的文件同有寫權(quán)限時,用戶是不能寫文件、但有刪除文件的能力

=============

chmod自己沒有執(zhí)行權(quán)限的解決方法:

1、使用ACL控制修復
  • 1、setfacl -m u:root:rwx /bin/chmod
  • 2、/bin/chmod 755 /bin/chmod
  • 3、setfacl -b /bin/chmod (-b表示清除所有ACL訪問規(guī)則 )
2、使用系統(tǒng)盤的emergency模式,使用光盤的chmod修改根文件系統(tǒng)中的chmod權(quán)限

=========

用戶屬主、屬組修改(ownership)

`chown` - change file owner and group
    synopsis: chown [OPTION]... [OWNER][:[GROUP]] FILE...
              chown [OPTION]... --reference=RFILE FILE... 
    options:
        -R :  --recursive 遞歸修改
        --reference : 參照某文件來修改
    Usage:
        chown mariadb FILE : 只修改文件的屬主為mariadb
        chown mariadb:mariadb FILE :修改文件的屬主、屬組為mariadb
        chown mariadb:mariadb FILE : 同上
        chown --reference=/var/log/file FILE : 參照/var/log/file來修改FILE的屬主、屬組
        
`chgrp` - chgrp - change group ownership
    synopsis: chgrp [OPTION]... GROUP FILE...
              chgrp [OPTION]... --reference=RFILE FILE...
              
        注:由于chgrp只能修改屬組,故一般情況都使用chown代替

=============

Useradd、Usermod、Userdel、groupadd、groupdel、groupmod參數(shù)匯總

通用參數(shù)

用戶管理類

useradd:

-u
-g
-c
-d
-s
-G
-r
-M
-D

usermod:

-u
-g
-c
-d
-s
-G
-a
-m
-l
-L
-U

userdel:

-r

id:

-u
-g
-G
-n

su

-c

說明:前四個命令中,命令使用的參數(shù)意義大體一樣,只是useradd 和userdel的-r參數(shù)意義不一樣,前者表示為system,后者表示為remove,最后的su命令-c表示為command的意義。

=========

passwd:

-d
-l
-u
-i
-e
-n
-x
-w
--stdin

說明:passwd與上者三個命令有重合的參數(shù)-l,-u與usermod -L-u大小寫不一樣,userdel的-r 與passwd中的-d表示不一樣,同為刪除,前者表示為remove,后者表示為delete.

=======

組管理類

groupadd:

-r
-g

groupmod:

-g
-n

groupdel:

無參數(shù)

說明:以上三個組管理命令 -g -r同管理用戶的命令,groupmod中的-n代表為new的意義

========

Linux系統(tǒng)特殊權(quán)限

Linux的安全上下文:

  1. 進程以某用戶的身份運行,進程是發(fā)起此進程用戶的代理,因此以此用戶的身份和權(quán)限完成所有操作
  2. 權(quán)限匹配模型:
  • 判斷進程的屬主,是否為被訪問文件的屬主,如果是則應用屋主的權(quán)限,否則進入第二步;
  • 判斷進程的屬主,是否屬于被訪問文件的屬組,如果是則應用屬組的權(quán)限,否則進入第三個步
  • 應用Other權(quán)限

特殊權(quán)限位

一. SUID

SUID為什么需要?

默認情況下,用戶發(fā)起的進程,其運行的進程屬主是其發(fā)起者

SUID的作用

SUID模型就是為了改變上述情況的匹配模型,當用戶運行某程序時,如果此程序擁有SUID權(quán)限,那么此程序運行為進程時,進程的屬主不再是進程的發(fā)起者,而是程序文件自己的屬主。

SUID實例應用:

如用戶需要修改密碼調(diào)用passwd程序時,需要將修改好的密碼保存至/etc/shadow文件中,但如果以Linux安全上下文的模型應用,用戶根本沒有權(quán)限將新密碼保存至/etc/shadow文件中,故passwd的程序就是一個擁有SUID權(quán)限的程序。當有新用戶發(fā)起此程序時,進程的屬主不再是進程發(fā)起者,而是/etc/passwd文件的屬主,即root。

SUID權(quán)限的表示方法

  1. -rws------ : 如果原本的U上有x權(quán)限,設(shè)置SUID后,x位變成小寫的s
  2. -rwS------ : 如果原本的U上沒有x權(quán)限,設(shè)置SUID后,x位變成大寫的s

SUID的設(shè)置文件

  1. chmod u+s FILE
  2. chmod 4000 FILE

二、SGID

SGID為什么需要?

通常用戶于目錄,將多個用戶添加進一個附加組,在這個目錄下建立的文件都屬于這個附加組,附加組的成員都可以來修改屬于這個附加組的文件,有修改,刪除權(quán)限。

SGID的作用

當目錄屬主有寫權(quán)限,且有SGID權(quán)限位時,所有屬于此目錄的屬組,且以屬組身份在此目錄中新建文件或目錄時,新文件的屬組不再是用戶的基本組,而是此目錄的屬組,用戶可以修改此附加組下的所有文件

SGID的應用實例

即SGID就是有效的解決了基本安全模型中,用戶自能修改自己的文件。改進成了:在要在此目錄下建立的文件,屬組都屬于目錄的屬主,只要是需要這個附加組的成員,都可以修改。類似團隊協(xié)同工作的情況下,可以以此類模型工作。

SGID權(quán)限的表示方法
  1. ----rws---:如果原本G上有x權(quán)限,設(shè)置SGID后,x位變成小寫的s.
  2. ----rwS---:如果原本G上有x權(quán)限,設(shè)置SGID后,x位變成大寫的S.

SGID的設(shè)置文件

  1. chmod g+s FILE
  2. chmod 2000 FILE

三、Sticky

sticky為什么需要?

應用于SGID這樣協(xié)同辦公的情況下, 用戶能做到修改自己、其他用戶的文件,卻也能刪除其他用戶的文件,這種情況下非常的不安全,不能保證其他用戶文件的安全存放問題。

sticky的作用

即為了解決以上情況,應用上層目錄有寫權(quán)限,屬于此目錄的組中的用戶,只能修改文件,卻不能刪除別人的文件,能刪除屬于自己的文件

Sticky的表示方法
  1. -------rwt:如果原本o上有x權(quán)限,設(shè)置Sticky后,x位變成小寫的t.
  2. -------rwT:如果原本o上有x權(quán)限,設(shè)置Sticky后,x位變成大寫的T.

四、facl(filesystem access control list)

為什么需要facl功能?

由于Linux安全模型中,當user1所擁有的文件想讓user2來讀取、寫,只能通過如下方式實現(xiàn):

  • 將user2加入user1組中,即設(shè)置user2的附加組為user1;
  • 在user1的文件中,在Other權(quán)限中加入rw操作
    以上操作首先需要有管理員才能操作,另外,Other中應用r或者w權(quán)限安全隱患太大,故需要facl來解決。
facal的功能
  • 實現(xiàn)用戶自己管理權(quán)限;
  • 對需要權(quán)限的用戶設(shè)置單獨的權(quán)限
facl應用后,權(quán)限訪問模型發(fā)生的改變
  • 當用戶訪問一個文件時,系統(tǒng)會先檢查用戶的屬主是否等于文件的屬主,否則,向下應用;
  • 檢查facl權(quán)限中應用的user權(quán)限位,有沒有對應用戶的授權(quán)權(quán)限,如果有則應用,否則,向下應用;
  • 檢查用戶的屬組是否跟文件的屬組一致,或者檢查此用戶的附加組,有沒有添加為文件的屬組,有則應用,否則;
  • 檢查facl權(quán)限中應用的group權(quán)限位,有沒有對應組的授權(quán)權(quán)限,如果有則應用,否則
  • 檢查Other的權(quán)限。
facl的設(shè)置
`facl` - filesystem access control list
    sysnopsis: facl [options] [u|g]:[USER|GROUP][MODE][FILE]
    options:
        `-m` : 設(shè)置權(quán)限
        `-x` : 清除權(quán)限
應用實例
  1. facl -m u:mariadb:rw ./file : 設(shè)置用戶為mariadb對當前目錄下的file有讀寫權(quán)限;
  2. facl -m g:mygrp:rw ./file : 設(shè)置組為mygrp對當前目錄下的file文件有讀寫權(quán)限
  3. setfacl -x u:user5 dir/ :清除user5對dir目錄的權(quán)限
  4. setfacl -b ./file : 清除file文件的所有用戶和組的facl權(quán)限設(shè)置
facl權(quán)限的查看方法

getfacl FILE : 查看file文件的facl的權(quán)限控制

有facl權(quán)限控制機制的文件,展示格式

----------+ : 在權(quán)限位后面多出來一個+號,表示此文件有設(shè)置facl權(quán)限位

==========
轉(zhuǎn)載請注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容