Files
為什麼我創建的 bin 文件的執行權限被拒絕?
我製作了一個 Makefile 來簡化我的生活,這個 Makefile 呼叫了我創建的 bin 文件中的腳本。執行我的命令後
make something
,出現以下錯誤:/bin/sh: 1: .docker/bin/echo-title: Permission denied
經過一番搜尋並感謝這個答案,我向使用命令創建文件的使用者(又名:我)授予了執行權限
chmod
。我的問題是:由於我是文件的所有者,我不應該立即獲得執行權限嗎?如果不是……為什麼?這是一個個人項目,但在工作中我們也使用 Makefiles 和 bin 腳本,正是這種方式(我實際上複製並粘貼了文件的基本內容)並且我不必執行 chmod 命令來執行腳本。為什麼呢?
(在 Makefile 中執行其他不涉及 bin 腳本的命令效果很好。)
不建議為所有新創建的文件授予執行權限,因為大多數文件不需要執行。
umask(2)用於確定預設文件權限是什麼。如果您只是在
umask
沒有選項的情況下執行,它將為您的使用者列印目前值。這是從特定應用程序在創建文件時使用的權限中減去的值,通常666 (rw-rw-rw-)
是文件權限或777 (rwxrwxrwx)
目錄權限。因此,如果您的 umask 值為 002 (很常見),那麼當您創建一個新文件時,它將獲得
664 (rw-rw-r--)
.
umask new_value
您可以通過執行ie:來修改預設的 umask 值umask 044
,但由於您只能從 666 中減去文件,您將無法使用它來預設執行。此外,為了使其持久化,您需要將其添加到您的 rc 或配置文件配置文件中。有關的: