Linux基礎知識--4.LInux用戶和用戶組以及權限管理

Linux基礎知識--4.LInux用戶和用戶組以及權限管理

一.Linux用戶和用戶組

Linux操作系統是一個多用戶、多任務的操作系統。有時可能多個用戶在linux系統上操作一個任務,有時可能完成多個任務。用戶的主要作用就是完成用戶本身要完成的任務,不同用戶所具有的權限也不同,所以能完成的任務也是有不盡相同。組:個人理解就是將用戶和權限關聯在一起的“容器”,我們可以把執行相同任務的用戶加入同一個組內。

  當登錄linux系統時要輸入linux用戶賬號,但是linux主機不會是認識你的“賬號名稱”,它只會識別用戶的ID號,每個登錄系統的用戶至少要包括兩個ID,一個是用戶ID(UID),另一個是組ID(GID)。

 1. 在linux系統中用戶可分爲三類:根用戶(管理員用戶),系統用戶和普通用戶。

   根用戶root用戶:可以操作系統任何文件和資源,擁有最高權限。

    root:UID爲0 GID爲0

   系統用戶:這類用戶不具有登錄系統的能力,但是系統運行不可缺少的用戶,比如bin、daemon、ftp、mail等。這類用戶都是系統自身擁有的,而非後來添加。當然後續添加也行。

    系統用戶的UID:1-499 但是在CentOS7上UID是:1-999

          GID:1-499 CentOS7上GID爲:1-999

   普通用戶:這類用戶是用來登錄系統,有自己的家目錄,但是權限有限。

    普通用戶的UID爲500+ 在CentOS7上UID爲:1000+

         GID:500+ CentOS7上GID爲:1000+

  2.Linux用戶組:

    linux組的分類:基本組,私有組和附加組(也稱額外組)

    基本組:linux在創建用戶的時候會同時創建和用戶名相同的組,這個組就是基本組,不能把用戶從這個組刪除。

    附加組:附加組也稱額外組,是除基本組之外用戶所在的其他組。用戶可以從附加組中刪除。

    私有組:私有組就是一個linux用戶的基本組在沒有其他用戶添加到此組,就稱基本組屬於這個用戶的私有組。

  3.linux中和用戶、組相關的配置文件及文件內容的意義:

    /etc/passwd:用戶及其屬性信息

    /etc/shadow:用戶密碼及其相關信息

    /etc/group:組及其屬性信息

    /etc/gshadow:組密碼及其相關信息

    1./etc/passwd文件中各字段含義:

      用戶名:密碼:UID:GID:用戶註釋信息:用戶家目錄:默認shell

      apache:x:48:48:Apache:/var/www:/sbin/nologin

    2./etc/shadow文件中個字段的含義:

      bin:*:15980:0:99999:7:::

      用戶名:加密之後的密碼:最近一次更改密碼的日期:密碼的最小使用期限:最大密碼使用期        限:密碼警告時間段:密碼過期恕限時間:賬戶過期時間:保留字段

        注意:最近一次更改密碼的日期:是從1970年1月1日到最近一個修改密碼的天數。

          密碼最小使用期限:便是兩次修改密碼之間所需的最小天數,0表示沒有。

          密碼最大使用期限:指的是密碼保持有效的天數。

          密碼警告時間段:表示從系統警告用戶到用戶密碼正式失效的天數。

          密碼過期恕限時間:如果用戶過了警告時間仍沒有從新設定密碼,致使密碼失效。用戶仍然可以使用這個失效的密碼在n天內登陸系統,若在這個期間人沒有更改密碼,則賬號失效。

    3./etc/group文件中各字段的含義:

      bin:x:1:bin,daemon

      組名:組密碼:GID:以當前組爲附加組的用戶列表(分隔符爲逗號)

    4./etc/gshadow文件中各字段的含義:

      bin:::bin,daemon

      組名:組密碼:組管理者:組成員

  4.linux 用戶和組相關的管理命令:

   (1)用戶創建:useradd 

    useradd [options] LOGIN

    常用選項:

      -u UID:指定UID 

      -g GID:指定GID

      -c "COMMENT":用戶註釋信息

      -d directory:指定用戶的家目錄

      -s SHELL:指定用戶的shell

      -G group1,group2,...:指定用戶的附加組,組事先要存在

      -r:創建系統用戶

    和用戶創建相關的一些文件和目錄:

      /etc/login.defs /etc/shells /etc/skel /etc/default/useradd

    /etc/login.defs:此文件是創建用戶時的一些限制,比如可以配置密碼的最大過期天數,密碼 最大長度等。該文件對root用戶無效。

    /etc/shells:該文件存在當前系統支持的shell

    /etc/skel:該目錄下存放了一些隱藏文件和目錄。在建立用戶時,用戶初始化用戶根目錄。系 統會將此目錄下的所有文件和目錄都複製到新建用戶的根目錄,並且將用戶的屬主與用戶組調整爲與此根目錄相同。

    /etc/default/useradd:通過useradd添加用戶時的規則文件。

   (2)刪除用戶:userdel

    useradd [options] login

    useradd -r UserName:連同用戶的家目錄一併刪除

   (3)用戶屬性的修改:usermod

    usermod [OPTION] login

    常用選項:

     -u UID:修改UID

     -g GID:修改GID

     -G group1,group,..:新附加組,原來的附加組將覆蓋,如果不想覆蓋使用-a選項,表append

      -s shell:指定新的shell

     -c "COMMENT":新的註釋信息

     -d HOME:修改家目錄,一般和-m選項連用。表示將原有家目錄的內容一直新的家目錄中

     -l Login_name:修改用戶名

     -L:鎖定用戶

     -U:解鎖用戶

     -e YYYY-MM-DD:指明用戶賬號過期日期

     -f INACTIVE:設定非活動期限

   (4)給用戶添加密碼:passwd

    passwd [OPTIONS] UserName:修改指定用戶的密碼,僅root用戶權限

    passwd :修改當前登錄系統用戶的密碼

    常用選項

     -l:鎖定指定用戶

     -u:解鎖指定用戶

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

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

     -w warndays:指定提前多少天開始警告

     -i inactivedays:非活動期限

     --stdin:從標準輸入接收用戶密碼:

     eg:echo "PASSWORD" | passwd --stdin USERNAME

   (5)組創建:groupadd

    groupadd [OPTION]... group_name

    常用選項:

      -g GID:指明組ID

      -r:創建系統組

   (6)刪除組:groupdel

     groupdel GroupName

    eg: groupdel admingroup

   (7)組屬性修改:groupmod

    groupmod [OPTION].. group

    常用選項:

     -n group_name:修改組名

     -g GID:修改組ID

   (8)組密碼創建:gpasswd

    讓某個用戶組具有一個管理員,這個用戶組管理員能夠管理那些賬號可以加入/移除該用戶組。

    gpasswd [option] group

    常用選項:    

     -a user:將user添加至指定組中

     -d user:刪除用戶user的以當前組爲組的附加組

     -A user1,user2,...:設置有管理權限的用戶列表

    其中newgrp命令是臨時切換到一個加密組中,如果用戶本不屬於此組,則需要組密碼

   (9)修改用戶屬性:chage

    chage [OPTION]... LOGIN

    常用格式:

     -l:列出用戶密碼的相關信息:

     -m mindays:修改密碼的最小天數

     -M maxdays:修改密碼的最大天數

     -I:密碼過期後,鎖定賬號的天數

     -d:指定密碼最後修改的日期

     -E:有效期,0表示立即過期,-1表示永不過期

     -W:密碼過期前,開始警告的天數。

   (10)還有其他命令:chsh,finger,chfn。

     chsh:修改用戶的shell

     chfn:change your finger information

     finger:finger - user information lookup program       

    # finger zkc

    Login: zkc            Name: Personal

    Directory: /home/zkc                Shell: /bin/bash

    Never logged in.

    No mail.

    No Plan.


