.xyz是什麼檔案_Linux檔案目錄許可權
技術標籤:.xyz是什麼檔案
檔案屬性
第一列代表這個檔案的型別與許可權(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,也即全部身份。
例如我們要設定一個檔案許可權為“-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這個檔案來說,他是能夠刪除的。