Linux系列教程(五)——Linux常用命令之鏈接命令和權限管理命令

語言: CN / TW / HK

  前一篇博客我們講解了Linux文件和目錄處理命令,還是老生常淡,對於新手而言,我們不需要完全記住命令的詳細語法,記住該命令能完成什麼功能,然後需要的時候去查就好了,用的多了我們就自然記住了。這篇博客我們接着講Linux命令——鏈接命令和權限管理命令。

1、鏈接命令

一、生成鏈接文件命令:ln

  ①、命令名稱:ln

  ②、英文原意:link

  ③、命令所在路徑:/bin/link

  ④、執行權限:所有用户

  ⑤、功能描述:生成鏈接文件

  ⑥、語法: ln -s 【源文件】【目標文件】

        -s    創建軟鏈接

        不加 -s 創建硬鏈接

  例子:一、創建文件 /etc/issue 的軟鏈接 /tmp/issue.soft:ln -s /etc/issue /tmp/issue.soft

     二、創建文件 /etc/issue 的硬鏈接 /tmp/issue.hard:ln /etc/issue /tmp/issue.hard   我們可以看到:

  第一:軟鏈接 前面是 l 開頭的(link),而硬鏈接是 - 開頭,表示文件

  第二:軟鏈接所有者和所屬組具有全部操作的權限,rwxrwxrwx;而硬鏈接不是。也就是軟鏈接的前面都是 lrwxrwxrwx

  第三:軟鏈接類似與 windows 的快捷方式,有一個明顯的箭頭指向,而指向的是源文件

  第四:硬鏈接文件除了文件名與源文件不一樣,其餘所有信息都是一樣的。類似於 cp 複製操作。但是又和複製不一樣,硬鏈接可以同步更新。

  第五:通過 ls -i 操作,來查看 文件的 i 節點。發現硬鏈接和源文件的 i 節點是相同的,而軟鏈接與源文件的 i 節點是不同的

  第六:不允許將硬鏈接指向目錄;不允許跨分區創建硬鏈接

2、權限管理命令

一、更改文件或目錄權限命令:chmod

  ①、命令名稱:chmod

  ②、英文原意:change the permissions mode of a file

  ③、命令所在路徑:/bin/chmod

  ④、執行權限:所有用户

  ⑤、功能描述:改變文件或目錄權限

  ⑥、語法: chmod 【{ugoa}{+-=}{rwx}】【文件或目錄】

        【mode=421】【文件或目錄】

         -R 遞歸修改

  注意:不是每一個Linux用户都有權限更改某個文件或目錄權限,能更改文件或目錄權限的只有兩種用户

     ①、文件的所有者。我們通過ls命令查看某個文件的詳細信息,可以看到該文件的所有者。

     ②、root用户,這不用多説,root用户是linux系統權限最大的用户。別人不能幹的事,root用户都能幹。

  對於上面的語法 chmod 【{ugoa}{+-=}{rwx}】【文件或目錄】,我們要知道ugoa分別是:u:表示所有者,g:表示所屬組,o:表示其他人,a:表示所有人。而rwx表示的意思如下:   對於【mode=421】【文件或目錄】,這是我們將權限用數字表示,其中 r 表示4,w表示2,x表示1,分別是2的0次方,1次方,2次方。那麼我們可以這樣理解:具有 rwx 權限的數字就是 7,具有 rw- 權限的數字是 6,具有 r-- 權限的數字是 4。

  範例1:我們賦予 tmp 目錄下的 tmp.log 所有者 x 的權限;賦予 所屬組 w 權限,其他人 w 權限。

      chmod u+x /tmp/tmp.log

      chmod g+w,o+w /tmp/tmp.log   將上面例子改為用 數字來操作,也就是説我們要給 tmp.log賦予的文件權限是 rwxrw-rw-,用數字表示是766。chmod 766 tmp.log   我們還可以遞歸賦予權限,也就是加上 -R 參數給指定目錄下的所有文件或目錄賦予指定權限。

  範例2:給 tmp 目錄下所有文件和目錄賦予 776 的權限

  chmod -R 776 /tmp