二.Linux 權限管理

    Linux的文件權限主要針對三類對象:屬主(u),屬組(g),其他(o)

    每個文件針對每類訪問者都定義了三類權限:讀r,寫w,執行x

    我們可以使用ls -la查看某個文件的屬性和文件名。如:   

    [root@localhost ~]# ls -la
    total 64  
    dr-xr-xr-x. 21 root root 4096 Aug 15 22:37 ..
    -rw-------.  1 root root 1201 Aug 14 21:19 anaconda-ks.cfg
    -rw-------.  1 root root 2138 Aug 15 22:36 .bash_history
    -rw-r--r--.  1 root root   18 May 20  2009 .bash_logout
    -rw-r--r--.  1 root root  176 May 20  2009 .bash_profile
    -rw-r--r--.  1 root root  276 Aug 14 21:51 .bashrc

    分別表示文件的類型和文件的權限,連接數,屬主,屬組,文件大小,文件最後被修改的時間,文件名。

    1.文件的類型有一下幾種:

      -:普通文件。

      d:目錄文件。

      l:連接文件

      b:塊設備文件.

      c:字符設備文件

      s:套接字文件

      p:管道文件

    2.文件對應屬主,屬組和其他的屬性:rwx

      --- 000 0 

      --x 001 1 

       -w- 010 2

      -wx 011 3

      r-- 100 4

      r-x 101 5

      rw- 110 6

      rwx 111 7 

    目錄和文件的權限意義:

     1.權限對文件的意義:

       r:可讀取文件的內容,可以用文件查看類工具獲取其內容

       w:可以編輯,新增或者修改文件內容(但不包含刪除)

       x:該文件具有可執行的權限。可以把此文件提請內核啓動爲一個進程。

     2.權限對目錄的意義:

       r:表示具有讀取目錄結構列表的權限。可以使用ls命令查看目錄下的文件列表

       w:這個可寫入的權限對目錄來說很強大。表示具有更改該目錄結構列表的權限,包括:

        新建新的文件與目錄

        刪除已經存在的文件或目錄(不論該文件的權限爲何)

        將已經存在的文件或目錄進行重命名

        轉移該目錄內的文件,目錄位置

       x:可以使用ls 命令查看目錄下的文件列表,以及可以用cd轉換到此目錄下。


  修改文件和目錄權限:chmod

    chmod [OPTION]... MODE FILE

       -R:可遞歸修改權限

      修改一類用戶的所有權限:如:

        a=rwx,u=rwx,g=rwx,o=rwx

        uo=rw...

      此類修改權限之後將會把以前的權限覆蓋

      eg:

       wKiom1Xb-zzAzCAZAAED6MVD5Fk167.jpg    

      修改一類用戶的某些位的權限:

         u+rwx u-rwx o+x a+x 等。。

      eg:   

      [root@localhost ~]# ll a.txt 
      -r-xr--r-x. 1 root root 6 Aug 16 03:04 a.txt
      [root@localhost ~]# chmod a+w a.txt
      [root@localhost ~]# ll a.txt 
      -rwxrw-rwx. 1 root root 6 Aug 16 03:04 a.txt

     chmod [OPTION]... --reference=Rfile File...

     查看Rfile文件的權限,將File文件的權限修改爲同Rfile.

      eg:  

      [root@localhost ~]# ll a.txt     
      -rwxrw-rwx. 1 root root 6 Aug 16 03:04 a.txt
      [root@localhost ~]# vim b.txt
      [root@localhost ~]# ls -l b.txt 
      -rw-r--r--. 1 root root 6 Aug 16 03:34 b.txt
      [root@localhost ~]# chmod --reference=a.txt b.txt
      [root@localhost ~]# ls -l b.txt 
      -rwxrw-rwx. 1 root root 6 Aug 16 03:34 b.txt

  修改文件和目錄的屬主和屬組:chown(僅root用戶)

    chown [OPTION]... [OWNER][:[GROUP]] FILE...

        -R:可遞歸修改權限

    用法:chown owner file

        chown owner:group file

        chown :group file

    chown [OPTION]... --reference=RFile File...

     修改文件File的屬主屬組同Rfile的屬主屬組

    eg:   

    [root@localhost ~]# chown zkc.zkc a.txt 
    [root@localhost ~]# ll a.txt 
    -rwxrw-rwx. 1 zkc zkc 6 Aug 16 03:04 a.txt
    [root@localhost ~]# chown --reference=b.txt a.txt 
    root@localhost ~]# ll a.txt 
    -rwxrw-rwx. 1 root root 6 Aug 16 03:04 a.txt

  修改文件的屬組:chgrp

       chgrp [OPTION]... GROUP File

       chgrp [OPTION]... --reference=Rfile File...

     eg:   

    [root@localhost ~]# chgrp zkc a.txt
    [root@localhost ~]# ll a.txt
    -rwxrw-rwx. 1 root zkc 6 Aug 16 03:04 a.txt
    [root@localhost ~]# chgrp --reference=b.txt a.txt 
    [root@localhost ~]# ll a.txt 
    -rwxrw-rwx. 1 root root 6 Aug 16 03:04 a.txt

  文件或目錄創建時的遮罩碼:umask

    對文件:創建文件時的權利:666-umask

    如果某類用戶的權限減得結果中存在x權限,將其權限加1.

    相對目錄:777-umask


