Files

為什麼我創建的 bin 文件的執行權限被拒絕?

  • December 20, 2019

我製作了一個 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 或配置文件配置文件中。

有關的:

為什麼 umask 不更改文件的執行權限?

umask 工作原理

如何通過 umask 授予執行權限

為什麼 umask 077 不允許使用者執行文件/目錄?

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