-- 作者 謝恩銘 轉載請註明出處
內容簡介
- 第二部分第五課:使用者和許可權,有權就任性
- 第二部分第六課預告:Nano文字編輯器和終端配置
使用者和許可權,有權就任性
上一課 Linux探索之旅 | 第二部分第四課:檔案操縱,股掌之中 中,我們學了不少很有用的基礎知識。
今天的標題也挺任性的,小編自認是一個很本分的人(真的嗎?),起這種標題也是“情非得已”。
第二部分的前幾課我們講解了終端,命令列,檔案和目錄,檔案操作。都算是Linux的重要基礎。
這一課我們來講一個極為重要的內容,可以說是Linux基礎中的重點:使用者和許可權。
我們知道Linux是一個多使用者系統,所以可以實現多人同時不同地登入一個Linux系統,而每個人有不同的許可權,這些許可權規定了每個人能夠做什麼,不能夠做什麼。
就好比一個市政廳,雖然可以有很多人同時在裡面辦公,但是不同層級的人能夠做的事是不一樣的。
正因為多使用者這個特性,所以更要嚴加管理每個使用者,以防止互相干擾,甚至越權行為。因為萬一有居心叵測的使用者擁有了高度許可權,對所有使用者豈不是一種威脅麼。
所以,Linux系統中的每個使用者都有自己獨立的賬號,而且其賬號受著許可權的制約。
是不是覺得躍躍欲試,我保證這一課會很有意思的。而且再提一次,這一課極為重要!
sudo命令:以root身份執行命令
在我們安裝Ubuntu系統的時候,到了最後幾步,安裝程式會讓我們建立自己的使用者名稱。比如,小編就建立了名為oscar的使用者。
在大多數的Linux發行版中(Ubuntu是一個Linux發行版),我們都建議初學者建立一個有限權利的賬戶。小編的oscar這個使用者就是有限許可權的賬戶。
也許你會問:“等一下,有沒有搞錯?這個Linux系統是我安裝的,我還不能想幹什麼就幹什麼了?為什麼我的權利是有限的?那我還怎麼任性啊?”
是的,而且這是一種安全機制。當然了,當我們在終端中使用命令列的時候,我們隨時可以說:我想要切換到什麼都可以做的使用者的身份。但是,預設情況下,我們是沒有為所欲為的許可權的,這會比較安全。
因為有些命令會對Linux系統的穩定性和安全性造成威脅。具有有限的許可權,意味著我們不能隨隨便便就執行一些可怕的命令,例如那個“草木為之含悲,風雲因而變色”的命令:
rm -rf /複製程式碼
我們在上一課講過,rm -rf / 這個命令會刪除你的所有東西。所以江湖上人人聞之色變,除了顫抖還是顫抖。
接下來,我們先了解一下Linux中使用者是如何組織的,然後再來學習如何變身為超級使用者。
Linux下的使用者組織
在Linux中,理論上說來,我們可以建立無數個使用者。但是這些使用者是被劃分到不同的群組裡面的。
有一個使用者,名叫root,是一個很特殊的使用者。字大管家,號超級使用者,江湖諢號“有錢任性”。因為在Linux系統中,它可以做任何事情。
我們用下圖來演示一下Linux中的使用者組織的一般可能形式:
上圖中的群組,可以有好多不同的,我們舉了“家人”和“朋友”兩個例子而已。
在我們裝完Linux系統後,假如我們建立的個人使用者叫做oscar,那麼這時系統中只有兩個使用者:root和oscar。
root使用者是預設會建立的,因為是系統的大管家,超級使用者。
oscar則是小編自己建立的使用者。
我們只在必要時才會切換為root身份。這一課中你將學習到的幾個命令須要root身份才能執行。
其他時候,我們都是用有限許可權的使用者:oscar(當然,這是小編的情況,你的個人使用者可能叫xiaoming)。
這一簡單的保護措施大大地提高了Linux系統的安全性,有效防止誤操作或是病毒的攻擊。因為如果你是以個人使用者身份登入系統,被病毒控制了電腦,那麼它也只能做有限的事,不能為所欲為。但假如你以root使用者登入系統,那麼劫持你的病毒就可以胡作非為了,甚至毀了你的系統。
在Windows系統中,預設是以系統大管家或管理員賬戶登入,叫做Administrator。這也是Windows系統較Linux系統更加容易被病毒攻擊得逞的原因。
例外:Ubuntu系統是Linux系統中一個特例,它預設不允許以root使用者登入系統。root使用者存在,但是你不能直接登入。我們接下來會學習如何間接登入root。Ubuntu的開發者解釋說他們考慮到對於初學者,能登入root使用者太危險。
祕:但其實我們還是可以通過設定來允許Ubuntu直接登入root的。自己可以百度/Google。我就不把此方法告訴大家了,免得毀了系統來扔我雞蛋。
sudo命令:暫時成為root
預設地,我們是以個人使用者身份登入Ubuntu系統。在小編的情況,是oscar這個使用者。
在Ubuntu中預設不允許在開機時直接以root使用者登入,那麼我們要如何來執行一些只有root才有權利執行的命令呢?
別擔心,我們可以使用sudo這個命令暫時成為root,當一天的皇帝也是很開心的嘛。
sudo是英語Substitute User DO的縮寫,substitute是“替換,代替,替身”的意思,user是“使用者”的意思,do就是“做”的意思。所以連在一起就是“替換使用者來執行...”的意思。
因此,如果我們要執行只有root才可以執行的命令,那麼可以在此命令前面加上sudo命令,如下:
sudo command複製程式碼
終端會提示你輸入密碼,至少第一次會要求輸入密碼。此密碼就是你個人使用者的密碼,在小編的情況,就是我的oscar這個賬戶的密碼。
比如,我們可以用sudo命令配合date命令執行一下(放心,執行date命令不會有什麼危險):
sudo date複製程式碼
可以看到,在我們輸入 sudo date後,回車,終端要求我們輸入個人使用者的密碼,就是那一行:
[sudo] password for oscar:複製程式碼
意思是輸入oscar這個使用者的密碼(password是英語“密碼”的意思)。
小編輸入了oscar賬戶的密碼,雖然輸入密碼時是看不到任何字元的,這是為了安全。
輸入密碼之後,回車,date命令的執行結果就顯示給我們了,還記得我們的date命令麼?是的,它用於顯示當前日期和時間。
當然了,date這個命令並一定要是root使用者才能執行,所以沒什麼特別,只是給大家一個印象,如何用sudo命令暫時切換為root身份。
sudo su命令:一直成為root
有的人當一天皇帝就知足了,但有的人想要當得更久一些,甚至《向天再借五百年》,怎麼辦呢?
只需要使用 sudo su 這個組合命令,就可以一直成為root使用者了。
終端會要求我們輸入個人使用者的密碼,就是那一行:
[sudo] password for oscar:複製程式碼
可以看到,執行了sudo su之後,我們的命令列提示符從 oscar@oscar-laptop:~$ 變成了 root@oscar-laptop:/home/oscar#
如果你還記得我們在命令列那一課裡講到的如何閱讀命令列提示符,你就會很容易明白此時我們已經完成了“屌絲逆襲”:
從oscar升級為root使用者了!(從第一個root可以看出,還有結尾處的#也表明此時是root身份)。
這個時候就要小心了,因為此時你已經可以為所欲為了。
當然了,如果你感覺有點不適應,訝異於幸福來得太突然,還留戀屌絲的身份,那麼可以退出root使用者,重新回到個人使用者身份,用 exit命令就可以完成(exit是英語“退出,離開”的意思):
可以看到,當我們身為root時,只要執行exit命令,就隨時可以回到個人使用者。
在Ubuntu以外的其他Linux發行版,也許切換到root賬戶,不是用sudo su,而是隻需要su就可以了。當然我們比較建議再加一個橫線,用
su -複製程式碼
這樣不僅能切換為root,還可以直接定位到root的家目錄。而且可以直接使用root才能用的那些命令。
使用者管理的命令
既然你已經學會了如何暫時或一勞永逸地成為root使用者,那麼我們就可以來學習一些只有root使用者才能執行的命令了。
adduser命令就是其中之一。
adduser命令:新增新使用者
adduser這個命令,我們很容易理解其作用,因為完全可以顧名思義:add是英語“新增”的意思,user是英語“使用者”的意思,因此adduser就是用於新增使用者。
用法也很簡單,adduser命令後接我們要建立的使用者名稱。
如果你使用你的個人使用者身份來執行這條命令,終端會提示你沒有許可權:
可以看到,我們在oscar這個使用者的身份下,執行 adduser thomas,表示我們想要建立一個新使用者,叫做thomas。
但是不能執行,終端提示“adduser: Only root may add a user or group to the system”。
這句英語翻出來就是“adduser:只有root使用者才能往系統裡新增使用者或群組”。
太看不起人了,我不變身為鋼鐵俠你以為我只是託尼.斯塔克是吧?
所以我只能穿上sudo su這套“鋼衣”,先變身為鋼鐵俠,再來執行adduser thomas這個命令。
可以看到,我們成為root之後,執行adduser thomas就沒問題了,顯示thomas使用者被新增,使用者名稱是thomas,群組是thomas,建立/home/thomas這個thomas的家目錄,然後終端命令停在這一行:
Enter new UNIX password:複製程式碼
意思是“請為thomas這個使用者建立一個密碼”。
我們隨便填寫,然後回車,會讓我們再輸入一遍密碼確認。然後接著是一些配置資訊,比如thomas這個使用者的全名,房間號,工作電話,家庭電話,其他。我們通通可以不填寫,用Enter鍵略過,到了最後終端會提示:
Is the information correct ? [Y/n]複製程式碼
意思是“以上這些資訊都正確嗎?[正確請輸入y/不正確輸入n]”。
我們輸入y,回車。thomas使用者就正式建立好了。可以看一下此時/home目錄裡的內容,發現多了一個 thomas 目錄。也就是thomas這個使用者的家目錄。如下圖:
passwd命令:修改密碼
如果之後你對設定的密碼不滿意,那麼可以用passwd命令來修改當前密碼。
passwd命令是password這個英語單詞的縮寫,表示“密碼”。
用法也類似adduser,只要在其後加上需要修改密碼的那個使用者名稱,例如:
passwd thomas複製程式碼
Enter new UNIX password的意思是“輸入新的密碼”
Retype new UNIX password的意思是“再輸入一遍密碼”
輸入兩次相同的新密碼之後,可以看到提示:password updated successfully,意思是“密碼更新成功”。
deluser:刪除使用者
既然有新增使用者的命令,那麼也一定有刪除賬戶的命令。
是的,我們可以用deluser命令來刪除已建立的賬戶。
deluser是delete和user的縮寫,delete是英語“刪除”的意思,user是“使用者”的意思。
用法同adduser,在後面接你要刪除的使用者名稱。例如:
deluser thomas複製程式碼
可以看到,執行deluser thomas這個命令,終端不會提示你確認是否刪除,而是直接刪除了使用者thomas。
所以,deluser這個命令還是要謹慎使用。
因為如果你刪除的是你的個人使用者,例如小編的情況,假如我 deluser oscar。
那麼就會陷入囧境:在下次系統啟動時你就不能以oscar登入了,而Ubuntu預設又不允許root登入,你就會不知所措了。
單單用deluser命令,不加引數的話,只會刪除使用者,但是不會刪除在/home目錄中的使用者家目錄。如果你想要連此使用者的家目錄也一併刪除,可以加上 --remove-home 這個引數,如下:
deluser --remove-home thomas複製程式碼
這樣,不僅刪除了thomas這個使用者,連/home/thomas這個目錄也會刪除。
注意:adduser和deluser命令只是Debian一族(包括Ubuntu)才有的命令。其他的LInux發行版,一般來說,新增使用者和刪除使用者是用useradd和userdel命令。
而且,用useradd新增使用者之後,在預設的情況下,該賬號是暫時被封鎖的, 也就是說,該賬號是無法登入,須要用passwd命令來給新建立的使用者設定密碼之後才可以使用。
群組管理的命令
在這課的開頭,我們說了,Linux中每一個使用者都屬於一個特定的群組。
那你要問了:“那麼我們剛才建立的thomas是屬於哪個群組呢?我們以前建立的個人使用者oscar又屬於哪個群組呢?我們之前都沒配置呀。”
事實上,如果你不設定使用者的群組,那麼它預設會建立一個和它的使用者名稱一樣的群組,並且把使用者劃歸到這個群組。
我們可以用ls -l命令來看一下/home目錄下的內容:
可以看到,我們的oscar使用者和thomas使用者的家目錄分別是/home/oscar和/home/thomas。
在每一行的各列都有不同意義,我們之前的課程裡有講解過(Linux探索之旅 | 第二部分第三課:檔案和目錄,組織不會虧待你)。
所以,第三列表示檔案或目錄的所有者,第四列表示檔案或目錄的所在群組。
可以注意到:oscar這個目錄的所有者是oscar,群組是oscar;thomas這個目錄的所有者是thomas,群組是thomas。
我們也注意到其他的兩個:image.bnp這個檔案的所有者是root,群組是root;swaroop這個目錄的所有者是root,群組是root。所以其實root這個群組是存在的,root使用者就屬於這個群組。
但是,把使用者分在不同的群組,到底有何意義呢?
在使用者不多的時候,我們會覺得一個使用者屬於一個群組(比如預設是與使用者名稱相同的群組名)是挺不錯的。但是一旦使用者一多,你可能就想要建立群組了。
我們來學習如何管理群組。當然,群組還有許可權的考量因素,我們這課之後會講許可權。
當然了,群組管理的命令也需要root身份。
addgroup:建立群組
addgroup是add和group的縮寫,add是英語“新增”的意思,group是英語“群組”的意思。所以addgroup命令用於新增一個新的群組。
用法也很簡單,和adduser命令類似,後接需要建立的群組名。例如:
addgroup friends複製程式碼
建立一個名為friends的群組,friends是英語“朋友”的意思,也是美劇《老友記》,哈哈。
在上圖中,我們看到,用addgroup命令建立了一個新的群組,名叫friends,而且成功了。Done是英語“完成”的意思。
很不錯,不過目前friends這個群組還是空的,因為還沒有往裡面新增使用者呢。
usermod命令:修改使用者賬戶
usermod是user和modify的縮寫,user是英語“使用者”的意思,modify是“修改”的意思。usermod命令用於修改使用者的賬戶。
usermod命令有好多引數,可以實現不同的功能。不過我們暫時只需要記得它的兩個引數:
-l:對使用者重新命名,但是/home目錄中的使用者家目錄名不會改變,需要手動修改。
-g:修改使用者所在群組
用法很簡單,假如我要將thomas這個使用者放到我剛建立的friends這個群組裡,可以這樣寫:
usermod -g friends thomas複製程式碼
我們知道,使用者thomas之前的群組是thomas,預設的。執行完usermod -g friends thomas之後,thomas的群組就會變成friends了,但是在 /home/thomas這個目錄的資訊不變,仍舊顯示群組是thomas。
我們怎麼知道使用者thomas的群組已經改變為friends了呢?
我們可以用groups命令,這個命令可以獲知一個使用者屬於哪個(些)群組。
用法很簡單,後接使用者名稱就可以了,當然使用者要存在才行。
可以看到,thomas的群組是friends;root的群組就是root;oscar的群組有好幾個,說明小編加入了很多“組織”。
上圖中,我們確實看到了,/home/thomas這個目錄的資訊沒變,第四列表示群組的依舊是thomas。
當然我們也可以一次將一個使用者新增到多個群組,就用 -G 引數(大寫的G)。用法如下:
usermod -G friends,happy,funny thomas複製程式碼
以上命令把thomas新增到friends,happy和funny三個群組。記得群組名之間要用逗號分隔,而且沒有空格。
注意:使用usermod時要小心,因為配合-g或-G引數時,它會把使用者從原先的群組裡剔除,加入到新的群組。如果你不想離開原先的群組,又想加入新的群組,可以在-G引數的基礎上加上-a引數,a是英語append的縮寫,表示“追加”。例如:
usermod -aG happy thomas複製程式碼
以上命令就把thomas追加到群組happy裡了,這樣thomas就屬於兩個群組:friends和happy
可以用groups命令測試一下。
注意:groups命令如果單獨用,不加任何引數,會顯示當前使用者所在群組。
記得,追加群組的時候,一定要用大寫的G這個引數,不能用小寫的g這個引數,即使只追加一個群組。
delgroup命令:刪除群組
delgroup是delete和group的縮寫,delete是英語“刪除”的意思,group是英語“群組”的意思。所以delgroup命令用於刪除一個已存在的群組。
用法很簡單,後接想要刪除的群組名:
delgroup happy複製程式碼
就刪除了happy這個群組。
再用groups命令測試,發現thomas只屬於friends群組了。因為happy這個群組被刪除了嘛。
注意:addgroup和delgroup命令只是Debian一族(包括Ubuntu)才有的命令。其他的LInux發行版,一般來說,新增使用者和刪除使用者是用groupadd和groupdel命令。
修改檔案的所有者和群組
只有root使用者可以修改一個檔案的所有者和群組。
比如說,小編自己的使用者oscar的家目錄有一個檔案,file.txt,是我建立的。
我們用ls -l命令來看一下它的資訊:
可以看到,file.txt的所有者和群組都是oscar。
現在我決定,把這個檔案轉讓給thomas,也就是讓file.txt的所有者變為thomas,怎麼做呢?
chown命令:改變檔案的所有者
此命令也需要root身份才能執行。
chown是change和owner的縮寫,change是英語“改變”的意思,owner是英語“所有者”的意思。
因此chown命令用於改變檔案的所有者。
用法也很簡單,後接新的所有者的使用者名稱,再接檔名。例如:
chown thomas file.txt複製程式碼
可以看到,用chown命令,把file.txt檔案的所有者改為thomas之後,file.txt的所在群組是不變的,還是oscar。
正所謂“身在曹營心在漢”。那麼如何使它“身在曹營心也在曹營”呢?
就要用到chgrp命令了。
chgrp命令:改變檔案的群組
chgrp是change和group的縮寫,change是英語“改變”的意思,group是英語“群組”的意思。
chgrp命令用於改變檔案的群組。
用法也很簡單,後接新的群組名,再接檔名。例如:
chgrp thomas file.txt複製程式碼
好了,這下file.txt的所有者和群組都是thomas了。
其實,chown命令也可以改變檔案的群組,用法如下:
chown thomas:friends file.txt複製程式碼
這句命令就把file.txt這個檔案的所有者改為thomas,群組改為friends了。用法也很簡單,就是在所有者和群組之間用冒號隔開。
-R引數:遞迴設定子目錄和子檔案
chown命令的-R引數非常有用,還記得以前我們有些命令也會使用-R引數麼?
是的,R是recursive的縮寫,表示“遞迴”。所以如果chown命令配上-R引數,就會使得被修改的目錄的所有子目錄和子檔案都改變所有者(或者連群組也改變,如果用上述冒號的方法來同時修改所有者和群組)。
例如,假如我突然變得“很壞”,想要把使用者thomas的家目錄的所有子目錄和檔案都佔為己有。我可以這麼做:
chown -R oscar:oscar /home/thomas複製程式碼
這樣不但使/home/thomas這個目錄的所有者和群組都變成oscar,而且其子目錄和子檔案也都是如此。
可以看到,/home/thomas都歸我(oscar)所有了。
chmod命令:修改訪問許可權
好了,這一節我們要攻堅這一課最難的部分了:訪問許可權。
許可權的原理
在Linux系統裡,每個檔案和目錄都有一列許可權屬性。這一列訪問許可權指明瞭誰有讀的權利,誰有修改的權利,誰有執行的權利。
我們其實早就見過訪問許可權了,是的,就在我們執行ls -l命令的時候,顯示的每個檔案或目錄的第一列資訊就是訪問許可權。
比如我們在/home/oscar/linux_c目錄下執行ls -l命令試試(當然你可以在你的家目錄或其他目錄執行也可以,因為小編的家目錄東西太多了,比較亂):
上圖中檔案資訊的第一列比較複雜,我們可以看到不少 d,r,w,l,x等字母。如果不細分的話,這些我們可以通稱為檔案訪問許可權符。
以下列出我們看到的字母的含義:
d:是英語directory的縮寫,表示“目錄”。就是說這是一個目錄。
l:是英語link的縮寫,表示“連結”。就是說這是一個連結。
r:是英語read的縮寫,表示“讀”。就是說可以讀這個檔案。
w:是英語write的縮寫,表示“寫”。就是說可以寫這個檔案,也就是可以修改。
x:是英語execute的縮寫,表示“執行,執行”。就是說可以執行這個檔案。
如果x許可權在一個目錄上,那麼表示的是這個目錄可以被讀,也就是可以開啟此目錄來看其子目錄和子檔案,如果它同時有r許可權的話。
如果相應位置有字母,表示有相應許可權;如果相應位置是一個短橫 -,則表示沒有相應許可權。
為什麼我們看到這一排有好多個重複出現的r,w和x呢?
那是因為訪問許可權是按照使用者來劃分的:
如上圖,除開第一個表示檔案或目錄屬性的符號(此處是d,表示目錄。如果是l,則是連結。還有其他字母,我們暫時不深究。如果是短橫-,那麼是普通檔案。),其他的9個符號被劃分為三組,從左到右分別表示:
第一組rwx表示檔案的所有者對於此檔案的訪問許可權。
第二組rwx表示檔案所屬的群組的其他使用者對於此檔案的訪問許可權。
第三組rwx表示除前兩組之外的其他使用者對於此檔案的訪問許可權。
我們用一個具體的檔案來作為例子分析一下:
可以看到,renamed_file這個檔案的訪問許可權是
-rw-r--r--複製程式碼
我們從左到右來分析這些符號都表示什麼:
-:第一個短橫表示這是一個普通檔案。如果此處是d,那麼表示目錄;如果是l,那麼表示連結,等等。
rw-:表明了檔案的所有者(此處是oscar)對檔案有讀,寫的許可權,但是沒有執行的許可權。也很好理解,因為這是一個普通檔案,預設沒有可執行的屬性。記住:如果有w許可權(寫的許可權),那麼表明也有刪除此檔案的許可權。
r--:表明檔案所在的群組(此處是oscar)的其他使用者(除了oscar之外)只可以讀此檔案,但不能寫也不能執行。“可遠觀而不可褻玩焉”。
r--:表示其他使用者(除去oscar這個群組的使用者)只可以讀此檔案,但不能寫也不能執行。
綜上所述,renamed_file這個檔案是一個普通檔案,不是一個目錄,也不是連結檔案,它的所有者oscar可以讀寫它,但不能執行;其他的使用者只能讀。
那麼root呢?對於此檔案root使用者的訪問許可權是什麼呢?
記住:root是超級管家,它有所有許可權,"只有它想不到的,沒有它做不到的"。
它可以讀、寫、執行任意檔案。
chmod命令:修改檔案的訪問許可權
既然我們已經學會了如何檢視和理解檔案的訪問許可權,我們就來學習如何修改檔案的訪問許可權吧。
我們要用到chmod命令,這個命令也是Linux中常用的命令。
畢竟“一朝權傾天下有”,“爭權奪利”誰不喜歡啊。開個玩笑...
開始講解之前,要說明一點,chmod命令不需要是root使用者才能執行。只要你是此檔案的所有者,你就可以用chmod來修改檔案的訪問許可權。
chmod是change和mode的縮寫,change是英語“改變”的意思,mode是“模式”的意思。chmod命令用於修改檔案的各種訪問許可權。
chmod這個命令充滿魅力,因為它的用法不止一種,好像一個千面女郎,令人著迷。
最常見的用法應該是數字式的。
用數字來分配許可權:chmod的絕對用法
我們接下來要做一些加法,大家準備好了嗎?不要讓小學數學老師哭暈在體育辦公室哦。什麼?你的小學數學是語文老師教的,好,算你厲害...
不要怕,只是做一些極為簡單的加法,我們只要心算就可以了。
事實上,Linux系統對每種許可權(r,w和x)分配了對應的數字:
許可權 | 數字 |
---|---|
r | 4 |
w | 2 |
x | 1 |
所以,如果我們要合併這些許可權,就需要做簡單的加法了:將對應的數字相加。
假如我們要分配讀,寫許可權,那麼我們就要用4+2,就等於6。數字6表示具有讀和寫許可權。
以下是可能的組合形式:
許可權 | 數字 | 計算 |
---|---|---|
--- | 0 | 0 + 0 + 0 |
r-- | 4 | 4 + 0 + 0 |
-w- | 2 | 0 + 2 + 0 |
--x | 1 | 0 + 0 + 1 |
rw- | 6 | 4 + 2 + 0 |
-wx | 3 | 0 + 2 + 1 |
r-x | 5 | 4 + 0 + 1 |
rwx | 7 | 4 + 2 + 1 |
不難吧?
所以,對於訪問許可權的三組(所有者的許可權,群組使用者的許可權,其他使用者的許可權),我們只要分別做加法就可以了,然後把三個和連起來。
例如:640分別表示:
檔案的所有者有讀和寫的許可權。
檔案所在群組的其他使用者具有讀的許可權。
除此之外的其他使用者沒有任何許可權。
因此,我們可以給的最寬泛的許可權就是 777:所有者,群組使用者,其他使用者都有讀,寫和執行的許可權。這樣,所有人就都可以對此檔案“為所欲為”了。
相反,如果許可權是000,那麼沒有人能對此檔案做什麼。當然,除了root,root可以做任何事。
我們現在來修改renamed_file的許可權試試:
chmod 600 renamed_file複製程式碼
可以看到,我們的renamed_file檔案的訪問許可權被修改為了
rw-------複製程式碼
正好是600。
所以現在只有oscar可以讀和寫此檔案,其他人都不能做什麼。當然,除了root之外。
用字母來分配許可權:chmod的相對用法
除了用數字,我們也可以用另一種方式來分配檔案的訪問許可權:用字母。
原理是類似的,但是有時用字母的方式更加精巧,因為不需要一次性把三組許可權都寫出來。
我們需要知道不同的字母代表什麼:
u:user的縮寫,是英語“使用者”的意思。表示所有者。
g:group的縮寫,是英語“群組”的意思。表示群組使用者。
o:other的縮寫,是英語“其他”的意思。表示其他使用者。
a:all的縮寫,是英語“所有”的意思。表示所有使用者。
當然了,和這些字母配合的還有幾個符號:
+:加號,表示新增許可權。
-:減號,表示去除許可權。
=:等號,表示分配許可權。
接下來,我們舉例說明如何使用:
#檔案file.txt的所有者增加讀和執行的許可權。
chmod u+rx file.txt
#檔案file.txt的群組其他使用者增加讀的許可權。
chmod g+w file.txt
#檔案file.txt的其他使用者移除讀的許可權。
chmod o-r file.txt
#檔案file.txt的群組其他使用者增加讀的許可權,其他使用者移除讀的許可權。
chmod g+w o-w file.txt
#檔案file.txt的群組其他使用者和其他使用者均移除讀的許可權。
chmod go-r file.txt
#檔案file.txt的所有使用者增加執行的許可權。
chmod +x file.txt
#檔案file.txt的所有者分配讀,寫和執行的許可權;群組其他使用者分配讀的許可權,不能寫或執行;其他使用者沒有任何許可權。
chmod u=rwx,g=r,o=- file.txt複製程式碼
-R引數:遞迴地修改訪問許可權
-R引數可是“死性不改”,上一課可以配合cp命令來遞迴拷貝檔案,這一課又來“搗蛋”:
chmod配合-R引數可以遞迴地修改檔案訪問許可權。
假如我要只允許oscar這個使用者能讀,寫,執行/home/oscar這個目錄的所有檔案(當然,root不算,root可以做任何事),該怎麼做呢?
chmod -R 700 /home/oscar複製程式碼
就是這麼簡單。
終於結束了,長舒一口氣。
總結
在Linux系統中,每一個使用者都有自己獨立的賬戶。
使用者是被分組的。
存在一個超級使用者,也就是一般說的大管家,它有權利做任何事情,它就是root。它有權利安裝軟體,並且對系統設定做修改。
有一些命令要能執行須要先切換到root身份,我們可以用sudo這個命令來實現此切換。比如以下這些命令就需要在前面再加一個sudo:adduser(用於新增新使用者),deluser(用於刪除使用者),chmod(用於修改檔案的許可權)。
我們可以用chmod命令來修改檔案的訪問許可權。有三種許可權:r(讀許可權),w(寫許可權)和x(執行許可權)。
第二部分第五課預告
今天的課就到這裡,一起加油吧!
下一課我們學習:Linux探索之旅 | 第二部分第六課:Nano文字編輯器和終端配置
微信公眾號「程式設計師聯盟」ProgrammerLeague
我是謝恩銘,在巴黎奮鬥的軟體工程師。
我的簡介
我的經歷
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:“向著標杆直跑”