天天看點

Linux的檔案權限rwx怎麼設定?有幾種方法可以設定權限?

作者:青楓教學

每次看到Linux的檔案名前有一堆rwx字母,一直搞不懂是什麼意思?這次帶你一次性搞懂!

此文介紹了檔案的權限分類、各種設定權限的方法、設定使用者群組的方法,最後還列出了Linux常見的目錄結構,幫助需要的朋友從大體上了解熟悉Linux。

檔案可存取的身份分類:

  • owner(所有者/擁有者)
  • group(群組)
  • others(其他人)

檔案的權限分類:

  • read(讀)
  • write(寫)
  • execute(執行)

檔案屬性解析:

示例:

dr-xr-x---. 5 root root 4096 May 29 16:08 .
 
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
 
[檔案類型][權限][連接配接數][擁有者名稱][所屬群組][檔案大小,機關預設是Bytes][最新修改的日期]
           

以上是一個檔案各屬性值,現在來解讀每個值的含義:

  • 檔案類型:第一行的 “d” 表示此檔案是一個目錄,第二行的 “-” 表示是一個普通檔案,檔案類型有下列幾種:
    • d 為目錄
    • - 為檔案
    • | 為連結檔案,即符号連結/軟連接配接
    • b 為裝置檔案裡面的存取裝置
    • c 為裝置檔案裡面的鍵盤、滑鼠之類的一次性讀取裝置
  • 權限:以三個為一組,rwx三個字母的組合,順序不會改變,r(read)表示可讀,w(write)表示可寫,x(execute)表示可執行,如果沒有權限,用減号 “-” 代替
    • 權限的第一組是擁有者的權限
    • 權限的第二組是群組的權限
    • 權限的第三組是其他人的權限
  • 第一行的權限:擁有者和群組都是可讀、可執行,而其他使用者是沒有權限的
  • 第二行的權限:擁有者是可讀、可寫,群組和其他人是可讀的權限。
  • 連接配接數:每個檔案都會将他的權限與屬性記錄到檔案系統的i-node中,這個屬性記錄的,就是有多少不同的檔案名連結到相同的一個i-node
  • 擁有者名稱即賬号的名稱
  • 所屬群組即群組的名稱
  • 檔案大小容量
  • 最新修改的日期,如果修改的時間距離目前時間過遠,則隻顯示年份

改變檔案屬性與權限的指令

  • chgrp:修改檔案的所屬群組

文法:

// chgrp即change group的縮寫
chgrp [-R] groupname filename
           

文法解析:-R 選項表示遞歸子目錄修改群組,groupname表示組名,filename表示檔案名

示例:

// 修改test.txt檔案的所屬組為users,如果users這個群組名不在/etc/group中,則報無效的群組,建立新群組的指令:groupadd [option] groupname,例如:sudo groupadd users
chgrp users test.txt
           
  • chown:修改檔案的擁有者

文法:

// chown即change owner的縮寫
chown [-R] ownername filename
           
文法解析:-R 選項表示遞歸子目錄修改擁有者,ownername表示擁有者名稱,filename表示檔案名

示例:

// 修改test.txt檔案的擁有者為alan,如果alan不在/etc/passwd中,則報無效使用者名,建立新使用者的指令:useradd [option] username,例如:sudo useradd alan
chown alan test.txt
           
chown修改擁有者時還可以同時修改群組

文法:

chown ownername:groupname filename
           
文法解析:先接擁有者名稱,再接群組名稱,使用冒号 “:” 隔開

示例:

chown alan:users test.txt
           
使用chown隻修改群組的方法

文法:

chown .groupname filename
           
文法解析:在群組名前加上 “.” 英文句号,則表示隻修改群組名

示例:

chown .users test.txt
           
  • chmod:修改檔案的權限
方法一:使用數字的方式來修改

r(可讀)、w(可寫)、x(可執行)三者對應的數字是4、2、1,總數為7,那麼在修改權限時,4代表r,2代表w,1代表x

文法:

chmod [-R] xyz filename
           
文法解析:xyz表示權限數字的組合

示例:

// 第一個7是擁有者的權限(4+2+1),即可讀、可寫、可執行,後兩個5是群組和其他使用者的權限(4+1),即可讀、可執行
chmod 755 test.txt
 
// 三個7則表示擁有者、群組、其他人都是可讀、可寫、可執行的權限
chmod 777 test.txt
           
方法二:使用符号類型來改變權限

因為權限的有三種身份:user、group、others,那麼就用單詞的首字母代替:u、g、o,a表示所有者都具有

Linux的檔案權限rwx怎麼設定?有幾種方法可以設定權限?
// 示例1:要設定一個檔案的權限為:-rwxr-xr-x,
chmod u=rwx,go=rx text.txt
// 以上所有者為可讀、可寫、可執行,群組和其他人是可讀、可執行
 
