天天看點

Linux系統中管理使用者賬戶群組賬戶及其權限設定

使用者賬戶分為:超級使用者、系統使用者、普通使用者。

    超級使用者:

                使用者名:root  ; UID:0;

    系統使用者:

                使用者名:由使用者自行設定; UID:1~499(Centos6及之前),1~999(Centos7);

    普通使用者:

                使用者名:由使用者自行設定; UID:500+(Centos6及之前),1000+(Centos7);

使用者配置檔案:使用者解析庫、使用者認證庫。

    使用者解析庫:/etc/passwd

    使用者認證庫:/etc/shadow

        /etc/passwd字段詳解:(字段間使用":"分隔)

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

            第一字段:使用者名稱

            第二字段:使用X做密碼占位符

            第三字段:使用者UID

            第四字段:使用者主要組的GID

            第五字段:使用者主要組組名

            第六字段:使用者家目錄

            第七字段:使用者預設bash

        /etc/shadow字段詳解:

            root:$6$6kkn6aL6.uXXGiV9$Z1rLH/FLESIInB.V1TfCn9V/AhDlQMQIwOKwpxdk4h101tB6SdUv6USEIccF2XNcR.kpUuQE6x4HbSed24bNP.::0:99999:7:::

            第二字段:經過加密的使用者密碼;主要由 加密算法+salt(鹽)+加密後的密碼  組成期間由"$"分隔;

            第三字段:最後一次修改密碼的時間,其表示法為從1970年1月1日到目前系統時間所經過的天數;

            第四字段:密碼的最短使用期限;0表示随時可更改密碼;

            第五字段:密碼的最長使用期限;

            第六字段:密碼使用達到最大使用期限前多少天提示使用者;預設為7天;

            第七字段:密碼過期後可更改密碼寬限期;

            第八字段:使用者密碼的絕對失效時間;其表示法為從1970年1月1日到指定日期時間的天數; usermod  -e   可修改;

            第九字段:保留,并未使用;

使用者賬戶管理相關指令:

        useradd  --  建立一個新使用者或更新預設新使用者資訊

            格式:useradd  [options]  USERNAME

        常用選項:

            -d, --home-dir HOME_DIR:指定建立使用者的家目錄;

            -g, --gid GROUP:指定建立使用者的主要組;GROUP可使用組名或GID;如不使用此選項預設會建立同名組設定為主要組;

            -G, --groups GROUPS:指定建立使用者的附加組;GROUP可使用組名或GID;

            -r, --system :建立一個系統使用者;

        userdel --  删除使用者賬戶和相關檔案

            格式:userdel  [options]  UESRNAME

            -f, --force :強制删除使用者,即使使用者正處于登陸狀态等情況;(不建議使用)

            -r,--remove :使用者主目錄中的檔案将随使用者主目錄和使用者郵箱一起删除。

        usermod  --  修改一個使用者賬戶

            格式:usermod   [options]  USERNAME

            -d, --homeHOME_DIR:更改使用者的家目錄;(前提修改的目錄事先存在)

            -c, --commentCOMMENT:修改使用者注釋資訊;

            -e  expire-date:修改使用者密碼過期的絕對日期;

            -l, --loginNEW_LOGIN:修改使用者的登陸名;

            -s, --shellSHELL:修改使用者的登陸SHELL;

            -u, --uidUID:修改使用者的UID;

            -g, --gidGROUP:修改使用者主要組;

            -G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:修改使用者附加組;可使用-aG為使用者追加附加組;

            -L,--lock:鎖定使用者;

            -U,--unlock:解鎖使用者;

        passwd  --  更新使用者的身份驗證令牌

            格式:passwd  [options] USERNAME

            -d, --delete :删除使用者的密碼;(僅限 root 使用者)

            -l, --lock :鎖定指名帳戶的密碼(僅限 root 使用者)

            -u, --unlock解鎖指名賬戶的密碼(僅限 root 使用者)

            --stdin :  從标準輸入讀取令牌(僅限 root 使用者)

組賬戶分為:超級使用者組、系統組、普通使用者組。

    超級使用者組:

                組名:root;GID:0;

     系統使用者組:

                組名:由使用者自行設定; GID:1~499(Centos6及之前),1~999(Centos7);

    普通使用者組:

               組名:由使用者自行設定; GID:500+(Centos6及之前),1000+(Centos7);

