1. 程式人生 > 其它 >.xyz是什麼檔案_Linux檔案目錄許可權

.xyz是什麼檔案_Linux檔案目錄許可權

技術標籤:.xyz是什麼檔案

檔案屬性

a666ffb44dea691cb51148179b511ee2.png

第一列代表這個檔案的型別與許可權(permission)

這一列共有10個字元代表這個檔案是“目錄、檔案或連結檔案等”。

  • ‘d’ 則是目錄。
  • ‘-’ 則是檔案。
  • ‘l’ 則表示為連線檔案(linkfile)。
  • ‘b’ 則表示裝置檔案中可供儲存的介面裝置。
  • ‘c’ 則表示裝置檔案裡面的串列埠裝置,例如鍵盤、滑鼠(一次性讀取裝置)。

接下來的字元中,以3個一組,切均為“rwx”的3個組合引數。

第一組為 “檔案所有者許可權”。

第二組為 “同用戶組的許可權”。

第三組為 “其它非本使用者組的許可權”。

  • ‘r’代表可讀(read)
  • ‘w’代表可寫(write)
  • ‘x’代表可以執行(execute)。

要注意的是,這3個許可權的位置不會改變,如果沒有許可權,就會出現減號‘-’而已。

第二列表示有多少檔案連線到此節點(i-node)

每個檔案都會將它的許可權與屬性記錄到檔案系統的i-node中,不過我們使用的目錄樹是使用檔名來記錄,因此每個檔名就會連線到一個i-node。這個屬性記錄的就是有多少不同的檔名連線到相同的一個i-node號碼。

第三列和第四列表示這個檔案(或目)的“所有者賬號”和“所屬使用者組”。

第五列表示這個檔案的容量大小,預設單位為B。

第六列為這個檔案的建立日期或者是最近的修改日期。

修改檔案屬性與許可權

常見的幾個用於修改使用者組、所有者、各種身份的許可權的命令:

  • chgrp: 改變檔案所屬使用者組。
  • chown: 改變檔案所有者。
  • chmod: 改變檔案的許可權。

改變所屬使用者組:chgrp

這個命令是change group的簡稱。不過,請記得,要被改變的組名必須要在/etc/group檔案記憶體在才行,否則就會顯示錯誤。

chgrp [-R] dirname/filename  
-R:進行遞迴(recursive)的持續更改,即連同子目錄下的所有檔案。

例子:

[[email protected] meng]# chgrp corly test.log 
[[email protected] meng]# ls -l 
-rw-r--r--. 1 root corly 0 7月  24 16:40 test.log

改變檔案所有者:chown

這個命令是change owner的簡稱。要注意的是,使用者必須是已經存在於系統中的賬號,也就是在/etc/passwd這個檔案中有記錄的使用者名稱稱才能改變。chown還可以修改檔案的使用者組。

chown [-R] 賬號名稱[:組名] 檔案或目錄 
 -R:同上面一樣

例子:

//將test.log所有者改為bin這個賬號 
chown bin test.log 
//將test.log的所有者和使用者組改回為root 
chown root:root test.log

事實上,chown也可以使用“chown user.group file”,亦即在擁有者與群組間加上小數點也行!不過很多朋友設定賬號時,喜歡在賬號當中加入小數點(例如corly.meng這樣的賬號格式),這就會造成系統的誤判了!所以我們比較建議使用冒號“:”來隔開擁有者與群組。

此外,chown也能單純的修改所屬使用者組。例如“chown .sshd install.log”就是修改使用者組,就是那個小數點的用途。

改變檔案許可權:chmod

檔案許可權的改變是用chmod這個命令,但是許可權的設定有兩種,分別可以使用數字或者是符號來進行許可權的更改。

數字更改檔案許可權

Linux檔案的基本許可權就有9個,分別是user、group、others三種身份各有自己的read、write、execute許可權。其中我們可以用數字來代表各個許可權,各許可權的數字對照如下:

r:4
w:2
x:1

每種身份(user、group、others)各自的三個許可權分數是要累加的,例如當前許可權“-rwxrwx---”,分數是:

user= rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others = --- = 0+0+0 = 0

所以等我們設定許可權更改時,該檔案的許可權數字就是770。更改許可權的命令chmod的語法如下:

chmod [-R] xyz 檔案或目錄  
xyz:剛剛提到的數字型別的許可權,為rwx屬性數值的相加。  
-R:遞迴更改。

舉例來說,如果要將test.log檔案的所有許可權都設定啟用,那麼就執行:

chmod 777 test.log

符號型別改變檔案許可權

還有一個更改檔案許可權的方法。從前面的介紹我們可以發現,基本上就9個許可權,分別是user、group、others三種身份。那麼我們就通過u,g,o來代表三種身份的許可權。此外a代表all,也即全部身份。

590ff50954d9e5e944bab22462047c6a.png

例如我們要設定一個檔案許可權為“-rwxr-xr-x”時。

chmod u=rwx,go=rx test.log 

注意:那個u=rwx,go=rx是連在一起的,中間沒有任何空格。

如果是“-rwxr-xr--”許可權呢?可以用“chmod u=rwx,g=rx,o=r test.log”來設定。

如果我不知道原先檔案的屬性,而我只想增加test.log這個檔案每個人均可寫入的許可權,可以使用如下命令:

chmod a+w test.log

如果要去掉所有人可執行許可權,則:

chmod a-x test.log

目錄許可權

檔案是存放實際資料的所在,目錄主要的內容是記錄檔名列表,檔名與目錄有強烈的關聯。所以如果針對目錄,那個r、w、x有什麼意義呢?

r (read contents in directory)

  • 表示具有讀取目錄結構列表的許可權,表示你可以查詢該目錄下的檔名資料。

w (modify contents of directory)

  • 新建已存在的檔案與目錄;
  • 刪除已存在的檔案與目錄(不論該檔案的許可權為何);
  • 將已存在的檔案或目錄進行重新命名;
  • 轉義該目錄內的檔案、目錄位置。

x (access directory)

  • 表示使用者能夠進入該目錄成為工作目錄的用途,所謂的工作目錄(work directory)就是你目前所在的目錄。

例 1:

有一個目錄的許可權如下:

drwxr--r-- 3 root root 1024 Jun 25 08:22 test

系統中有一個賬號名稱為corly,這個賬號並沒有支援root使用者組,那麼corly對這個目錄有何許可權?

corly對此目錄有r許可權,因此可以查詢目錄下的檔名列表。因為corly不具有x的許可權,所以corly並不能切換到此目錄內。

上面的例子中因為corly具有r許可權,一看之下好像就具有可以進入此目錄的許可權,其實是錯誤的。能不能進一個目錄,只與該目錄的x許可權有關。

此外,工作目錄對於命令的執行非常重要,如果你在某目錄下沒有x的許可權,那你就沒有辦法切換到該目錄下,也就無法執行該目錄下的任何命令,即使你具有該目錄的r許可權。

例 2:

假設賬號corly,他的主資料夾在/home/corly/,corly對此目錄具有rwx許可權。若在此目錄下有一個名為test.log的檔案,該檔案的許可權如下:

-rwx------ 1 root root 1024 Sep 20 04:09 test.log

請問corly對此檔案的許可權是什麼?可否刪除此檔案?

  • 由於corly對此檔案來說是“others”的身份,因此這個檔案他無法讀、編輯和執行,也就是說他無法變動這個檔案的內容。
  • 但是由於這個檔案在他的主資料夾下,他在此目錄具有rwx的完整許可權,因此對於test.log這個檔案來說,他是能夠刪除的。

2466889ea28e94032dd0ec14c145d627.gif