// 示例2:要設定一個檔案的權限為:-rwxr-xr--
chmod u=rwx,g=rx,o=r text.txt
// 以上所有者的為可讀、可寫、可執行,群組是可讀、可執行,其他人隻有可讀的權限
 
// 示例3:使用+-來設定單個權限,适用于不知道原檔案的權限的場景
chmod a+x text.txt // 設定這個檔案增加一個可執行的權限,a表示是所有人都具有
chmod a-x text.txt // 去除所有人可執行的權限
           

目錄的權限解析:

  • r:表示可以讀取到目錄的檔案結構
  • w:表示可以移動、重命名、删除,建立的權限
  • x:表示可以進入該目錄

Tips

在使用者的家目錄中,有一個不屬于他的權限的檔案,不可讀、不可寫、不可執行,但是可以删除;舉個例子:在家裡有一個掉落一個不是自己的東西,可以還給人家或者丢棄

檔案種類

  • -:表示規則檔案
  • d:表示目錄檔案
  • l:連結檔案/符号連結檔案
  • b:區塊裝置檔案
  • c:字元裝置檔案
  • s:資料接口檔案(sockets)
  • p:資料輸送檔(FIFO, pipe)

Linux檔案長度限制

單一檔案或目錄最大長度是255位元組,中文是128中文字

Linux目錄結構詳解:

  • /bin:可執行檔案的目錄,其中指令可被所有使用者執行,例如:cat, chmod, chown, date, mv, mkdir, cp, bash等
  • /boot:這個目錄主要在放置開機會使用到的檔案,包括Linux核心檔案以及開機菜單與開機所需配置檔案等等。
  • /dev:存放裝置和周邊裝置的目錄
  • /etc:系統主要的配置檔案放置的目錄,隻有root使用者才有權限修改配置檔案
  • /lib:放置的是在開機時會用到的函數庫,以及在/bin或/sbin下面的指令會調用的函數庫
  • /media:放置的是媒體裝置,軟碟、硬碟、DVD等裝置都挂載在這
  • /mnt:臨時裝置挂載的目錄
  • /opt:安裝第三方軟體的目錄,非原本的distribution提供的
  • /run:存放系統開機後所産生的各項資訊
  • /srv:service的縮寫,是一些網絡服務啟動之後,這些服務所需要取用的資料目錄。 常見的服務例如WWW, FTP等等
  • /tmp:臨時目錄
  • /usr:unix軟體資源目錄
  • /var:放置經常變動資料的目錄
  • /home:使用者主目錄
  • /root:系統管理者的主檔案夾
  • /lost+found:這個目錄是使用标準的ext2/ext3/ext4檔案系統格式才會産生的一個目錄,目的在于當檔案系統發生錯誤時,将一些遺失的片段放置到這個目錄下
  • /proc:是一個虛拟檔案系統,存放的資料都在記憶體中,例如:系統核心、行程資訊、周邊裝置、網絡狀态等
  • /sys:與/proc類似,也是虛拟檔案系統,主要也是記錄核心與系統硬體資訊較相關的資訊
  • /usr/bin/:/bin的軟連接配接
  • /usr/lib/:/lib的軟連接配接
  • /usr/local:系統管理者在本機自行安裝自己下載下傳的軟體(非distribution預設提供者)
  • /usr/sbin/:/sbin的軟連接配接,非系統正常運作所需要的系統指令,最常見的就是某些網絡伺服器軟體的服務指令(daemon)
  • /usr/share/:放置隻讀架構的資料檔案
  • /usr/games/:放置遊戲相關的檔案
  • /usr/include/:放置C/C++頭檔案和include引入的包,以tarball方式 (*.tar.gz 的方式安裝軟體)安裝某些資料時
  • /usr/libexec/:某些不被一般使用者慣用的可執行檔案或腳本(script)
  • /usr/src/:放置軟體源碼,Linux核心源碼放置在/usr/src/linux/目錄
  • /var/cache/:程式運作過程中,産生的緩存檔案
  • /var/lib/:程式運作過程中,需要使用到的資料檔案放置的目錄,例如:MySQL的資料庫放置到/var/lib/mysql/,而rpm的資料庫則放到/var/lib/rpm
  • /var/lock/:并發鎖檔案,已經移動到/run/lock
  • /var/log/:程式運作過程中,産生的日志檔案,例如:/var/log/messages、 /var/log/wtmp,為登入者的資訊
  • /var/main:放置郵箱檔案,與/var/spool/mail/互為軟連接配接
  • /var/run/:某些程式或者是服務啟動後,會将他們的PID放置在這個目錄,是/run的軟連接配接
  • /var/spool/:放置的隊列等待執行的檔案資料,/var/spool/mqueue/,crontab放置在/var/spool/cron/

繼續閱讀