組賬戶配置檔案:組賬戶認證庫,組賬戶解析庫。

    組賬戶解析庫:/etc/group        

    組賬戶認證庫:/etc/gshadow

        /etc/group字段詳解:

            root:x:0

            第一字段:組名

            第二字段:密碼占位符;

            第三字段:GID

            第四字段:以該組為附加組的使用者;

        /etc/gshadow字段詳解:

            root:::

            第一字段:組名;

            第二字段:組賬戶加密儲存的密碼;

            第三字段:組賬戶管理者(已廢棄)

            第四字段:以該組為附加組的使用者賬戶清單;

         groupadd  --  建立一個新組

            格式:groupadd  [options]  GROUPNAME

            -g, --gid GID:指定該組的GID;

            -r, --system:将建立的組設定為系統組;

        groupdel  --  删除一個組

            格式:groupdel  [options]  GROUPNAME

        groupmod  --  修改組賬戶資訊

            格式:groupmod  [options]  GROUPNAME

            -g, --gid GID:修改GID

            -n, --new-name NEW_GROUP:修改組名;

        su  --  切換使用者身份

            格式:su [options] USERNAME

            -, -l, --login:切換登陸使用者及其shell,家目錄等一系列選項;

            -c :使用某使用者身份執行某指令:(#] su  root  -c "usseradd  god")

        注意:su USERNAME  與  su   -USERNAME  差別在于 前者隻是切換了身份,但SHELL環境仍然是原使用者的SHELL;而後者連使用者和SHELL環境一起切換成新使用者的了。隻有切換了SHELL環境才不會出現PATH環境變量錯誤。

        id  --  顯示真實和有效的 UID 和 GID

            格式:id  [options]  USERNAME

            -u:顯示使用者有效UID

            -g:顯示使用者有效GID

            -n:顯示名稱

其他相關配置檔案:

    /etc/default/useradd

    作用:定義建立使用者時的使用者屬性的預設值檔案

    GROUP=100 // 在建立使用者時如果沒有為使用者指定基本組,系統會為使用者指定一個與使用者名相同的組作為其基本組;

    HOME=/home // 在建立使用者時,如果沒有為使用者指定家目錄,則會在/home目錄中建立一個于使用者名相同的目錄作為家目錄

    INACTIVE=-1 // 在建立使用者時,設定使用者密碼過期之後的寬限期,預設為-1,意為關閉使用者密碼過期寬限功能,即寬限期為永遠;

    EXPIRE=  // 在建立使用者時,設定使用者密碼的絕對失效日期,預設沒有啟用;

    SHELL=/bin/bash // 在建立使用者時,設定使用者的預設登陸shell,預設值為/bin/bash

    SKEL=/etc/skel // 在建立使用者時,為使用者家目錄提供的預設檔案的模闆

    CREATE_MAIL_SPOOL=yes // 在建立使用者是,是否直接為使用者建立郵箱檔案,預設建立;

    /etc/login.defs(definations)

    作用:定義shadow_utils相關的屬性,包括使用者郵箱路徑、密碼的時間參數、UID和GID的範圍,删除使用者賬戶的指令、是否設定私有組(僅包含一個使用者并作為該    使用者主要組)、權限位掩碼、家目錄建立開關、加密算法選擇;

    MATL_DIR        /var/spool/mail

    //指定建立使用者時為使用者指定郵箱檔案的路徑

    PASS_MAX_DAYS 99999

    PASS_MIN_DAYS 0

    PASS_MIN_LEN  5

    PASS_WARN_AGE 7

    //與密碼的時間參數有關的設定

    UID_MIN                  1000

    UID_MAX                 60000

    # System accounts

    SYS_UID_MIN               201

    SYS_UID_MAX               999

    GID_MIN                  1000

    GID_MAX                 60000

    SYS_GID_MIN               201

    SYS_GID_MAX               999

    //指定預設的ID選擇範圍

    CREATE_HOME yes

    //是否在建立使用者時為使用者建立家目錄的開關

    UMASK           077

    //指定使用者家目錄的預設權限的掩碼

    USERGROUPS_ENAB yes

    //是否開啟私有組開關

    ENCRYPT_METHOD SHA512

    //加密算法的選擇

    /etc/skel(directory)

    作用:為新建立的使用者的家目錄提供預設的shell配置檔案

使用者權限及特殊權限說明

    安全上下文比對規則:

        當以R使用者打開RFILE檔案時,首先判斷R使用者是否為RFILE檔案的所有者,如果是則直接賦予所有者權限;如果不是則繼續判斷R使用者是否為RFILE檔案所屬組的成員,如果是則賦予所屬組的權限;如果不是,則賦予其他人權限;

    權限有三種:r,w,x

        在目錄檔案上:r權限代表可讀取此目錄中的子目錄或檔案;w權限代表可對此目錄進行改名;x權限代表可在其他語句中以路徑的方式,引用此檔案目錄;

        在非目錄檔案上:r權限代表可讀取其内容;w權限代表可對此檔案實施寫操作;x權限代表可将此檔案發起為程序(執行此檔案);

    修改檢視權限相關指令:

        chmod指令  --  改變檔案的通路權限

        改變權限的兩種方式:數字權限辨別和直接指派權限;

            數字權限辨別:

                rwx  :  7      rw- :6   r-x:5 ......... 

                rw-r--r--  :  644

                rwxrwxrwx  :  777

                權限遮罩碼:用于建立檔案時為檔案賦予預設的權限設定;預設的權限遮罩碼在/etc/bashrc中;預設為0022,是以建立的檔案的預設權限為0777-0022;

            直接指派權限:

                u,g,o:分别為所有者,所屬組,其他人;可直接寫出u=rwx等;

            示例:

                    chmod  u=rwx,g=rw-,o=rw-  /etc/a.txt

                    chmod  u+r   /etc/a.txt

                    chmod  644  /etc/a.txt

            (權限位中"-"代表不具備此權限;可使用ls -l 指令檢視檔案的權限相關資訊)

特殊權限:

        SUID:某些特殊檔案需要暫時使用其檔案所有者的身份運作此檔案,此類功能通過設定SUID實作;具備此權限的檔案在所有者的執行權限上用"s"辨別,如果同時具有執行權限則為"s",如果不具備執行權限則辨別為"S";

        設定示例:chmod   u+s  /etc/a.txt

        SGID:所有在此目錄中建立的新檔案和目錄的所屬組均為其父目錄的所屬組,而并非程序發起者的主要組;SGID權限顯示在檔案的屬組權限位上的執行權限;如果屬組本來就有執行權限則顯示為"s",否則顯示為"S"。

        設定示例:chmod   g+s  /etc/

        STICKY:如果在某個目錄上的權限設定為多個使用者都擁有寫權限,那就意味着凡是擁有寫權限的使用者都能直接管理該目錄中的所有檔案名,包括改名檔案及删除檔案名等操作;是以需要在這樣的目錄上設定STICKY特殊權限;如果此類目錄設定了STICKY,則所有使用者即便擁有寫權限也僅能删除或改名所有者為自身的檔案; STICKY權限的顯示位置:在目錄的其他使用者的權限位的執行權限上,如果該權限位本來有執行權限,則顯示為t,否則顯示T。

        設定示例:chmod   o+t  /etc/a.txt

         檔案的擴充屬性:可通過lsattr指令和chattr指令檢視和修改檔案的擴充屬性;

                檔案的擴充屬性包括:

                  a:在向檔案寫資料時隻能以附加的方式進行寫操作;檔案的内容不能被更改和删除;一般會為日志檔案設定此屬性;

                  A:atime,檔案的通路時間戳控制屬性;對于并發通路量較大或并發通路頻率較高的檔案應該設定此屬性以降低IO成本;

                  c:設定是否自動壓縮之後在存儲

                  C:是否開啟“寫實複制”功能

                  d:使用dump備份檔案系統時,跳過屬性設定為d的檔案

                  D:設定檔案在檔案系統中的異步寫操作;

                  i:設定檔案不能被删除、改名及設定連結關系

                  s:設定檔案的保密性删除

                  u:于s屬性相反,如果此類檔案被删除,則在存儲器中會繼續儲存其内容

        FACL:在Centos7或RH7以上版本更加完善  --  檔案的第二擴充屬性

            實作FACL相關指令:setfacl,getfacl

            -m acl_spec:為指定檔案設定acl_spec

            -x acl_spec:将acl_spec從指定檔案上移除

           acl_spec:acl_specification,acl規格,通路控制清單

            u:USERNAME:MODE

            g:GROUPNAME:MODE

            MODE一般是使用符号權限辨別法的權限:

        示例:

          檢視檔案第二擴充屬性:

            [root@localhost ~]# getfacl    /etc/passwd

          為檔案賦予指定使用者的額外通路權限:

            [root@localhost ~]# setfacl -m u:link:rwx     /tmp/temp/

         撤銷指定檔案的額外通路權限:

            [root@localhost ~]# setfacl -x u:link     /tmp/temp/

(如果設定了FACL之後,再修改目标檔案的使用權限,那麼FACL中設定的權限條目可能受到影響而導緻授權失敗;是以,為了保證沒有此項幹擾,應該先調整目标檔案或目錄權限,在設定FACL;)