chmod、chown、umask的使用

一、 文件和目錄權限chmod

chmod命令用來變動文件或目錄的權限。在UNIX系統家族裏,文件或目錄權限的控制分別以讀取、寫入、執行3種通常權限來區分,另有3種特殊權限可供運用。用戶可使用chmod指令去變動文件與目錄的權限,設置方式採用文字或數字代號皆可。符號鏈接的權限沒法變動,若是用戶對符號鏈接修改權限,其改變會做用在被鏈接的原始文件。linux

權限範圍的表示法以下:shell

u User,即文件或目錄的擁有者;
g Group,即文件或目錄的所屬羣組;
o Other,除了文件或目錄擁有者或所屬羣組以外,其餘用戶皆屬於這個範圍;
a All,即所有的用戶,包含擁有者,所屬羣組以及其餘用戶;
r 讀取權限,數字代號爲「4」;
w 寫入權限,數字代號爲「2」;
x 執行或切換權限,數字代號爲「1」;
- 不具任何權限,數字代號爲「0」;
s 特殊功能說明:變動文件或目錄的權限。數據庫

語法

chmod(選項)(參數)ui

選項

-c或——changes:效果相似「-v」參數,但僅回報更改的部分;spa

-f或--quiet或——silent:不顯示錯誤信息;.net

-R或——recursive:遞歸處理,將指令目錄下的全部文件及子目錄一併處理;命令行

-v或——verbose:顯示指令執行過程;日誌

--reference=<參考文件或目錄>:把指定文件或目錄的所屬羣組所有設成和參考文件或目錄的所屬羣組相同;code

<權限範圍>+<權限設置>:開啓權限範圍的文件或目錄的該選項權限設置;遞歸

<權限範圍>-<權限設置>:關閉權限範圍的文件或目錄的該選項權限設置;

<權限範圍>=<權限設置>:指定權限範圍的文件或目錄的該選項權限設置;

參數

權限模式:指定文件的權限模式;
文件:要改變權限的文件。

知識擴展和實例

Linux用 戶分爲:擁有者、組羣(Group)、其餘(other),Linux系統中,預設的情況下,系統中全部的賬號與通常身份使用者,以及root的相關信 息, 都是記錄在/etc/passwd文件中。每一個人的密碼則是記錄在/etc/shadow文件下。 此外,全部的組羣名稱記錄在/etc/group內!

linux文件的用戶權限的分析圖

linux文件的用戶權限的分析圖

例:rwx rw- r--

r=讀取屬性  //值=4
w=寫入屬性  //值=2
x=執行屬性  //值=1

chmod u+x,g+w f01  //爲文件f01設置本身能夠執行,組員能夠寫入的權限

chmod u=rwx,g=rw,o=r f01 chmod 764 f01 chmod a+x f01  //對文件f01的u,g,o都設置可執行屬性

文件的屬主和屬組屬性設置

chown user:market f01  //把文件f01給uesr,添加到market組

ll -d f1 查看目錄f1的屬性

用ls -l 查看所屬組,所屬者


二、 更改全部者和所屬組chown

chown命令改變某個文件或目錄的全部者和所屬的組,該命令能夠向某個用戶受權,使該用戶變成指定文件的全部者或者改變文件所屬的組。用戶能夠是用戶或者是用戶D,用戶組能夠是組名或組id。文件名可使由空格分開的文件列表,在文件名中能夠包含通配符。

只有文件主和超級用戶才能夠便用該命令。

語法

chown(選項)(參數)

選項

-c或——changes:效果相似「-v」參數,但僅回報更改的部分;

-f或--quite或——silent:不顯示錯誤信息;

-h或--no-dereference:只對符號鏈接的文件做修改,而不更改其餘任何相關文件;

-R或——recursive:遞歸處理,將指定目錄下的全部文件及子目錄一併處理;

-v或——version:顯示指令執行過程;

--dereference:效果和「-h」參數相同;

--help:在線幫助;

--reference=<參考文件或目錄>:把指定文件或目錄的擁有者與所屬羣組所有設成和參考文件或目錄的擁有者與所屬羣組相同;

--version:顯示版本信息。

參數

用戶:組:指定全部者和所屬工做組。當省略「:組」,僅改變文件全部者;
文件:指定要改變全部者和工做組的文件列表。支持多個文件和目標,支持shell通配符。

實例

將目錄/usr/meng及其下面的全部文件、子目錄的文件主改爲 wang:

chown -R wang /usr/meng

更改全部組,所屬者。


三、umask

概念:默認狀況下,目錄的權限是755,普通文件是權限是644.

umask命令用來設置限制新建文件權限的掩碼。當新文件被建立時,其最初的權限由文件建立掩碼決定。用戶每次註冊進入系統時,umask命令都被執行, 並自動設置掩碼mode來限制新文件的權限。用戶能夠經過再次執行umask命令來改變默認值,新的權限將會把舊的覆蓋掉。

