linux 的群組


		groups 		 查詢目前帳號支援的群組﹔

newgrp 變更有效群組。
  1. /etc/group 每 一行以『:』分隔,共分為四項
    [root@dywOffice dywang]# cat /etc/group
    root:x:0:
    bin:x:1:
    daemon:x:2:messagebus
    sys:x:3:
    adm:x:4:
    tty:x:5:
    users:x:100:dywang,test,test1
    
    1. 群組名稱。
    2. 群組密碼:密碼記錄在 /etc/gshadow,很少使用群組登入,故通常不需要設定。
    3. GID。
    4. 支援的帳號名稱:即群組裡的所有帳號。
  2. 初始群組( initial group ):
    1. 使用者一登入系統就擁有的群組權限,其記錄在 /etc/passwd 的第四欄位。
    2. 不需要在 /etc/group 的第四個欄位寫入該帳號。
  3. 有效群組( effective group ):
    1. 該帳號在 /etc/group 中所屬的群組(第四個欄位中包含該帳號)。
    2. 一個帳號可同時支援初始群組及有效群組,只要這兩群組擁有的功能該帳號皆可使用。
    3. 新建的檔案或目錄依有效群組設定權限。
  4. 例題:初始群組與有效群組為同一群組。
    [root@dywOffice ~]# grep dywang /etc/passwd /etc/group
    /etc/passwd:dywang:x:506:100::/home/dywang:/bin/bash
    /etc/group:users:x:100:dywang,test
    
  5. groups:查詢目前帳號支援的群組。
    [dywang@dywOffice ~]$ groups
    users
    
  6. newgrp:變更有效群組。
    [dywang@dywOffice ~]$ newgrp grouptest
    # 群組 grouptest 在 /etc/gshadow 的密碼欄為合法(不具 ! 開頭)。或
    # 目前帳號必須屬於群組 grouptest,即 /etc/group 中 grouptest 群組的第四欄位包含目前帳號。
    
    [dywang@dywOffice ~]$ groups
    grouptest users
    [dywang@dywOffice ~]$ exit
    exit
    # 變更有效群組是以另外一個 shell 提供登入,可以 exit 退出目前有效群組。
    
    [dywang@dywOffice ~]$ groups
    users
    
    [root@dywHome2 ~]# useradd -M ddyw
    [root@dywHome2 ~]# cat /etc/passwd | grep ddyw
    ddyw:x:505:505::/home/ddyw:/bin/bash
    [root@dywHome2 ~]# su ddyw
    [ddyw@dywHome2 root]$ groups
    ddyw
    [ddyw@dywHome2 root]$ touch foo
    touch: cannot touch `foo': Permission denied
    [root@dywHome2 root]# cd /tmp
    [ddyw@dywHome2 tmp]$ touch foo
    [ddyw@dywHome2 tmp]$ ls -l foo
    -rw-r--r-- 1 ddyw ddyw 0 Aug  8 09:03 foo
    
  7. /etc/gshadow 每一行以『:』分隔,共分為四項
    [root@dywOffice dywang]# vim /etc/gshadow
    root:::
    bin:::
    daemon:::messagebus
    sys:::
    adm:::
    tty:::
    users:::dywang,test,test1
    
    1. 群組名稱。
    2. 群組密碼。
    3. 群組管理者。
    4. 支援的帳號名稱。

練習題

  1. /etc/group 中第四個欄位作用為何?
    Sol. 該群組支援的帳號。
  2. 初始群組(initial group)是使用者一登入系統就擁有的群組權限,其記錄在那裡?
    Sol. 在 /etc/passwd 的第四欄位。
  3. 有效群組(effective group),記錄在那裡?
    Sol. 在 /etc/group 的第四欄位,也就是該群組支援的帳號。
  4. 一個帳號的初始群組與有效群組可否相同?
    Sol. 可以
  5. 如何查詢目前帳號支援的群組?
    Sol. groups
  6. 在 /etc/group 中有一行「dywgroup:x:501:dywang」,且在 /etc/gshadow 中有一行「dywgroup:::dywang」,則帳號 dywang 可以改變群組為 dywgroup?要如何執行?
    Sol. 可以,執行 newgrp dywgroup。
  7. 在 /etc/group 中有一行「dywgroup:x:501:dywang」,且在 /etc/gshadow 中有一行「dywgroup:!::dywang」,則帳號 dywang 可以改變群組為 dywgroup?要如何執行?
    Sol. 不可以,群組 dywgroup 密碼欄 ! 表示無法登入。
  8. 在 /etc/group 中有一行「dywgroup:x:501:」,且在 /etc/gshadow 中有一行「dywgroup:::」,則帳號 dywang 可以改變群組為 dywgroup?要如何執行?
    Sol. 不可以,群組 dywgroup 不支援帳號 dywang。
  9. 變更有效群組後要如何退出目前有效群組?
    Sol. 變更有效群組是以另外一個 shell 提供登入,要以 exit 退出目前有效群組。