Linux系統中文件或目錄的屬性主要包括:文件或目錄的索引節點(inode)、類型、權限屬性、連接數、所歸屬的用戶和用戶組、最近修改時間等內容:
執行 ls -lhi命令的結果:node
total 4.0K 24563 drwxr-xr-x 2 root root 4.0K Jun 28 21:30 123 6464 -rw-r--r-- 1 root root 0 Jun 28 21:37 file inode 文件類型及權限 硬連接數 用戶 組 大小 最近修改時間 文件名
文件的修改、訪問、建立的時間查看:linux
[root@localhost linux-study]# stat file File: `file' Size: 5 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 6464 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-06-28 21:37:27.652640852 +0800 Modify: 2015-06-28 21:43:01.275627486 +0800 Change: 2015-06-28 21:43:01.275627486 +0800
inode概述:inode中文意思是索引節點。每一個存儲設備或存儲設備的分區(存儲設備能夠是硬盤、軟盤、U盤...)被格式化爲文件系統後,應該後又兩個部分:一部分是inode,另外一部分是Block。Block是用來存儲數據用的。而inode就是用來不存儲這些數據信息的,這些信息包括文件大小、屬主、歸屬的用戶組、讀寫權限等。 inode爲每一個文件進行信息索引,因此就有了inode的數值。操做系統根據指令,能經過inode值最快的找到相對應的文件。 打個比方,好比一本書,存儲設備或分區就至關於這本書,Block至關於書中的每一頁,inode就至關於這本書的前面的目錄,一本書有不少內容,若是想查看某個部分的內容,咱們就能夠先查看目錄,經過目錄能更快的找到咱們想要看到的內容。 雖然不恰當,可是很形象。 ls -i 咱們就能夠查看到inode節點號了。 inode值相同的文件是硬連接文件
一、文件權限概述:算法
Linux中的文件或目錄的權限和用戶與用戶組關聯很大,要理解這部份內容,須要先了解一下linux系統中用戶管理方面的知識。 每一個文件或目錄都有一組共9個權限位。沒三位被分爲一組,他們分別是屬主權限位(佔三個字符)、用戶組權限位(佔三個字符)、其它用戶權限位(佔三個字符)。好比rwx-rxr-x.在Linux中正是9個權限位(更多權限位後面會提到)來控制文件屬主、用戶組以及其餘用戶的權限
Linux文件或目錄的權限是由9個權限位來控制,每三位位一組,他們分別是文件屬主(Ower)的讀、寫、執行,用戶組的(Group)的讀、寫、執行以及其餘用戶(Other)的讀、寫、執行; 文件屬主:讀R、寫W、執行X 用戶 組:讀R、寫W、執行X 其餘用戶:讀R、寫W、執行X 若是權限位不可讀、不可寫、不可執行,則用-來表示。
可讀R:表示具備閱讀文件內容的權限。 可寫W:表示具備新增、修改文件內容的權限:(特別提示:刪除或修改的權限受父目錄的權限控制); 可執行X:表示具備執行文件的權限。
進入目錄的的權限 X 瀏覽目錄的權限 R 修改目錄內文件的權限 W
r(Read,讀權限) 對文件而言,表示具備閱讀文件內容的權限; 讀目錄來講,表示具備瀏覽目錄的權限(注意:與進入目錄的權限不一樣) w(Write,寫權限) 對於文件來講,表示具備新增、修改文件內容的權限(注意,刪除和移動與文件自己屬性無關) 對目錄來講,表示具備刪除,移動目錄內文件的權限。 x(Execute,執行權限) 對文件而言,表示具備執行的權限。 對目錄而言,表示具備進入目錄的權限。 -(無任何權限) 若對應位置權限位爲字符「-」,表示對應用戶沒有讀、寫、執行的任何權限。
特別注意:安全
當刪除或移動一個文件或目錄,僅與該文件目錄所在的上一層目錄權限有關,與該文件自己屬性無任何關係。對於文件來講,寫文件是修改文件,而不是刪除文件,所以文件是與該文件的自己屬性有關係的。
二、改變權限屬性命令chmodbash
chmod是用來改變文件或目錄的權限的命令,但只有文件的屬主和超級用戶root纔有這種權限。經過chmod來改變文件或目錄的權限有兩種方法:一種是經過權限字木和操做符表達式的方法來設置權限;另一種是使用數字的方式來設置權限。 例如: chmod 755 file chmow u+x,go-x file
chmod 數字權限方法:運維
chmod [數字組合] 文件名 chmod的數字語法簡單直觀: r---4 w---2 x---1 "-"---0
屬主的權限位三個權限位的數字加起來的總和。(歸屬組個其餘權限算法同樣)編輯器
chmod [用戶類型] [+ - =] [權限字符] 文件名 用戶類型:u表示主,g表示屬主,o表示其餘用戶,a表示全部 權限定義字母:r表明讀權限 ,w表明寫權限,x表明執行權限 權限增減字符: +添加某個權限,-取消某個權限,=賦予制定的權限
u=r+x 爲文件屬主添加讀寫權限; ug=rwx,o=r 爲屬主和組添加讀、寫、執行權限,爲其餘用戶設置讀權限。 a+x爲全部人添加執行權限 g=u 讓用戶的屬組和屬主的權限相同; 對於目錄權限設置,要用到-R參數。
默認權限分配的命令umask:工具
umask是經過八進制的數值來定義用戶建立文件或目錄的默認權限。umask表示的是禁止的權限。具體的細節,文件和目錄略有不一樣。ui
對於文件來講,umask的設置是在假定文件擁有八進制666權限上進行,文件的權限就是666 減去umask的掩碼數值 對於目錄來講,umask的設置是在嘉定文件擁有八進制777權限上進行,目錄八進制權限777減去umask的掩碼數值 默認 文件與 目錄的權限算法 666 ==>文件的起始權限值 777 ==>目錄的起始權限值 022- ==>umask的值 022- ==>umask的值 \---- --- 644 755
例如:操作系統
一、umask 044 && touch file1 && mkdir test && ll -al 驗證 二、linux系統用戶的家目錄的權限是經過在配置文件中指定的,好比Centos中用的是/etc/login.defs文件 其中有個權限umask 爲077。當添加用戶的時,系統在/home中建立用戶的家目錄,而且設置它的權限爲777-077=700,也就是說權限位rwx------. 三、umask 通常都是放在用戶相關的SHELL的配置文件中,好比用戶家目錄下的.bashrc或.profile,也能夠放在全局性的用戶配置文件中,好比/etc/login.defs,還能夠放在SHELL全局的配置文件中,好比/etc/profile或/etc/bashrc等。 四、umask放在相關的配置文件中,目的是當管理員建立用戶時,系統會自動爲用戶建立文件或目錄時配置默認的權限代碼。 特別提示:在通常的生產場景,umask的使用很少見。
一、setuid和setgid位
特別提示:在通常的生產環境,運維人員使用setuid,setgid的狀況很少見,也不推薦你們使用(setuid,sitgid自己功能不錯,可是會帶來安全隱患) 介紹: setuid和setgid位是讓普通用戶能夠以root用戶的角色運行只有root帳號才能運行的程序和命令。(注意區分su 及sudo的區別) 在Linux中,有時執行某一個命令的時,須要對另外一個文件進行操做,而這個文件有不是普通用戶有權限進行操做。例如,修改用戶密碼的命令passwd,實際最終修改的是/etc/passwd文件,該文件的全部者和組都是root,同組用戶和其餘用戶具備執行權限只有個root權限的用戶才能更改,但普通用戶也可使用該命令修改本身的密碼 [root@localhost ~]# ls -l /etc/passwd -rw-r--r--. 1 root root 904 Jun 16 23:10 /etc/passwd 若是普通用戶經過修改/etc/passwd修改本身的口令確定是不可完成的任務。做爲普通用戶能夠經過passwd來修改本身的口令,既然沒有權限,爲何還能修改密碼呢? 讓咱們來看看passwd命令的權限: [root@localhost ~]# ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd 由於/usr/bin/passwd文件已經設置了setuid權限位(也就是rwsr-xr-x種的s),因此普通用戶在執行/usr/bin/passwd命令時可使用root用戶的權限,間接地修改/etc/passwd。以達到修改本身口令的權限 咱們知道Linux的用戶管理是極爲嚴格的,不一樣的用戶擁有不一樣的權限,爲了完成只有root用戶才能完成的工做,咱們必須爲普通用戶提高權限,最多見的方法就是su或sudo.雖然setuid和setgid也是讓普通用戶超越自身擁有的普通權限達到使用root權限的方法,但不推薦你們使用,由於它能爲系統帶來安全隱患! 特別注意:setuid和setgid會面臨風險,因此儘量的少用(尤爲是使用不當)
實例:
咱們想讓一個普通用戶longge擁有root用戶才擁有的rm刪除權限,咱們除了用su或sudo臨時切換到root身份或以root身份操做以外。還能夠怎麼使用呢 chmod 4755 /bin/rm 咱們就能夠輕鬆刪除。
二、setuid和setgid設置說明:
特殊權限位數字權限(八進制)方法 setuid位的設置是用4000,setgid佔用的是八進制的2000; chmod 4775 命令 chmod 2755 文件名 特別說明:咱們見過的是小寫的s;代表文件歸屬的用戶組位有執行權限X.由於咱們用了2755,意思是說文件屬組擁有可讀可寫可執行權限,所歸屬的用戶組擁有可讀可執行權限,並設置了setuid,因此這是原本文件所歸屬的用戶組擁有了r-x,如今加了setgid位,就把其中的x換成了s。若是文件所歸屬的用戶組沒有執行權限,這個權限應該是S.同理setuid位中的大寫的S和小寫的s,也是這個原理。 若是原本在該位上有x,則這些特殊標誌顯示爲小寫字母(s,s,t)、不然爲大寫字母(S,S,T)
特殊權限字符式語法:
仍是用chmod的字符式語法,經過u+s 或u-s來增減setuid位,同理,咱們能夠經過g+s或g-s來設置setgid位 file命令也能夠用來查看setuid和setgid位,固然也能夠查看文件的類型。
粘貼位及設置方法:
粘貼位的理解,咱們仍是先看一個例子 [root@localhost ~]# ls -ld /tmp/ drwxrwxrwt. 4 root root 4096 Jun 28 21:26 /tmp/
咱們看到/tmp權限最後一個字母是t.這就設置了粘貼位。 粘貼位的設置,用八進制的1000來表示。 一個目錄即便設置了rwxrwxrwx的權限,若是是設置了粘貼位,除非目錄的屬主和root用戶有權限刪除它,除此以外其餘用戶都不能刪除這個目錄。用途通常是把一個文件的權限都打開,而後來共享文件,像/tmp目錄同樣。方便帶來安全隱患,生產環境通常不使用。
文件或目錄的歸屬關係:
文件或目錄的歸屬關係主要定義文件或目錄歸屬那個用戶全部及歸屬於那個用戶組全部
改變文件所屬關係命令chown
當咱們要改變一個文件的屬組,咱們所使用的用戶必須是該文件的屬主並且同時是木匾屬組成員,或超級用戶,只有超級用戶纔有改變文件的屬主。
三、chown語法:
chown [選項] [全部者][:[組]] 文件 說明: chown所接的新的屬組和信的屬組之間應該以.或:鏈接,屬主和屬組任意一個能夠爲空。若是屬主位空,應該是:屬組;若是屬組位空,那就不須要. 或:。 改變文件的屬組命令chgrp
四、chgrp 語法:
chgrp [參數選項] 組 文件 它的用法和chown相似,只不過他僅僅是用來改變文件或目錄的屬組的,-R參數用於目錄及目錄一下搜友文件改變屬組的。和chown也是同樣的,能夠吧chgrp看作是chown的一個子集。通常會用chown就能夠了。 [root@localhost /]# ls /home/longge/file -l -rw-rw-r-- 1 500 500 0 Jun 29 00:06 /home/longge/file 上面的理智,爲何屬主和屬組都是一個數值。出現這種狀況的緣由是系統不存在與之對應的用戶,因此只能以數字形式顯示了。有時咱們刪除了用戶,但沒有刪除其餘家目錄,這種狀況下,它的家目錄的屬主和屬組也會變成數字; 提示:刪除用戶的時候能夠執行userdel-r longge 連同家目錄一塊兒刪除。
文件被修改或被訪問的時間:
咱們經過查看文件的屬性時,會發現他的時間標記。這個時間並不表明文件被建立的時候,他表明文件被訪問或被修改的時間,文件被修改的時間比較好理解,好比咱們能夠用編輯器來修改文本文件,而後保存一下,這樣文件的時間就變了。 固然也有其餘的工具不修改文件的內容,只修改文件的時間,這是能夠被稱爲訪問時間。好比touch工具能達到這個目的。
文件屬性和文件系統屬性的關係:
文件系統的特性決定文件屬性的定義和修該,好比咱們經過chattr來鎖定一個文件爲不可修改或不可刪除是,要用到chattr的+i參數;這在ext2和ext3的文件系統是有效的,可是reiserfs文件系統是沒有任何效果的 chattr +i file 文件就沒法被刪除了。