linux用戶權限管理

1基本概念

Linux是一個多用戶多任務的分時操作系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個賬號, 然後以這個賬號的身份進入系統。
爲了實現資源分派(系統管理員的權利)及出於安全的考慮,必須對用戶進行不同權限的分配。用戶組便於更高效地管理用戶權限。
用戶操作Linux需要經過三個步驟的權限認證:
Authentication:認證
Authorization:授權
Audition審計-->權限是否符合條例
操作系統爲了識別每個用戶,會給每個用戶定義一個ID,就是UID。用戶組就相當於多個用戶的容器,有的系統又叫角色(便於更高效地管理用戶權限);在linux系統中,用戶組也有一個ID,GID。

1.1 linux操作系統用戶

在linux中,用戶分爲兩大類:管理員用戶和普通用戶,其中普通用戶有分爲系統用戶和登錄用戶;
系統用戶:爲了能夠讓那些後臺進程或服務類進程以非管理員的身份運行,通常需要爲此創建多個普通用戶,這類用戶從來不用登陸系統。
登錄用戶:就是我們一般使用登錄linux的用戶。

              用戶標識:user id,UID 
              通常使用16bits二進制數字表示(0-65535) 
              管理員的用戶標識:0 
              普通用戶:1-65535 
              系統用戶:1-499(Centos6)、1-999(Centos7) 
              登錄用戶:500-60000(Centos6)、1000-60000(Centos7)

linux通過名稱解析庫“/etc/passwd”文件解析用戶名與用戶ID之間的對應關係。

        `~]# head /etc/passwd | column -ts:` 列按冒號對其查看

        /etc/passwd:用戶信息庫 
        name:password:UID:GID:GECOS:directory:shell

                    name: 用戶名
                    password:可以是加密的密碼,也可是佔位符x;
                    UID:
                    GID:用戶所屬的主組的ID號;
                    GECOS:註釋信息
                    directory:用戶的家目錄;
                    shell:用戶的默認shell,登錄時默認shell程序;

1.2 linux操作系統用戶組

在Linux中,用戶組分類方式有三種:
1、管理員組、普通用戶組(系統用戶組,登錄用戶組)
2、用戶的基本組、用戶附加組
3、私有組(組名同用戶名,且只包含一個用戶;)、公共組(組內包含了多個用戶;)
用戶組標識:group id,GID
通常使用16bits二進制數字表示(0-65535)
管理員的用戶組標識:0
普通用戶組:1-65535
系統用戶組:1-499(Centos6)、1-999(Centos7)
登錄用戶組:500-60000(Centos6)、1000-60000(Centos7)
linux通過名稱解析庫“/etc/group”文件解析用戶名與用戶ID之間的對應關係。
/etc/group:組的信息庫
group_name:passwd:GID:user_list
user_list:該組用戶的成員;以此組爲附加組的用戶的用戶列表

1.3 linux操作系統密碼

用戶在登錄linux系統時,會對比password與之前保存在“/etc/shadow”、“/etc/gshadow”文件中的密碼是否一致。
密碼的使用策略:
1、使用隨機密碼;
2、最短長度不要低於8位;
3、應該使用大寫字母、小寫字母、數字和標點符號四類字符中至少三類;
4、定期更換;
生成有效密碼的命令:

~]#     </dev/urandom tr -dc 0-9-A-Z-a-z-/|head -c ${1:-8};echo
~]#     openssl rand -base64 32|tr A-Z a-z|cut -c 1-8
~]#     strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 8 | tr -d '\n'; echo
~]#     dd if=/dev/urandom bs=1 count=10 2>/dev/null | base64 -w 0 | rev | cut -b 2-9 | rev

加密算法(軍備資源):算法+密碼+salt=祕鑰(使用祕鑰對原文加解密操作):
對稱加密:加密和解密使用同一個密碼
非對稱加密:加密和解密使用的一對密鑰
密鑰對:公鑰(public key)、私鑰(private key)
單向加密:只能加密,不能解密;提取數據特徵碼;
定長輸出: 以16進製表示的輸出
雪崩效應:密碼中某一個字符改變,那麼整個加密後的密鑰都會改變

linux的密碼加密方式使用單向加密算法,並且添加隨機數(salt)計算得出的。

