為什麼 /root 下新創建的文件無法執行,即使 /root 是並且 umask 是 022?這是 CentOS 的預設設置嗎?
我正在建構一小組實用程序
bash
函式和別名,它們將存在於一個特殊的/root
分區上。我注意到,無論何時我touch aFile
或vim aFile
,結果都是aFile
權限-rw-r--r--
。如果您的目標是執行一些 shell 腳本,這是非常不可取的,而這正是我認為的重點
/root
。我的
/root
目錄權限是dr-xr-x---
,我umask
的是0022
。據我了解,我應該期望新文件是0755
……但它們不是。
- 為什麼?
- 這是預設的嗎?
- 如何使新文件可執行?
如果您注意到,遮罩 022 在目錄上產生 755(可執行標誌使它們可瀏覽,而不是在八進制權限中不存在時不可見),使它們可搜尋。但是,預設情況下,文件不會獲得此可執行位。這是 POSIX 規範中的方便和安全問題。
除了您希望將 /root 目錄用作腳本的儲存庫之外,沒有人希望必須將其創建的各種文件顯式設置為在整個系統中不可執行,以此作為目錄可搜尋的代價。因此,出於可用性的考慮,您會遇到在目錄而不是文件上預設執行的問題。
您的問題可以通過 ACL 輕鬆解決,它能夠繼承權限(這是 UNIX 權限無法做到的)。仔細閱讀 getfacl、setfacl 的手冊頁和此處的文件:https ://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-acls.html
從本質上講,ACL 是一個擴展的權限控制集,除了擴展現有的 POSIX 訪問功能外,還可以使用它。相當有限但普遍接受的 POSIX ACL 集將完成您想要的。
如果您對繼承不感興趣,但希望一次性使文件可執行,則“chmod”命令將滿足您的需求。例如,
chmod u+x /root/script.sh
將呈現文件 /root/script.sh 可由其使用者所有者執行(在這種情況下應該是 root)。chmod 的手冊頁將提供比我需要的更多資訊。