問題敘述
在虛擬機上使用對應交叉編譯工具鏈編譯過的程序按道理來說應該可以在嵌入式Ubuntu設備上運行了,但是我在將編譯好的程序在嵌入式設備上運行的時候報錯了,出現的錯誤是:
-bash: ./hello-world: Permission denied
解決方法
Permission denied的漢語翻譯:拒絕訪問/沒有權限
猜測其類似於Windows中的只讀文件,無法對其進行操作,尋找提升文件權限的命令
結果:chmod
解決方法:
chmod 777 hello-world //設置hello-world文件對所有用戶均可讀寫、執行
或:
chmod +x hello-world //設置hello-world文件對所有用戶均可執行
chmod用法詳解
Linux/Unix 的文件調用權限分爲三級 : 文件擁有者、羣組、其他。利用 chmod 可以藉以控制文件如何被他人所調用。
語法
chmod [-cfvR] [--help] [--version] mode file
參數說明
mode : 權限設定字串,格式如下 :
[ugoa…][±=][rwxX]
其中:
改變權限的對象:
u 表示該文件的擁有者
g 表示與該文件的擁有者屬於同一個羣體(group)者
o 表示其他以外的人
a 表示這三者皆是
權限操作類型:
+表示增加權限
-表示取消權限
= 表示唯一設定權限
r 表示可讀取
w 表示可寫入
x 表示可執行
X 表示只有當該文件是個子目錄或者該文件已經被設定過爲可執行。
其他參數說明:
-c : 若該文件權限確實已經更改,才顯示其更改動作
-f : 若該文件權限無法被更改也不要顯示錯誤訊息
-v : 顯示權限變更的詳細資料
-R : 對目前目錄下的所有文件與子目錄進行相同的權限變更(即以遞迴的方式逐個變更)
--help : 顯示輔助說明
--version : 顯示版本
示例:
chmod a+rwx hello-world //表示將文件hello-world設置爲可供左右用戶實現讀寫、執行。
mode中沒有加用戶默認對所有用戶生效
同時mode還可以使用數字表示
chmod abc file
其中a,b,c各爲一個數字,分別表示User、Group、及Other的權限
a、b、c所賦予的數字及代表改類型用戶的權限,
其中:
r=4,w=2,x=1
若要rwx屬性則4+2+1=7
若要rw 屬性則4+2=6
若要rx 屬性則4+1=5
示例:
chmod 777 hello-world //表示將文件hello-world設置爲可供所有用戶讀寫、執行。