Permissions

AIX ACL 區別“permit”與“specify”

  • November 24, 2021

AIX ACL 與 permit 和指定的區別是什麼:

這就是文件所說的:

"The permit, deny, and specify keywords are defined as follows:
permit
   Grants the user or group the specified access to the file
deny
   Restricts the user or group from using the specified access to the file
specify
   Precisely defines the file access for the user or group 

If a user is denied a particular access by either a deny or a specify keyword, no other entry can override that access denial."

來源:https ://www.ibm.com/docs/el/aix/7.1?topic=system-aixc-access-control-list

不知道這是否是一個非常微妙的英語問題,而且我不是母語人士。想了解區別。

這裡有一個例子:

attributes: SUID
base permissions:
   owner  (frank): rw-
   group (system): r-x
   others        : ---
extended permissions:
   enabled
       permit    rw-    u:dhs
       deny      r--    u:chas,    g:system
       specify   r--    u:john,    g:gateway, g:mail
       permit    rw-    g:account, g:finance

“指定”和“許可”似乎都一樣。

編輯:感謝使用者 sllabres 的詳細回答。

有趣的問題。

從快速檢查來看,重疊權限的組合是不同的。

如果您有一個使用者對文件具有讀取權限並通過組具有寫入權限並且兩者都是“允許”ACL,則該使用者能夠讀取和寫入文件。(權限邏輯或在一起)

如果有一個“指定”ACL,例如只有讀取權限,則只有讀取權限有效,而來自組的寫入權限將被忽略。

如果有多個“指定”ACL,它們似乎在邏輯上是與組合的。

例子

testuser@testserver: /home/testuser >
# aclget test
*
* ACL_type   AIXC
*
attributes:
base permissions
   owner(root):  rw-
   group(system):  ---
   others:  -w-
extended permissions
   disabled
   permit   r--     u:testuser

使用此權限(禁用 ACL),使用者“testusr”可以寫入文件 test(來自其他人的權限)但不能讀取。

testuser@testserver: /home/testuser >
# echo "data" > test
testuser@testserver: /home/testuser >
# cat test
cat: 0652-050 Cannot open test.
testuser@testserver: /home/testuser >

啟用 ACL 可以讀取文件,但由於 ACL 現在只有特定的讀取權限,因此“testusr”無法再讀取文件。

# aclget test
*
* ACL_type   AIXC
*
attributes:
base permissions
   owner(root):  rw-
   group(system):  ---
   others:  -w-
extended permissions
   enabled
   permit   r--     u:testuser
testuser@testserver: /home/testuser >
# echo "data" > test
The file access permissions do not allow the specified action.
ksh: test: 0403-005 Cannot create the specified file.
testuser@testserver: /home/testuser >
# cat test
data

使用使用者組 (staff) 和組的寫入權限擴展 ACL 會導致讀取權限,因為 testuser 被允許通過 testuser 所屬的人員組讀取 ACL 和寫入權限。(邏輯或)

# aclget test
*
* ACL_type   AIXC
*
attributes: 
base permissions
   owner(root):  rw-
   group(system):  ---
   others:  -w-
extended permissions
   enabled
   permit   r--     u:testuser
   permit   -w-     g:staff
testuser@testserver: /home/testuser >
# echo "data" > test
testuser@testserver: /home/testuser >
# cat test
data

如果使用者的讀取權限從“permit”更改為“specify”,則只有讀取權限有效,而通過人員組的寫入權限不再有效。

# aclget test
*
* ACL_type   AIXC
*
attributes: 
base permissions
   owner(root):  rw-
   group(system):  ---
   others:  -w-
extended permissions
   enabled
   specify  r--     u:testuser
   permit   -w-     g:staff
testuser@testserver: /home/testuser >
# echo "hi" > test
The file access permissions do not allow the specified action.
ksh: test: 0403-005 Cannot create the specified file.
testuser@testserver: /home/testuser >
# cat test
data

如果此範例中的 ACL u:testuser 和 g:staff 都更改為“指定”,則不允許讀取或寫入訪問(邏輯與)

# aclget test
*
* ACL_type   AIXC
*
attributes: 
base permissions
   owner(root):  rw-
   group(system):  ---
   others:  -w-
extended permissions
   enabled
   specify  r--     u:testuser
   specify  -w-     g:staff
testuser@testserver: /home/testuser >
# echo "data" > test
The file access permissions do not allow the specified action.
ksh: test: 0403-005 Cannot create the specified file.
testuser@testserver: /home/testuser >
# cat test
cat: 0652-050 Cannot open test.

將指定 ACL g:staff 權限更改為僅授予讀取權限,而不授予讀取和寫入權限,就像使用允許 ACL 一樣。

# aclget test
*
* ACL_type   AIXC
*
attributes: 
base permissions
   owner(root):  rw-
   group(system):  ---
   others:  -w-
extended permissions
   enabled
   specify  r--     u:testuser
   specify  rw-     g:staff
testuser@testserver: /home/testuser >
# echo "hi" > test
The file access permissions do not allow the specified action.
ksh: test: 0403-005 Cannot create the specified file.
testuser@testserver: /home/testuser >
# cat test
data
testuser@testserver: /home/testuser >

引用自:https://unix.stackexchange.com/questions/678147