next up previous contents
Next: 特殊屬性 SGID 練習 Up: Linux 檔案權限與管理 Previous: Access Control Lists   Contents

檔案的特殊屬性

  1. 檔案的特殊屬性 SUID/SGID/SBIT
    1. Set UID (SUID);設置使文件在執行階段具有文件所有者的權限。
      1. SUID 典型的的例子為 /usr/bin/passwd。
        1. 帳號與密碼存放於 /etc/passwd 與 /etc/shadow。而 /etc/shadow 的權限為 『-r--------』,且擁有者為 root。
        2. 一般身份使用者要更新自己的密碼,執行 /usr/bin/passwd 卻可以存取密碼檔 /etc/shadow。
      2. SUID 僅可用在『二進位制檔案 (binary file) 』上。
    2. Set GID (SGID):只對目錄有效。
      1. 目錄被設置後,任何用戶在此目錄下建立的文件,所屬群組皆與該目錄所屬的群組相同。
      2. 可使用在特定的多人團隊的專案開發上。
    3. Sticky Bit (SBIT):防刪除屬性,只對目錄有效。
      1. 在具有 SBIT 的目錄下,使用者若在該目錄下具有 w 及 x 的權限,則當使用者在該目錄下建立檔案或目錄時,只有檔案擁有者與 root 才有權力刪除。
      2. 典型的例子如 /tmp 的權限是 『drwxrwxrwt』,任何用戶都可在 /tmp 內新增、修改檔案,但僅有該檔案/目錄建立者與 root 能夠刪除自己的目錄或檔案。
  2. SUID/SGID/SBIT 權限的顯示與設定
    1. 使用 ls -l 列出檔案屬性,如:
      
      rwsrw-r--		 表示設置 SUID 屬性
      
      rwxrwsrw- 表示設置 SGID 屬性
      rwxrw-rwt 表示設置 SBIT 屬性
    2. 如果本來在該位上有 x 屬性,則這些特殊屬性顯示為小寫字母 (s, s, t),否則顯示為大寫字母 (S, S, T)
    3. SUID/SGID/SBIT 權限設定與一般 rwx 屬性之設定類似:
      4 為 SUID
      2 為 SGID
      1 為 SBIT
    4. 例題:更改並顯示檔案 foo 的屬性。
      [root@dywHome2 test]# chmod 4755 foo; ll foo
      -rwsr-xr-x 1 root root 7 Sep  4 13:25 foo*
      [root@dywHome2 test]# chmod 6755 foo; ll foo
      -rwsr-sr-x 1 root root 7 Sep  4 13:25 foo*
      [root@dywHome2 test]# chmod 1755 foo; ll foo
      -rwxr-xr-t 1 root root 7 Sep  4 13:25 foo*
      [root@dywHome2 test]# chmod 7666 foo; ll foo
      -rwSrwSrwT 1 root root 7 Sep  4 13:25 foo
      
    5. 搜尋 Linux 系統中 SUID 執行檔:
      [root@kvm7 ~]# find / -perm -4000 2>/dev/null
      /usr/bin/umount
      /usr/bin/Xorg
      /usr/bin/chsh
      /usr/bin/gpasswd
      /usr/bin/crontab
      /usr/bin/ksu
      /usr/bin/newgrp
      /usr/bin/su
      /usr/bin/chfn
      /usr/bin/passwd
      /usr/bin/pkexec
      /usr/bin/mount
      /usr/bin/chage
      /usr/bin/sudo
      /usr/lib/polkit-1/polkit-agent-helper-1
      /usr/sbin/unix_chkpwd
      /usr/sbin/usernetctl
      /usr/sbin/mount.nfs
      /usr/sbin/userhelper
      /usr/sbin/pam_timestamp_check
      /usr/lib64/dbus-1/dbus-daemon-launch-helper
      
    6. 查 SUID 檔案 /usr/bin/passwd 的屬性為 -rwsr-xr-x,其中 s 就是 SUID。
      [root@kvm7 ~]# ll /usr/bin/passwd 
      -rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passw
      
    7. 搜尋 Linux 系統中 SGID 目錄:
      [root@kvm7 ~]# find / -perm -2000 2>/dev/null
      /run/log/journal
      /run/log/journal/7d058ead696f4ccbb7c56b8999cf3a06
      /usr/bin/wall
      /usr/bin/ssh-agent
      /usr/bin/write
      /usr/sbin/postqueue
      /usr/sbin/postdrop
      /usr/sbin/netreport
      /usr/libexec/openssh/ssh-keysign
      /usr/libexec/utempter/utempter
      
    8. 查 SGID 目錄 /usr/log/joural 的屬性為 drwxr-sr-x,其中 s 就是 SGID。
      [root@kvm7 ~]# ll -d /run/log/journal
      drwxr-sr-x. 3 root systemd-journal 60 Dec  1 10:08 /run/log/journal
      
    9. 搜尋 Linux 系統中 SBIT 目錄:
      [root@kvm7 ~]# find / -perm -1000 2>/dev/null
      /tmp
      /tmp/.X11-unix
      /tmp/.Test-unix
      /tmp/.ICE-unix
      /tmp/.XIM-unix
      /tmp/.font-unix
      /dev/mqueue
      /dev/shm
      /var/tmp
      
    10. 查 SBIT 目錄 /tmp 的屬性為 drwxrwxrwt,其中 t 就是 SBIT。
      [root@kvm7 ~]# ll -d /tmp
      drwxrwxrwt. 7 root root 4096 Dec  2 09:27 /tmp
      



De-Yu Wang 2018-10-11