語法

umask(選項)(參數)

選項

-p:輸出的權限掩碼可直接做爲指令來執行;

-S:以符號方式輸出權限掩碼。

參數

權限掩碼:指定權限掩碼。

實例

利用umask命令能夠指定哪些權限將在新文件的默認權限中被刪除。例如,可使用下面的命令建立掩碼,使得組用戶的寫權限,其餘用戶的讀、寫和執行權限都被取消:

umask u=, g=w, o=rwx

執行該命令之後,對於下面建立的新文件,其文件主的權限未作任何改變,而組用戶沒有寫權限,其餘用戶的全部權限都被取消。

應注意:操做符「=」在umask命令和chmod命令中的做用偏偏相反。在chmod命令中,利用它來設置指定的權限,而其他權限則被刪除;可是在umask命令中,它將在原有權限的基礎上刪除指定的權限。

不能直接利用umask命令建立一個可執行的文件,用戶只能在其後利用chmod命令使它具備執行權限。假設執行了命令umask u=, g=w, o=rwx,雖然在命令行中,沒有刪去文件主和組用戶的執行權限,但默認的文件權限仍是640(即 rw-r-----),而不是750(rwxr-x---)。可是,若是建立的是目錄或者經過編譯程序建立的一個可執行文件,將不受此限制。在這種狀況 下,會設置文件的執行權限。

也可使用八進制數值來設置mode。因爲在umask中所指定的權限是要從文件中刪除的,因此,若是該文件原來的初始化權限是777,那麼執行命令umask 022之後,該文件的權限將變爲755:若是該文件原來的初始化權限是666,那麼該文件的權限將變爲644。

可使用下面的命令檢查新建立文件的默認權限:

umask -s

選項-s表示以字符形式顯示當前的掩碼。若是直接輸入umask命令不帶任何參數查看系統的默認值,那麼將以八進制形式顯示當前的掩碼。系統默認的掩碼是0022。

設置和使用umask的數值。

把文件1.txt屬主修改成user1,屬組修改成users.

chown user1:users 1.txt


2.17 隱藏權限lsattr/chattr

(1).lsattr命令用於查看文件的第二擴展文件系統屬性。

語法

lsattr(選項)(參數)

選項

-E:可顯示設備屬性的當前值,但這個當前值是從用戶設備數據庫中得到的,而不是從設備直接得到的。

-D:顯示屬性的名稱,屬性的默認值,描述和用戶是否能夠修改屬性值的標誌。

-R:遞歸的操做方式

-V:顯示指令的版本信息;

-a:列出目錄中的全部文件包括隱藏文件。

e是表示該文件爲可執行文件。

lsattr常用的幾個選項-D,-E,-R這三個選項不能夠一塊兒使用,它們是互斥的,常用的還有-l,-H,使用lsattr時,必須指出具體的設備名,用-l選項指出要顯示設備的邏輯名稱,不然要用-c,-s,-t等選項惟一的肯定某個已存在的設備。

參數

文件:指定顯示文件系統屬性的文件名。

實例

lsattr -E -l rmt0 -H

lsattr -EO -l rmt0

使用-R遞歸顯示內容

查看目錄自己使用-d命令,也不能刪除,更改。要刪除文件,要去除文件i和d權限。

(2).chattr命令用來改變文件屬性。這項指令可改變存放在ext2文件系統上的文件或目錄屬性,這些屬性共有如下8種模式:

a:讓文件或目錄僅供附加用途;

b:不更新文件或目錄的最後存取時間;

c:將文件或目錄壓縮後存放;

d:將文件或目錄排除在傾倒操做以外;

i:不得任意更動文件或目錄;隱藏權限

s:保密性刪除文件或目錄;

S:即時更新文件或目錄;

u:預防意外刪除。

語法

chattr(選項)

選項

-R:遞歸處理,將指令目錄下的全部文件及子目錄一併處理;

-v<版本編號>:設置文件或目錄版本;

-V:顯示指令執行過程;

+<屬性>:開啓文件或目錄的該項屬性;

-<屬性>:關閉文件或目錄的該項屬性;

=<屬性>:指定文件或目錄的該項屬性。

實例

用chattr命令防止系統中某個關鍵文件被修改,把他隱藏起來:

chattr +i /etc/resolv.conf
lsattr /etc/resolv.conf

會顯示以下屬性

----i-------- /etc/resolv.conf

讓某個文件只能往裏面追加數據,但不能刪除,適用於各類日誌文件:

chattr +a /var/log/messages

而後試一下rmmvrename等命令操做於該文件,都是獲得Operation not permitted的結果。

讓某個文件只能往裏面追加內容,不能刪除,一些日誌文件適用於這種操做:

chattr +a /data1/user_act.log

用head命令也能夠追加。

用cat 查看head追加的內容

把隱藏的權限去掉。

相關文章
相關標籤/搜索