在linux系統中,幾乎所有的資源都是以檔案的形式存在的,比如常用的裝置等。而檔案的許可權對於乙個檔案的管理來說至關重要,現就來談談
linux
系統中的檔案的許可權。
linux為每乙個檔案增加
3個所屬物件:檔案的擁有者、檔案所屬的群組以及其他人。由於
linux
系統是乙個多使用者多工的系統,經常會有多使用者登入並在自己的
home
目錄下面建立自己的檔案與資料夾。
linux
為了更好地管理這些多使用者下的檔案,因此設定
3個所屬物件。檔案的擁有者一般為當前登入並建立該檔案的使用者。檔案的所屬群組是為了更方便地在這些多使用者中實現這些檔案的共享。而其他人則是為了更好地對非共享者針對該檔案的管理。
針對每乙個linux檔案,
3種檔案所屬物件各自對應有
3種許可權
rwx:
r(可讀)、
w(可寫)、
x(可執行
)。例如某資料夾下面輸入如下命令
ls -al
便可以列舉該資料夾下面所有檔案的一些屬性:
[root@www ~]#ls -al
total 156
drwxr-x--- 4 root root 4096 sep 8 14:06 .
drwxr-xr-x 23 root root 4096 sep 8 14:21 ..
-rw------- 1 root root 1474 sep 4 18:27 anaconda-ks.cfg
-rw------- 1 root root 199 sep 8 17:14 .bash_history
-rw-r--r-- 1 root root 24 jan 6 2007 .bash_logout
-rw-r--r-- 1 root root 191 jan 6 2007 .bash_profile
圖中的列出了6個檔案,每個檔案具有
7個屬性(按列):
[許可權] [
鏈結數目
] [
檔案擁有者
] [
檔案所屬組
] [
檔案大小
bytes] [
建立或修改時間
] [名稱]
而在檔案許可權那一欄(列)的格式是:-rwxrw-rw-。
該列中的第1個字元表示這個檔案的型別:
d/-/l/b/c
(分別表示:目錄/檔案
/鏈結檔案
/可供儲存的介面裝置
/串列埠裝置)
該列中的第2個字元到第
4個字元表示這個檔案的擁有者所具有的許可權:
rwx
該列中的第5個字元到第
7個字元表示這個檔案所屬的組所具有的許可權:
rw-,其中
-表示不具有「可執行許可權」
該列中的第8個字元到第
10個字元表示其他人對於這個檔案所具有的許可權:
rw-,其中
-表示不具有「可執行許可權」
chown -r 新的檔案擁有者 檔案或目錄
chown -r 新的檔案擁有者:新的檔案所屬組 檔案或目錄
選項-r表示對該目錄下面所有檔案或者目錄執行相同更改檔案許可權操作。
chgrp -r 新的檔案所屬組 檔名或者資料夾名
其中選項-r跟
2.1類似。
2.3.1 利用數字更改
linux下,r對應
4,w對應
2,x對應
1,從而
rwx對應
4+2+1=7
,rw-
對應4+2=6
等等。
chmod -r xyz 檔名或目錄名
其中xyz分別表示檔案擁有者、檔案所屬組和其他人對應的許可權的數值。例如某檔案新的許可權為
rwxrw-r--
,那麼xyz=764。
2.3.2 利用
r/w/x更改
chmod -r u=rwx,g=rw,o=rx 檔名或資料夾名(等號指定方式)
cmod -r u+r,g-w,o-x 檔名或資料夾名(加減修改方式)
chmod -r a=rw- 檔名或資料夾名
上面的u表示檔案擁有者,
g表示檔案所屬群組,
o表示其他人,
a表示所有。
對於檔案:
r:表示可讀
w:表示可寫,但不可以刪除
x:表示該檔案是
linux
下面可以執行的檔案,比如
*.sh
、*.bat等
對於目錄:
r:表示可以查詢讀取該目錄下面的檔名(目錄存放的是檔名),即ls
w:建立和移動檔案與目錄、刪除已經存在的檔案與目錄、更改名稱
x:該許可權表示對應的使用者是否能夠進入該目錄內
前面介紹的是檔案的許可權以及修改,而linux系統在我們建立檔案和資料夾時是分配了預設許可權的。對於檔案而言,一般我們都是僅僅需要其記錄資料而非執行,因此linux系統針對檔案分配的預設許可權為644(666-022=644)。其中666為系統針對檔案而取出其「x」屬性而得來的,022為umask(即為計算系統預設許可權需要減掉的許可權)。同樣,針對目錄而言,目錄是允許進入的(許可權「x」決定),系統為目錄分配的預設許可權是755(777-022),022仍然為umask。
umask並不是一成不變的,其是可以修改配置的:
[root@www ~]# umask 002當配置umask=002時,建立檔案時,檔案的預設許可權為666-002=664,即rw-rw-r--,建立目錄時,目錄的預設許可權為777-002=775,即rwxrwxrw-。
該許可權只能用於二進位制的程式檔案,並且需要該許可權配置到二進位制程式檔案的擁有者的「x」位置處,比如-rwsr-----。當程式的使用者(相對於該檔案為others而非擁有者)具備「x」許可權時,該程式的使用者就相當於程式的擁有者並執行(s許可權位於「x」位置)該二進位制程式。
相對於suid而言,該許可權需要配置到二進位制程式檔案或目錄的所屬組的「x」位置處。當程式的使用者(相對於檔案為others而非擁有者)具備「x」許可權時,該程式的使用者便可以獲得群組的許可權並執行(s許可權位於「x」位置)
該二進位制程式。而對於目錄而言,若使用者相對該目錄的擁有者而言具有rx許可權,同時具有w許可權時,該使用者在該目錄下建立的檔案的所屬組即為此目錄的所屬組。
這個許可權僅僅針對目錄,該許可權配置到others其他人的「x」位置處。如果使用者相對於該目錄是該目錄的所屬群組中使用者的或者其他人,並且具有w和x許可權(rwxrwxrwx),則表示可以新建檔案或者目錄,但如果該檔案已經被設定sbit許可權後,使用者建立的檔案或者目錄只能被自己或者root刪除。
Linux學習 檔案
chmod 更改檔案9個屬性 linux檔案屬性有兩種設定方法,一種是數字,一種是符號。linux檔案的基本許可權就有九個,分別是owner group others三種身份各有自己的read write execute許可權。先複習一下剛剛上面提到的資料 檔案的許可權字元為 rwxrwxrwx 這...
Linux學習 檔案和目錄命令
cd etc 直接切換到 etc目錄 cd 切換到上次目錄,表示父目錄 cd 切換到當前目錄 cd 回到自己的家目錄 cd 回到自己的家目錄,回了家才可以浪 cd 回到上次工作目錄,cd 減號pwd lp p 顯示物理工作目錄。刪除鏈結 rm test 鏈結只是乙個普通檔案 ln 建立乙個鏈結mkd...
Linux學習(檔案七)
庫函式 讀 size t fread void ptr,size t size,size t n,file stream 功能 從stream指向的檔案中讀取n個字段,每字段為size位元組,並將讀取的資料放入ptr所指的字元陣列中,返回實際已讀取的字段數。庫函式 寫 size t fwrite c...