無法執(zhí)行文件命令?權(quán)限不夠?看這篇就夠了
Linux 系統(tǒng)上有嚴(yán)格的權(quán)限等級(jí),如果權(quán)限過高導(dǎo)致誤操作會(huì)增加系統(tǒng)的風(fēng)險(xiǎn)。所以對(duì)于了解 Linux 系統(tǒng)中的各種權(quán)限及如何分配合理的權(quán)限十分重要。
不同于 Windows 系統(tǒng),Linux 是一個(gè)多用戶系統(tǒng),對(duì)每一個(gè)用戶來說,個(gè)人隱私的保護(hù)十分重要,所以 Linux 系統(tǒng)為每個(gè)文件都添加了很多的屬性,最大的作用就是維護(hù)數(shù)據(jù)的安全。就像在你的 Linux 系統(tǒng)中,和系統(tǒng)服務(wù)相關(guān)的文件通常只有 root 用戶才能讀或?qū)懀?/etc/shadow 文件,此文件記錄了系統(tǒng)中所有用戶的密碼數(shù)據(jù),重要程度不言而喻,所以絕不能讓任何人讀取以防止密碼泄露,而只有 root 用戶才有讀取權(quán)限。
所以說,權(quán)限是用來約束用戶對(duì)系統(tǒng)所做的操作。或者說,權(quán)限是指某個(gè)特定的用戶具有特定的系統(tǒng)資源使用權(quán)力。
1.權(quán)限與用戶的關(guān)系
在Linux系統(tǒng)中,權(quán)限用來定義用戶能做什么、不能做什么。針對(duì)文件定義了三種身份,分別是屬主 Owner、屬組 Group、其他人 Others。每種身份又對(duì)應(yīng)三種權(quán)限,分別是讀 read、寫 write、執(zhí)行 execute。

Linux 中權(quán)限由 rwxr-xr-x 這 9 位字符來表示,主要控制文件的屬主 Owner、屬組 Group 以及其他用戶 Others 的權(quán)限。

一個(gè)用戶訪問文件的流程如下:
1.判斷用戶是否為文件屬主,如果是則按屬主權(quán)限進(jìn)行訪問;
2.判斷用戶是否為文件屬組,如果是則按屬組權(quán)限進(jìn)行訪問;
3.如果不是文件屬主、也不是該文件屬組,則按其他人權(quán)限進(jìn)行訪問。
我們?cè)谑褂?Linux 的過程中,時(shí)常會(huì)遇到一些關(guān)于屬主和屬組的問題,比如最常見的你想要在某個(gè)路徑下執(zhí)行某個(gè)指令,會(huì)經(jīng)常出現(xiàn)“Permission denied”錯(cuò)誤提示,這其實(shí)也是由權(quán)限問題導(dǎo)致的。
2.如何修改文件權(quán)限
修改權(quán)限簡(jiǎn)單來說就是:賦予某個(gè)用戶或組-->能夠以何種方式(讀寫執(zhí)行)-->訪問文件。
變更文件權(quán)限使用的是 chmod 這個(gè)命令,但是,權(quán)限的設(shè)置有兩種方式,可以分別使用數(shù)字或者符號(hào)進(jìn)行權(quán)限變更。對(duì)于 root 用戶而言,可以修改任何人的文件權(quán)限;普通用戶僅僅只能變更屬于自己的文件權(quán)限。
(1)NUM 方式
我們可以使用數(shù)字來表示 Linux 文件的各個(gè)權(quán)限。
一般 r 表示 4;w 表示 2;x 表示 1,每種身份各自的權(quán)限是需要累加的,比如 rwx 就表示 4+ 2 + 1 = 7。比如我們最常見的 chmod777 它就表示賦予所有的權(quán)限,也就是說誰都能看/寫/執(zhí)行,但是這種文件也存在極大的安全問題。
示例
● 設(shè)定文件權(quán)限 644,rw-r--r--
● 設(shè)定文件權(quán)限 600,rw-------
● 設(shè)定目錄權(quán)限為 755,遞歸授權(quán) rwxr-xr-x

