歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux服務器

Linux上的ACL權限文件訪問

在 Unix/Linux 系統上沿用了多年的權限機制,由於欠缺靈活性,在現今的信息系統上顯得落後和不敷應用。然而一個新的權限機制標准已經誕生出來,本
    文將會為大家介紹這個新機制在 Linux 上的操作方式。


    ---------------------------------------------------------
    典型的文件權限
    典型的文件權限是這樣的:
    #>ls -l
    -rwxrw-r-- 1 adam mis 272401 May 10 2003 test.doc
    表示文件屬於用戶adam,權限可讀可寫可運行;屬於群組mis權限可讀可寫;其他人權限只讀
    傳統的權限只能對所有者,群組,其他來設定3套權限
    更復雜的權限則需要依賴ACL
    這個 POSIX ACL 的功能在 Linux kernel 2.6 上被正式支持,之後又被 back-port到 2.4 kernel 上。大家常用的檔案系統,如:ext3,xfs,jfs,和
    ReiserFS,都能使用ACL。當然,大家須要在編譯 kernel 時啟動 ACL。
    ---------------------------------------------------------
    啟動 ACL
    雖然在 kernel 中已加進了 POSIX ACL 的支持,但是並不會自動啟用的。我們必須在掛上檔案系統時指明要使用 ACL。例如:

    mount -t ext3 -o acl /dev/sda1 /home
    其中 “-o acl”參數表示在 /dev/sda1 上啟用 ACL 的選項。我們亦可以在 /etc/fstab 中加入選項:

    /dev/sda1 /home ext3 acl 1 2
    ---------------------------------------------------------
    查看文件的ACL信息
    #>getfacl test.doc
    # file: test.doc
    # owner: adam
    # group: mis
    user::rw-
    group::rw-
    other::r--
    ---------------------------------------------------------
    訪問型ACL設置
    更改ACL

    setfacl” 指令能更改一個檔案或目錄的 ACL。其用法如下:

    setfacl option rules files

    option:
    -m 用來新增或修改 ACL 中的規則
    -x 用來移除 ACL 中的規則

    rules:
    user:(uid/name):(perms) 指定某位使用者的權限
    group:(gid/name):(perms) 指定某一群組的權限
    other::(perms) 指定其它使用者的權限
    mask::(perms) 設定有效的權限屏蔽
    如果想讓hr群組的使用者能讀取 “test.doc”而其它的人不能讀取的話。 我們可以用以下的指令達成:

    setfacl -m group:hr:r,other::- test.doc
    以 getfacl 檢視新的 ACL:
    [adam@www adam]$ getfacl test.doc
    # file: test.doc
    # owner: adam
    # group: mis
    user::rw-
    group::rw-
    group:hr:r--
    mask::rw-
    other::---
    要讓使用者 adam 和 eva 能 讀取 和 寫入, 群組mis 和 hr 只能讀取, 其它人不能 讀取 和 寫入。 我們只須多加兩個規則便能達成:

    setfacl -m group::r,user:eva:rw report.doc
    [adam@www adam]$ getfacl report.doc
    # file: report.doc
    # owner: adam
    # group: mis
    user::rw-
    user:eva:rw-
    group::r--
    group:hr:r--
    mask::rw-
    other::---
    ---------------------------------------------------------
    預設型ACL
    預設型ACL 只可用於目錄, 它決定了該目錄下新建立的檔案或目錄的 ACL。要設定 預設型ACL, 同樣使用 “setfacl”。 所不同的是, 在每個規則前加上“
    default:”, 例如:
    setfacl -m default:user::rw /home/adam
    如果覺得指令太長的話我們可以使用簡略字符:
    長寫     簡寫
    user:    u:
    group:   g:
    other:   o:
    mask:    m:
    default: d:
    setfacl -m d:u::rw,d:u:eva:rw,d:g::r,d:o::- /home/adam

    [adam@www adam]$ getfacl /home/adam
    getfacl: Removing leading '/' from absolute path names
    # file: home/adam
    # owner: adam
    # group: adam
    user::rwx
    group::---
    other::---
    default:user::rw-
    default:user:eva:rw-
    default:group::r--
    default:mask::rw-
    default:other::---

    建立新的檔案並檢視其 存取型ACL:

    [adam@www adam]$ touch newfile

    [adam@www adam]$ getfacl newfile
    # file: newfile
    # owner: adam
    # group: mis
    user::rw-
    user:eva:rw-
    group::r--
    mask::rw-
    other::---

Copyright © Linux教程網 All Rights Reserved