[root@localhost ~]#  head -1 /etc/shadow
root:$6$ZNcau0h/$O396hKI/4ZAkVs/YfM82ViyToupcAQ3FMm.iP.7g73BuWoK7VjTnPOtpKA1u/P.8Y/eI.pCgeaBKm8XlPNw5h/:18071:0:99999:7:::

加密密碼:使用$分隔,第一個段表示使用的加密算法,第二個段表示添加的salt。第三段表示加密後的密碼.

系統識別算法ID 算法名稱
1 md5:message digest,128bits
2 sha:secure hash algorithm,160bits
3 sha224
4 sha256
5 sha384
6 sha512
  • /etc/shadow:用戶密碼 (man 5 shadow)
    用戶名:加密的密碼:最近一次修改密碼的時間(從1970開始的天數):最短使用期限:最長使用期限:警告期段:密碼禁用時間(非活動期限):賬戶過期期限:保留字段

linux用戶權限管理

1.4Linux安全上下文:

運行中的程序:進程 (process)
以進程發起者的身份運行:
進程所能夠訪問的所有資源的權限取決於進程的發起者的身份;

2權限管理

linux的文件管理權限分爲讀、寫和執行

]# ll grub.cfg 
-rw-rw-r--+ 1 root root 4253 Jun 24 11:44 grub.cfg
 共分爲五個部分: 
        -rwxrwxrwx+:
        -:表示文件類型 
            左三位:定義user(owner)的權限
            中三位:定義group的權限;
            右三位:定義other的權限
            +:是否啓用facl
    進程安全上下文:
        進程對文件的訪問權限應用模型:
            進程的屬主與文件的屬主是否相同;如果相同,則應用屬主權限;
            否則,則檢查進程的屬主是否屬於文件的屬組;如果是,則應用屬組權限;
            否則,就只能應用other的權限;

    權限:
        r:readable, 讀
        w:writable, 寫
        x:excutable,執行

    權限對文件的作用: 
            r:可獲取文件的數據;
            w: 可修改文件的數據;
            x:可將此文件運行爲進程;

        權限對目錄的作用: 
            r:可使用ls命令獲取其下的所有文件列表;
            w: 可修改此目錄下的文件列表;即創建或刪除文件;
            x: 可cd至此目錄中,且可使用ls -l來獲取所有文件的詳細屬性信息;

        mode:rwxrwxrwx
        ownership:user, group
權限組合 二進制數 十進制數
000 0
–x 001 1
-w- 010 2
-wx 011 3
r– 100 4
r-x 101 5
rw- 110 6
rwx 111 7

3、相關命令

3.1用戶管理命令

useradd命令{非常重要****}:創建用戶

useradd [選項] 登錄名
-u, --uid UID:指定UID;
-g, --gid GROUP:指定基本組ID或組名,此組得事先存在;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用戶所屬的附加組,多個組之間用逗號分隔;
-c, --comment COMMENT:指明註釋信息;
-d, --home HOME_DIR:以指定的路徑爲用戶的家目錄;通過複製/etc/skel此目錄並重命名實現;指定的家目錄路徑如果事先存在,則不會爲用戶複製環境配置文件;
-s, --shell SHELL:指定用戶的默認shell,可用的所有shell列表存儲在/etc/shells文件中;
-r, --system:創建系統用戶;
-m 創建家目錄(沒什麼用)
-M,--no-create-home 不創建家目錄
-f, --inactive 密碼禁用時間

注意:創建用戶時的諸多默認設定配置文件爲/etc/login.defs 操作系統廠家使用

useradd -D:顯示創建用戶的默認配置;
useradd -D 選項: 修改默認選項的值;useradd -D -s /bin/tcsh 修改shell

        修改的結果保存於/etc/default/useradd文件中;可用自己使用

usermod命令:修改用戶屬性

usermod [選項] 登錄
-u, --uid UID:修改用戶的ID爲此處指定的新UID;
-g, --gid GROUP:修改用戶所屬的基本組;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用戶所屬的附加組;原來的附加組會被覆蓋;()
-a, --append:與-G一同使用,用於爲用戶追加新的附加組;(
)
-c, --comment COMMENT:修改註釋信息;
-d, --home HOME_DIR:修改用戶的家目錄;用戶原有的文件不會被轉移至新位置;
-m, --move-home:
-s, --shell SHELL:修改用戶的默認shell;

        -L, --lock:鎖定用戶密碼;即在用戶原來的密碼字符串之前添加一個"!";
        -U, --unlock:解鎖用戶的密碼;