(2)UGO 方式
九種文件權(quán)限分別對(duì)應(yīng)著:user、group 和 others,所以我們可以借由 u,g,o 來代表三種身份的權(quán)限。除此之外,a 代表 all 即全部的身份。
示例:
● 給文件所有人添加讀寫執(zhí)行權(quán)限: chmod a=rwx file
● 取消文件的所有權(quán)限: chmod a=-rwx file
● 屬主讀寫執(zhí)行,屬組讀寫,其他人無權(quán)限: chmod u=rwx,g=rw,o=- file
● 屬主屬組讀寫執(zhí)行,其他人讀權(quán)限: chmod ug=rwx,o=r file

(3)UGO 和 NUM 的區(qū)別
● UGO 權(quán)限是把對(duì)文件的訪問者做權(quán)限;
● NUM 權(quán)限是對(duì)文件本身做權(quán)限。
3.修改文件權(quán)限的影響
Windows 系統(tǒng)下通過查看文件擴(kuò)展名判斷文件是否能夠執(zhí)行,比如 .exe,.bat, .com 等,但是在 Linux 中,判斷文件是否具有可執(zhí)行權(quán)限是直接判斷文件有沒有 x 這個(gè)權(quán)限,和文件名無關(guān)。
但是在 Linux 中,不只有文件具有權(quán)限,目錄也有權(quán)限,文件是存放實(shí)際數(shù)據(jù)的地方,而目錄是記錄文件所在位置的清單,我們只有通過目錄才能找到文件放在哪里!在 Linux 中權(quán)限的設(shè)定對(duì)文件和對(duì)目錄的影響也是有區(qū)別的。

(1)對(duì)于文件:
● r :可以讀取文件內(nèi)容(比如命令 cat more head tail)。
● w :可以編輯文件(比如命令 vim echo ),但是不能刪除文件,因?yàn)槲募麤]有放在自己的文件空間,而是放在了上一級(jí)的目錄空間下。
● x :可以執(zhí)行。
(2)對(duì)于目錄:
● r:可以查詢目錄下的文件(比如命令 ls ll)。
● w:具有修改目錄結(jié)構(gòu)的權(quán)限,比如新建文件和目錄,刪除此目錄下文件和 目錄,重命名此目錄下文件和目錄,剪切和復(fù)制(比如命令 cp mv touch rm)。
● x:目錄有執(zhí)行權(quán)限但是不能運(yùn)行,可以進(jìn)入目錄(cd 命令)。
對(duì)文件來說最高權(quán)限是 x,對(duì)于目錄來說最高權(quán)限是 w,一般給目錄賦予權(quán)限 0,5(rx),7(rxw),賦予 4,1,6 都是沒有意義的。對(duì)于文件能否刪除,首先要對(duì)目錄具有執(zhí)行權(quán)限,同時(shí)對(duì)文件也具有執(zhí)行權(quán)限。
chown 命令:用來改變文件或目錄的所有者和所屬用戶組。
chgrp 命令:用來改變文件或目錄的所屬的用戶組。
示例
(1)chown(changeowner)
準(zhǔn)備環(huán)境,創(chuàng)建文件和目錄;
修改所屬主為 bin;
修改所屬組為 adm;
修改目錄所屬主為 root,所屬組為 root,并進(jìn)行遞歸授權(quán)。

(2)chgrp(changegroup)
準(zhǔn)備環(huán)境,創(chuàng)建文件和目錄;
修改所屬組為 adm。

本文介紹了幾種常用的權(quán)限命令,掌握一些基礎(chǔ)的 Linux 知識(shí)有助于我們更好的使用系統(tǒng)。需要注意的是,不要隨意更改系統(tǒng)文件夾的權(quán)限,這樣可能會(huì)導(dǎo)致您的系統(tǒng)某些功能無法正常使用。