在 gnu/linux 上設置文件權限等的不同方法是什麼
在很久以前的 Unix 上,我了解到
chmod
:在 Unix 上設置權限的傳統方式(並允許程序獲得權限,使用 setuid、setgid)。我最近在 GNU/Linux 上發現了一些更新的命令:
setfacl
擴展了傳統ugo:rwx
的位t
和chmod
.setcap
提供比ug:s
的位更多的鰭粒控制chmod
。chattr
允許文件的一些其他控制項(有點混合)。還有其他人嗎?
chmod
: 改變文件模式位用法(八進制模式):
chmod <octal-mode> files...
用法(符號模式):
chmod <references><operator><modes> files..
**
references
**是字母的組合,指定將修改ugoa
哪個使用者的訪問權限:files
u
擁有它的使用者g``file
的組中的其他使用者o
不在文件組中的其他使用者a
所有使用者如果省略,則預設為所有使用者,但只修改允許的權限
umask
。**
operator
**是字元之一+-=
:
+
將指定的文件模式位添加到每個文件的現有文件模式位file
-
將指定的文件模式位刪除到每個文件的現有文件模式位file
=
添加指定的位並刪除未指定的位,除了為目錄設置的setuid
和setgid
位,除非明確指定。**mode
**由字母組合組成rwxXst
,指定要修改的權限位:
r
讀
w
寫
x
執行(或搜尋目錄)
X
僅當文件是目錄或已經為某些使用者設置了執行位時才執行/搜尋
s
setuid 或 setgid(取決於指定的references
)
t
限制刪除標誌或粘滯位或者,mode
可以由其中一個字母組成ugo
,在這種情況下,模式對應於目前授予所有者 (u
)、file
組成員 (g
) 或上述任一類別中使用者的權限( ) 的權限o
。各種
chmod
解釋:
訪問控制(另見
setfacl
)
rwx
— 讀取 (r)、寫入 (w) 和執行/交叉 (x) 權限。
- 讀取 (r) 影響是否可以讀取文件,或者是否可以列出目錄。
- 寫入 (w) 影響是否可以寫入文件,或者是否可以編輯目錄(添加、刪除、重命名文件)。
- 執行 (x) 影響文件是否可以執行、用於腳本(請參閱 參考資料
#!
)和其他執行檔。- 交叉 (x) 影響是否可以遍歷目錄。
s
和t
— 粘性位 (t) 和目錄上的 setgid (s)
- 粘性位僅影響目錄。將阻止除文件所有者和 root 之外的任何人刪除目錄中的文件。
- 目錄上的 setgid 位,將導致新文件和目錄將組設置為同一組,並且新目錄設置 setgid 位(另請參見 setfacl 中的預設值)。
s
— setuid,setgid,在執行檔上。
- 如果您不知道自己在做什麼,這可能會嚴重影響安全性。
- 執行執行檔時,如果設置了這些位之一,則執行檔的有效使用者/組將成為文件的有效使用者/組。因此,程序以該使用者身份執行。請參閱
setcap
更現代的方法來做到這一點。
chown
chgrp
:
chattr
: 改變文件屬性用法:
chattr <operator><attribute> files...
**
operator
**是字元之一+-=
: *+
將選定的屬性添加到現有attributes
的files
*-
刪除選定的attributes
*=
用指定的覆蓋文件具有的目前屬性集attributes
。**
attribute
**是字母的組合acdeijstuADST
,對應屬性:
a
僅附加c
壓縮的d
沒有轉儲e
範圍格式i
不可變j
數據日誌s
安全刪除t
沒有尾部合併u
不可刪除A
沒有atime
更新D
同步目錄更新S
同步更新T
目錄層次結構的頂部
setfattr
: 改變擴展文件屬性用法(設置屬性):
setfattr -n <name> -v <value> files...
用法(刪除):
setfattr -x <name> files...
**
name
**是要設置或刪除的擴展屬性的名稱**
value
**是擴展屬性的新值
setfacl
: 更改文件訪問控制列表用法:
setfacl <option> [default:][<target>:][<param>][:<perms>] files...
**
option
**必須包括以下內容之一:
--set
設置文件或目錄的ACL,替換之前的ACL-m
|--modify
修改文件或目錄的 ACL-x
|--remove
刪除文件或目錄的 ACL 條目**
target
**是其中一個字母ugmo
(或如下所示的較長形式):
u
,users
由 標識的命名使用者的權限,如果省略則param
預設為文件所有者uid
g
,group
由 標識的命名組的權限,如果省略則param
預設為擁有組uid
m
,mask
有效的權利遮罩o
,other
其他人的權限**
perms
**是字母的組合rwxX
,對應於權限:
r
讀w
寫x
執行X
僅當文件是目錄或已對某些使用者具有執行權限時才執行或者,
perms
可以是指示權限集的八進制數字 (0
- )。7
setcap
: 改變文件能力用法:
setcap <capability-clause> file
A**
capability-clause
**由逗號分隔的能力名稱列表和後跟操作員標誌對的列表組成。可用的運算符是
=
和。可用的標誌是,它們對應於Effective、Inheritable和Permitted能力集。+``-``e``i``p
操作員將
=
提高指定的能力集並重置其他能力集。如果沒有與操作員一起給出標誌,則=
所有能力集都將被重置。+
和運算符將-
分別提高或降低一個或多個指定的能力集。
chcon
: 更改文件SELinux 安全上下文用法:
chcon [-u <user>] [-r <role>] [-t <type>] files...
user是 SELinux 使用者,例如
user_u
,system_u
或root
.role是 SELinux 角色(總是
object_r
用於文件)type是 SELinux 主題類型
chsmack
: 改變SMACK擴展屬性用法:
chsmack -a <value> file
**
value
**是為SMACK64
擴展文件屬性設置的 SMACK 標籤setrichacl:更改豐富的訪問控制列表。
richacl是一項將添加更高級 ACL 的功能。
目前正在進行一項工作,所以我不能告訴你太多關於它們的資訊。我沒有使用過它們。