二、改變文件或目錄所有者命令:chown

  ①、命令名稱:chown

  ②、英文原意:change file ownership

  ③、命令所在路徑:/bin/chown

  ④、執行權限:所有用户

  ⑤、功能描述:改變文件或目錄的所有者

  ⑥、語法: chmod 【用户】【文件或目錄】

  注意:能更改文件或目錄的所有者用户是 root

  這裏我們通過useradd【用户名】命令創建用户,然後通過passwd【用户名】輸入密碼,這兩個命令後面會將。我們通過這兩個命令創建 vae 用户   然後我們將tmp.log的所有者更改為 vae 用户:chown vae tmp.log

三、改變文件或目錄所屬組命令:chgrp

  ①、命令名稱:chgrp

  ②、英文原意:change file group ownership

  ③、命令所在路徑:/bin/chown

  ④、執行權限:所有用户

  ⑤、功能描述:改變文件或目錄的所屬組

  ⑥、語法: chgrp【用户組】【文件或目錄】

  注意:能更改文件或目錄的所有者用户是 root

四、顯示、設置文件的缺省權限命令:umask

  ①、命令名稱:umask

  ②、英文原意:the user file-creation mask

  ③、命令所在路徑:shell 內置命令

  ④、執行權限:所有用户

  ⑤、功能描述:顯示、設置文件的缺省權限

  ⑥、語法: umask 【-S】

        -S 以rwx形式顯示新建文件的缺省權限

  注意:可能大家不太明白這個命令的意思,我們分別執行umask和 umask -S ,如下:   其中umask 執行顯示結果是 0022,第一個0表示特殊權限,後面我們會單獨進行講解有哪幾種特殊權限。022表示權限的掩碼值,我們用7 7 7 減去 0 2 2得到755(是每一位相減),表示的就是下面通過加上-S輸出的rwxr-xr-x,這個值用數字表示就是755.

  這個意思説明創建一個文件的默認權限所有者為rwx,所屬組為rx,其他人為rx。也就是説創建一個新文件默認權限為 rwxr-xr-x,我們創建一個文件來驗證一下:   我們發現使用touch命令創建了一個文件a.txt,然後發現權限並不是rwxr-xr-x,而是rw-r--r--。對比發現少了三個x,也就是少了可執行權限。這是為什麼呢?

  這是因為在Linux系統中,所有新創建的文件都是沒有可執行權限的。這是出於Linux系統的一種自我保護,因為類似的病毒木馬程序都是具有可執行權限的。所以在Linux系統中,新創建的文件是沒有可執行權限的。

  那麼我們如何設置默認權限呢?比如我們想將新創建的文件權限設置為rwxr-xr--,也就是754。我們用777減去754得到023。也就是通過執行 umask 023 來完成默認權限設置。

3、總結

  本篇文章我們講解了鏈接命令ln和權限管理命令。首先對於鏈接命令,我們要注意 ln -s 表示創建軟鏈接,不加-s表示創建硬鏈接,我們需要注意軟鏈接和硬鏈接的區別,軟鏈接類似與 windows 的快捷方式,有一個明顯的箭頭指向,而指向的是源文件。而硬鏈接我們可以想象為 cp -p +同步更新,也就是説創建的硬鏈接和原文件保持一樣的屬性,而且原文件更改了,硬鏈接也會更改。

  接着我們介紹了幾個權限管理命令,對於權限,我們説夠用就好,很多新手在進行權限操作是,上來就是 chmod 777 【文件或目錄】,這樣雖然省事,但是顯然是不夠準確的,chmod命令可以更改文件或目錄權限,chown命令可以改變文件或目錄所有者,chgrp命令可以改變文件或目錄所屬組。我們需要注意的是,後面兩個命令只能由root用户來完成,而chmod命令除了root用户能完成,還有所更改文件或目錄的所有者。