Linux文件系統上的特殊權限:SUID,SGID,Sticky

    1.通過前面學習Linux文件系統有普通權限:r,w,x

    2.Linux中的安全上下文:

      前提:進程必須有屬主和屬組。也就是文件有屬主和屬組

      a.任何一個可執行程序文件是否能能夠執行,成爲進程,取決於對這個文件發起者對這個文件是否擁有執行的權限。

      b.啓動爲程序之後,其進程的屬主爲發起者,進程的屬組爲發起者所屬的組

      c.進程訪問文件時的權限,取決於進程的發起者。

        1.進程的發起者屬於文件的屬主;則使用文件屬主的權限

        2.進程的發起者屬於文件的屬組;則使用文件屬組的權限

        3.有文件'其他'的權限

    3.SUID:

      任何一個可執行程序文件是否能啓動爲進程,取決於一個程序文件是否擁有執行的權限。

      可執行程序文件啓動爲進程之後,其進程的屬主爲源文件的屬主(而不再屬於發起者)

     權限設置:

        chmod u+s File..

        chmod u-s File..

      s這個標誌出現在文件所有者的x權限上的。

       SUID權限只對二進制程序有效

       執行者對已該程序需要具有x的執行權限

       本權限僅在執行程序的過程中有效。

      eg:命令chmod只能root用戶才能使用,雖然chmod的二進制文件的權限爲:-rwxr-xr-x;

        但是普通用戶還是不能執行此命令!!如:

        [root@localhost tmp]# ls -l /bin/chmod
        -rwxr-xr-x. 1 root root 50048 Nov 22  2013 /bin/chmod       
        [zkc@localhost tmp]$ whoami
        zkc
        [zkc@localhost tmp]$ chmod a+w test.sh 
        chmod: changing permissions of `test.sh': Operation not permitted

        爲此二進制文件添加s權限,再次執行以下,結果如下:     

         [root@localhost tmp]# chmod u+s /bin/chmod 
         [root@localhost tmp]# ls -l /bin/chmod 
         -rwsr-xr-x. 1 root root 50048 Nov 22  2013 /bin/chmod
         切換到普通用戶:
         [zkc@localhost tmp]$ chmod a+w test.sh 
         [zkc@localhost tmp]$ ls -l test.sh 
         -rwxrw-rw-. 1 root root 40 Aug 16 04:49 test.sh

        /bin/chmod添加s權限後,普通用戶能夠執行命令chmod,這只是普通用戶"暫時"擁有root的權限。

    4.SGID:

      常用功能:

      a.設置在目錄上:

        1.默認情況下,用戶創建文件時,其屬組爲此用戶所屬的基本組;一旦某目錄被設定了SGID的權限,則對此目錄有寫權限的用戶,在此目錄中所創建文件的屬組就爲此目錄所屬的屬組!!          2.如果用戶對此目錄有r和x權限,用戶還可以進入此目錄中。

      b.針對文件進行設置:SGID對二進制程序有用,二進制文件的執行者需要有x權限。當執行者執行此二進制程序文件時,執行具有該程序用戶組的權限:

      權限設定:

      chmod g+s File/DIR

      chmod g-s File/DIR

      eg:在/tmp目錄下創建一個目錄kk。在沒有向kk目錄設置g+s權限時,普通用戶(此普通用戶對此目錄有寫權限)在此目錄下創建的文件的屬組還是普通用戶所屬的組:如:    

       [root@localhost tmp]# ls -ld kk        
       drwxrxrwx. 2 root root 4096 Aug 16 06:30 kk
       [zkc@localhost kk]$ ls -l a
       -rw-rw-r--. 1 zkc zkc 0 Aug 16 06:35 a

      向目錄kk添加g+s權限,添加權限之後,所創建的文件是目錄所屬的屬組       

        [root@localhost tmp]# chmod g+s kk        
        [root@localhost tmp]# ls -ld kk
        drwxr-srwx. 2 root root 4096 Aug 16 06:36 kk
        [zkc@localhost kk]$ touch zkc
        [zkc@localhost kk]$ ls -l
        total 0
        -rw-rw-r--. 1 zkc zkc  0 Aug 16 06:35 a
        -rw-rw-r--. 1 zkc root 0 Aug 16 06:38 zkc

    當其他用戶在有SGID權限的目錄下創建文件時,文件的屬組都爲目錄所屬的組,因此,用戶之間可以相互刪除對方的文件,這樣做是不安全的。所以就出現了第三種特殊權限Sticky。

    5.Sticky:

    這個特殊權限只對目錄有效,對文件無效。對目錄的作用有:

     1.當用戶對此目錄有w,x權限時,既具有寫入的權限

     2.當用戶在此目錄下創建文件或目錄時,僅自己或root纔有權限刪除此文件

    權限設定:

     chmod o+t DIR...

     chmod o-t DIR...

    eg:在一個目錄下,此目錄對其他用戶有w權限。先以不同用戶創建文件,查看是否能相互刪除文件,然後在設置Sticky權限之後,在此查看能否相互刪除文件。

     a.在不設定Sticky權限的情況下

    [root@localhost tmp]# ls -ld test
    drwxr-xr-x. 2 root root 4096 Aug 16 06:59 test
    [root@localhost tmp]# chmod o+w test
    [root@localhost tmp]# ls -ld test
    drwxr-xrwx. 2 root root 4096 Aug 16 06:59 test

      轉到普通用戶:

        [zkc@localhost test]$ touch zkc        
        [zkc@localhost test]$ ls -l
        total 0
        -rw-rw-r--. 1 zkc zkc 0 Aug 16 07:05 zkc
        [kk@localhost test]$ touch kk 
        [kk@localhost test]$ ls -l
        total 0
        -rw-rw-r--. 1 kk  kk  0 Aug 16 07:05 kk
        -rw-rw-r--. 1 zkc zkc 0 Aug 16 07:05 zkc

        查看是否能刪除對方文件:

        [zkc@localhost test]$ rm -rf kk        
        [zkc@localhost test]$ ls
        zkc

       發現能刪除對方文件 

     b.設定Sticky權限:   

        [root@localhost tmp]# chmod o+t test        
        [root@localhost tmp]# ls -ld test
        drwxr-xrwt. 2 root root 4096 Aug 16 07:06 test

      在kk用戶下刪除zkc用戶創建的文件zkc:

        kk@localhost test]$ rm -rf zkc    
        rm: cannot remove `zkc': Operation not permitted
        [kk@localhost test]$ ls -l
        total 0
        -rw-rw-r--. 1 zkc zkc 0 Aug 16 07:05 zkc

      設定Sticky權限之後,雖然目錄test的其他(o)權限有w權限,但是不能刪除其他用戶所創建的文件!

    

    特殊權限的權限位:

    SUID :4  SGID:2  Sticky:1

    SUID:user,佔據屬主的執行權限位:

      s:屬主擁有x權限

      S:屬主沒有x權限

    GUID:group,佔據屬組的執行權限位:

      s:屬組擁有x權限

      S:屬組沒有x權限

    Sticky:other,佔據other的執行權限位:

      t:other擁有x權限

      T:other沒有x權限

到此Linux基礎中的用戶,組,權限和特殊權限基本知識點介紹結束。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章