無法更改檔案權限

無法更改檔案權限

每當我建立或複製幾個 shell 檔案到 USB 儲存裝置時,我就無法讓它們可執行。

如果我建立test.sh,它的預設檔案權限將為644,但是當我執行時

chmod 777 測試.sh

沒有錯誤報告並且echo $?也返回“0”。但仍然ls -l顯示權限為644,我無法執行它./test.sh

答案1

是的,如果您的裝置使用不支援此類權限設定(例如 VFAT)的檔案系統進行格式化,則可能會發生這種情況。在這些情況下,umask 是根據 fstab(或熱插拔等效項)中的設定動態建立的。

很可能請參閱 man mount 以了解詳細資訊。例如,對於 VFAT,我們發現:

脂肪的安裝選項

uid=值 和 gid=值

設定所有文件的擁有者和群組。 (預設:當前進程的uid和gid。)

umask=值

設定umask(不存在的權限的位元遮罩)。預設是當前進程的umask。該值以八進制給出。

ETC。

答案2

看起來您的檔案系統安裝了該noexec選項,該選項禁止在該檔案系統上執行程序,就像權限中的所有執行位元都未設定一樣。如果您使用user掛載選項(或某些使用者介面在背景使用它),則noexec打開,除非您使用 明確將其關閉exec

大多數 USB 記憶棒使用 MSDOS 衍生的 VFAT 檔案系統,該系統沒有權限的概念。您只能在掛載檔案系統時指定權限位,且這些權限適用於該檔案系統上的所有檔案。

如果您沒有執行腳本的權限,請明確呼叫解釋器:

sh /media/stick/test.sh

對於動態連結的二進位文件,呼叫動態連結器。

/lib/ld-linux.so.2 /media/stick/myprog

相關內容