使用者管理(四)

檔案系統存取控制 (ACL)

ext3 檔案系統支援存取控制 (Access Control List, ACL) 的設定,要啟用 ACL 功能,在 mount 的時候要加入 ACL 選項,例如要將 /home 載掛點改掛成支援 ACL 的方式:
#mount  -o  remount,acl  /home

在 Red Hat Enterprise 5 的安裝過程中,已將 ACL 屬性設定到 ext3 的 superblock 之中,所以在 /etc/fstab 中不用設定成 ACL,要看所有的 superblock 內容可用 dumpe2fs 或 tune2fs -l 命令來顯示:
# dumpe2fs  /dev/sda1
dumpe2fs 1.39 (29-May-2006)
Filesystem volume name:   /boot
Last mounted on:          <not available>
Filesystem UUID:          8b95de47-0cb4-4972-a3d5-0c4bf607d986
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
…… 略 ……

# tune2fs  -l  /dev/sda1  |  grep  options
Default mount options:    user_xattr acl

如果是安裝完畢後才建立的分割區,要啟用 ACL 功能就要使用 ACL 選項,因為它的 superblock 並沒有預設選項:
# dumpe2fs  /dev/myVG/myLV  |  grep  options
dumpe2fs 1.39 (29-May-2006)
Default mount options:    (none)

如果不要用 mount 的功能,而要將 ACL 寫入 superblock,可以用 tune2fs  -o 指令來完成:
# tune2fs  -l  /dev/myVG/myLV  |  grep  options
Default mount options:    (none)
# tune2fs  /dev/myVG/myLV  -o  acl
tune2fs 1.39 (29-May-2006)
# tune2fs  -l  /dev/myVG/myLV  |  grep  options
Default mount options:    acl

==============================

設定 ACLs

要設定 ACLs (Access Control Lists, ACLs),可使用 setfacl 指令,要查閱 ACLs 可使用 getfacl 指令:
#getfacl  file|directory (列出檔案或資料夾的 ACL)
#setfacl  -m  u:USER_NAME:rwx  file|directory (設定檔案或資料夾給 USER_NAME 使用者是 rwx 權限)
#setfacl  -m  g:GROUP_NAME:rwx  file|directory (設定檔案或資料夾給 GROUP_NAME 群組是 rwx 權限)
#setfacl  -m  u:USER_NAME:wx  file|directory (移除 USER_NAME 在檔案或資料夾中 wx 的權限)
#setfacl  -m  d:u:USER_NAME:rwx  directory (設定該資料夾及其內所有新增檔案和資料夾給 USER_NAME 使用者是 rwx 權限)
#setfacl  -x  d:u:USER_NAME:x  directory (移除 USER_NAME 在該資料夾及其內所有新增檔案和資料夾的 x 權限)

例:
# getfacl  /home/kevin (看一下還沒有設定之前的 ACL)
getfacl: Removing leading ‘/’ from absolute path names
# file: home/kevin
# owner: kevin
# group: kevin
user::rwx
group::—
other::—

# setfacl  -m  u:john:rwx  /home/kevin (設定 john 在 /home/kevin 目錄有 rwx 的權限)
# getfacl  /home/kevin
getfacl: Removing leading ‘/’ from absolute path names
# file: home/kevin
# owner: kevin
# group: kevin
user::rwx
user:john:rwx
group::—
mask::rwx
other::—

# setfacl  -m  d:u:john:rwx  /home/kevin (設定 john 在 /home/kevin 資料夾及其內所有新增檔案的權限為 rwx)
# getfacl  /home/kevin
getfacl: Removing leading ‘/’ from absolute path names
# file: home/kevin
# owner: kevin
# group: kevin
user::rwx
user:john:rwx
group::—
mask::rwx
other::—
default:user::rwx
default:user:john:rwx
default:group::—
default:mask::rwx
default:other::—

# setfacl  -m  g:adm:rwx  /home/kevin (設定 adm 這個群組在 /home/kevin 目錄中有 rwx 的權限)
# getfacl  /home/kevin
getfacl: Removing leading ‘/’ from absolute path names
# file: home/kevin
# owner: kevin
# group: kevin
user::rwx
user:john:rwx
group::—
group:adm:rwx
mask::rwx
other::—
default:user::rwx
default:user:john:rwx
default:group::—
default:mask::rwx
default:other::—

# setfacl  -x  u:john  /home/kevin (移除 john 在 /home/kevin 目錄中的權限)
# getfacl  /home/kevin
getfacl: Removing leading ‘/’ from absolute path names
# file: home/kevin
# owner: kevin
# group: kevin
user::rwx
group::—
group:adm:rwx
mask::rwx
other::—
default:user::rwx
default:user:john:rwx
default:group::—
default:mask::rwx
default:other::—

# setfacl  -x  d:u:john  /home/kevin (移除 john 在 /home/kevin 目錄中的繼承權限)
# getfacl  /home/kevin
getfacl: Removing leading ‘/’ from absolute path names
# file: home/kevin
# owner: kevin
# group: kevin
user::rwx
group::—
group:adm:rwx
mask::rwx
other::—
default:user::rwx
default:group::—
default:mask::—
default:other::—

# setfacl  -b  /home/kevin (移除 /home/kevin 中所有的 ACLs)

在檔案複製時,cp 指令要帶 -p 的參數才能將權限保留,但 mv 則可以保留原有的權限。