userdel命令:刪除用戶

    userdel [選項] 登錄
        -r:刪除用戶時一併刪除其家目錄;

id命令:顯示用戶的真實和有效的UID和GID

id [OPTION]… [USERNAME] 
-u:僅顯示有效的UID; 
-g:僅顯示用戶的基本組的ID; 
-G:僅顯示用戶所屬的所有組的ID; 
-n:顯示名字而非ID;一般與g一起使用:-ng

su命令:switch user

登錄式切換:會通過重新讀取目標用戶的配置文件來重新初始化 
su - USERNAME 
su -l USERNAME
  非登錄式切換:不會讀取目標用戶的配置文件進行初始化 
     su USERNAME
 注意:管理員可無密碼切換至其它任何用戶;其它用戶在切換用戶時必須輸入密碼。
     -c “COMMAND”:僅以指定用戶的身份運行此處指定的命令 
 例如:su - USERNAME -c “whoami”

3.2 用戶組管理命令

        groupadd命令:添加組 
            groupadd [選項] group_name 
                    -g GID:指定GID,默認是上一個組的GID+1 
                    -r:創建系統組;

groupmod命令:修改組屬性 
        groupmod [選項] GROUP 
                -g GID:修改GID 
                -n new_name:修改組名

groupdel 命令:刪除組 
        groupdel [選項] GROUP

3.3 用戶及用戶組練習

練習1:創建用戶gentoo,UID爲4001,基本組爲gentoo,附加組爲distro(GID爲5000)和peguin(GID爲5001);

        groupadd -g 5001 peguin
        groupadd -g 5000 distro
        useradd -u 4001 -G distro,peguin gentoo

練習2:創建用戶fedora,其註釋信息爲"Fedora Core",默認shell爲/bin/tcsh;

useradd -c "Fedora Core" -s /bin/tcsh fedora

練習3:修改gentoo用戶的家目錄爲/var/tmp/gentoo;要求其原有文件仍能被用戶訪問;

    usermod -d /var/tmp/gentoo/ gentoo

練習4:爲gentoo新增附加組netadmin;

            groupadd netadmin
            usermod -aG netadmin gentoo

3.4 密碼管理命令

passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

(1) passwd:修改用戶自己的密碼;
(2) passwd USERNAME:修改指定用戶的密碼,但僅root有此權限;

        -l, -u:鎖定和解鎖用戶;
        -d:清除用戶密碼串;
        -e DATE: 賬戶過期期限,日期;
        -i DAYS:密碼非活動期限;
        -n DAYS:密碼的最短使用期限;
        -x DAYS:密碼的最長使用期限;
        -w DAYS:警告期限;

        --stdin【****批量修改密碼】
            echo "PASSWORD" | passwd --stdin USERNAME

 gpasswd命令:設置組密碼
              組密碼文件:/etc/gshadow

    gpasswd [選項] group
        -a USERNAME:向組中添加用戶
        -d USERNAME:從組中移除用戶

newgrp命令:臨時切換指定的組爲基本組;退出登錄後切換就失效了

    newgrp [-] [group]
        -: 會模擬用戶重新登錄以實現重新初始化其工作環境;
    newgrp a b      切換用戶b的基本組爲a,並登錄,如果組a本來就不是用戶b的附近組,此時可能要求輸入組密碼

chage命令:更改用戶密碼過期信息

chage [選項] 登錄名

-d --lastday set date of last password change to LAST_DAY 最近日期 將最近一次密碼設置時間設爲“最近日期”
-E --expiredate set account expiration date to EXPIRE_DATE 過期日期 將帳戶過期時間設爲“過期日期”
-W --warndays set expiration warning days to WARN_DAYS 警告天數 將過期警告天數設爲“警告天數”
-m --mindays set minimum number of days before password change to MIN_DAYS 最小天數 將兩次改變密碼之間相距的最小天數設爲“最小天數”
-M --maxdays set maximim number of days before password change to MAX_DAYS 最大天數 將兩次改變密碼之間相距的最大天數設爲“最大天數”
-h, –help 顯示此幫助信息並推出
-I, –inactive INACITVE 過期 INACTIVE 天數後,設定密碼爲失效狀態
-l, –list 顯示帳戶年齡信息
-R, –root CHROOT_DIR chroot 到的目錄
其他幾個命令用戶管理命令:
chsh:修改shell
chfn:修改用戶基本信息
finger:顯示用戶基本信息
pwck:檢查用戶的密碼是否有問題
grpck:檢查組文件的完整性
whoami
(pwconv、pwunconv、grpconv、grpunconv這四個基本不用)

3.5 權限管理命令

    chmod命令:
                         chmod [OPTION]... MODE[,MODE]... FILE...
                         chmod [OPTION]... OCTAL-MODE FILE...
                         chmod [OPTION]... --reference=RFILE FILE...

           三類用戶:
                u:屬主
                g:屬組
                o:其它
                a: 所有

           (1) chmod [OPTION]... MODE[,MODE]... FILE...

                MODE表示法:
                    賦權表示法:直接操作一類用戶的所有權限位rwx;
                        u=
                        g=
                        o=
                        a=

                    授權表示法:直接操作一類用戶的一個權限位r,w,x;
                        u+, u-
                        g+, g-
                        o+, o-
                        a+, a-

            (2) chmod [OPTION]... OCTAL-MODE FILE...
                            使用8進制的數字進行授權
            (3) chmod [OPTION]... --reference=RFILE FILE...

            選項:
                -R, --recursive:遞歸修改

            注意:用戶僅能修改屬主爲自己的那些文件的權限;

    從屬關係管理命令:chown, chgrp

        chown命令:
            chown [OPTION]... [OWNER][:[GROUP]] FILE...
            chown [OPTION]... --reference=RFILE FILE...

            選項:
                -R:遞歸修改

        chgrp命令:

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

        注意:僅管理員可修改文件的屬主和屬組;

            思考1:用戶對目錄有寫權限,但對目錄下的文件沒有寫權限時,能否修改此文件內容?能否刪除此文件?
                            不能修改文件內容,但可刪除文件
            思考2:用戶對目錄有什麼權限時,可以使用mv命令。
                               執行權限
    umask:文件的權限反向掩碼,遮罩碼;
        文件:
            666-umask
        目錄:
            777-umask

注意:之所以文件用666去減,表示文件默認不能擁有執行權限;如果減得的結果中有執行權限,則需要將其加1;
umask: 023
666-023=644
777-023=754

        umask命令:
            umask:查看當前umask
            umask MASK: 設置umask

        注意:此類設定僅對當前shell進程有效;

練習:完成以下任務
1、新建系統組mariadb, 新建系統用戶mariadb, 屬於mariadb組,要求其沒有家目錄,且shell爲/sbin/nologin;嘗試root切換至用戶,查看其命令提示符;

useradd -rM -s /sbin/nologin mariadb

2、新建GID爲5000的組mageedu,新建用戶gentoo,要求其家目錄爲/users/gentoo,密碼同用戶名;

            groupadd -g 5000 mageedu
            mkdir -p /users 
            useradd -d /users/gentoo gentoo
            echo gentoo | passwd --stdin gentoo

3、新建用戶fedora,其家目錄爲/users/fedora,密碼同用戶名;

            useradd -d /users/fedora fedora
            echo fedora | passwd --stdin fedora

4、新建用戶www, 其家目錄爲/users/www;刪除www用戶,但保留其家目錄;

            useradd -d /users/www www
            userdel www

5、爲用戶gentoo和fedora新增附加組mageedu;
usermod -aG mageedu gentoo
usermod -aG mageedu fedora
6、複製目錄/var/log至/tmp/目錄,修改/tmp/log及其內部的所有文件的屬組爲 mageedu,並讓屬組對目錄本身擁有寫權限;

                cp -rf /var/log /tmp
                chown -R  :mageedu /tmp/log
                chmod -R g+w /tmp/log

install命令:

install - copy files and set attributes
    單源複製:
        install [OPTION]... [-T] SOURCE DEST
    多源複製:
        install [OPTION]... SOURCE... DIRECTORY
        install [OPTION]... -t DIRECTORY SOURCE...
    創建目錄:
        install [OPTION]... -d DIRECTORY...

    常用選項:
        -m, --mode=MODE:設定目標文件權限,默認爲755;
        -o, --owner=OWNER:設定目標文件屬主;
        -g, --group=GROUP:設定目標文件屬組;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章