詳細解釋圖:
第一列 | Inode詳解 |
第二列 | 文件類型及權限 |
第三列 | 硬鏈接數 |
第四五列 | 屬主及所歸屬得組 |
第六列 | 文件或目錄的大小 |
第七八九列 | 最近修改時間 |
第十列 | 文件或目錄名字 |
inode詳解
block是用來存儲實際數據
inode用來存儲文件屬性
inode不包含文件名
文件在上一級目錄的block裏
block小結
磁盤讀取數據是按Block爲單位讀取的。
一個文件可能佔用多個Block。每讀取一個Block就會消耗一次磁盤I/O。
如果要提升磁盤I/O性能,那麼就要儘可能一次性讀取數據儘量的多。
一個Block只能存放一個文件內容,無論內容有多小。如果Block4K,那存放1k的文件,剩餘3k就浪費了。
Block並非越大越好。Block太大對於小文件存放就會浪費磁盤空間,例如:1000k的文件,Block爲4K,佔用250個Block,Block爲1k,佔1000個Block。訪問效率誰更高?消耗IO分別爲250次和1000次。
大文件(大於16k)一般設置Block大一點,小文件(小於1k)一般設置Block小一點。
Block太大例如4k,文件都是0.1k的,大量浪費磁盤空間。
Block太大例如1k,文件都是1000k,消耗磁盤IO。
Block的設置也是格式化分區時候,mkfs.ext4-b 2048 -l 256 /dev/sdb。
文件較大時,Block設置大一些會提升磁盤訪問效率。
ext3/ext4文件一般設置爲4k。
當前的生成環境一般設置爲4k。特殊的業務,如視頻可以加大Block大小。
inode小結
磁盤分區格式化爲ext4文件系統後會生成一定的數量的inode和block
inode是索引節點,作用是存放文件的屬性信息以及作爲文件的索引(指向文件的實體。)
ext3/ext4文件系統的block存放的是文件的實際內容。
inode是一塊磁盤存儲空間,c6非啓動分區inode默認大小256字節,c5是128字節。
inode是一串數字,不同的文件對應的inode(一串數字)在文件系統裏是唯一的。
inode相同的文件,互爲硬鏈接文件。
一個文件被創建後至少要佔用一個inode和一個block。
如果一個文件很大,可能佔多個block(4k)
如果文件很小,也要至少佔一個block,並且剩餘空間不可以使用了
inode大小和總量查看
查看inode的總量和使用量命令df –i
如何生成及指定inode大小mkfs.ext4-b 2048 -l 256 /dev/sdb1
文件的類型
格式 | 說明 |
- | 普通文件,(純文本,二進制文件,數據文件) |
d(directory) | 目錄 |
l (link) | 符號鏈接或者軟鏈接文件(快捷方式,它指向文件的實體)。 |
c(character) | 串口設備,貓 |
b(block) | 硬盤,光驅 |
s(sock) | sock進程之間通信會用到 |
p | 管道文件 |
文件的權限
Linux中的文件或目錄的權限和用戶及用戶組關聯很大,Linux中每個文件或目錄都有一組共9個基礎權限位,每三個字符被分爲一組,他們分別是屬主權限位(佔三個字符)、屬組權限位(佔三個字符)、其他用戶權限位(佔三個字符)。比如rwxr-xr-x linux中正是這9個權限位來控制文件屬主、屬組、其他用戶的權限。
權限圖:
權限字母 | 數字表示 |
r 代表讀權限 | 4 |
w 代表寫權限 | 2 |
x 代表執行權限 | 1 |
- 代表沒有權限 | 0 |
文件權限
可讀:
具有讀取\閱讀文件內容的權限。
可寫:
表示具有新增、修改文件內容的權限(注意:刪除和移動文件和文件本身屬性無關)
可執行:
表示具有執行文件的權限。(普通用戶同事還需要r的權限,root用戶不用r,但要本身能執行才行。)
(刪除文件,修改文件名等) 的權限是受父目錄的權限控制,必須查看上一級目錄的權限,因爲文件存在上級目錄的block裏面,上級目錄的inode就包含了權限
本身要能夠執行
普通用戶同時還需要具備r的權限才能
root都可執行
目錄權限
可讀:
表示具有瀏覽目錄下面文件及子目錄的權限,即ls dir (不能進到目錄裏,即無法 cd dir )
如果沒有x權限,ls列表時可以看到所有文件名。但是會提示無權方式目錄下的文件,如果ls -l列表,所有的屬性會帶有問號,也會提示無權訪問目錄下文件,但是可以看到所有文件名。
可寫:
表示具有增加、刪除或者修改目錄內文件名的權限 (需要x權限配合)
可執行:
表示具有進入目錄的權限:例如 cddir 但是沒有r無法獲取列表,沒有w無法新建和刪除。
文件與目錄權限對比
讀取權限:
對文件而言:表示具有讀取\閱讀文件內容的權限。
對目錄而言:具有瀏覽目錄下面文件及子目錄的權限,即ls dir (不能進到目錄裏,即無法 cd dir )
如果沒有x權限,ls列表時可以看到所有文件名。但是會提示無權方式目錄下的文件,如果ls -l列表,所有的屬性會帶有問號,也會提示無權訪問目錄下文件,但是可以看到所有文件名。
寫入權限:
對於文件而言:表示具有新增、修改文件內容的權限(注意:刪除和移動文件和文件本身屬性無關)
對於目錄而言:表示具有增加、刪除或者修改目錄內文件名的權限 (需要x權限配合)
執行權限:
對於文件而言:表示具有執行文件的權限。(普通用戶同事還需要r的權限,root用戶不用r,但要本身能執行才行。)
對於目錄而言:表示具有進入目錄的權限:例如cd dir,但是沒有r無法獲取列表,沒有w無法新建和刪除。
umask默認權限
文件權限一般算法:
1)假設umask值爲:022(所有位爲偶數)
6 66 ==>文件的起始權限值
0 22 - ==>umask的值
---------
6 44
2)假設umask值爲:045(其他用戶組位爲奇數)
6 66 ==>文件的起始權限值
0 4 5- ==>umask的值
---------
6 2 1 ==>計算出來的權限。由於umask的最後一位數字是5,所以,在其他用戶組位再加1。
0 0 1 +
---------
622 ==>真實文件權限
默認目錄權限計算方法
7 77 ==>目錄的起始權限值
0 2 2 - ==>umask的值
---------
7 5 5
案例一
umask所有位全爲偶數時
[root@studentxuliangwei]# umask 044 [root@studentxuliangwei]# umask 0044 [root@studentxuliangwei]# mkdir d044 [root@studentxuliangwei]# touch f044 [root@studentxuliangwei]# ls -l drwx-wx-wx2 root root 4096 7月 21 23:40 d044 -rw--w--w-1 root root 0 7月 21 23:40 f044
案例二
umask值的部分或全部位爲奇數時 [root@studentxuliangwei]# umask 023 [root@studentxuliangwei]# umask 0023 [root@studentxuliangwei]# mkdir d023 [root@studentxuliangwei]# touch f023 [root@studentxuliangwei]# ls -l drwxr-xr--2 root root 4096 7月 21 23:44 d023 -rw-r--r--1 root root 0 7月 21 23:44 f023
案例三
umask值的所有位爲奇數時
[root@studentxuliangwei]# umask 035 [root@studentxuliangwei]# umask 0035 [root@studentxuliangwei]# mkdir d035 [root@studentxuliangwei]# touch f035 [root@studentxuliangwei]# ls -l drwxr---w-2 root root 4096 7月 21 23:48 d035 -rw-r---w-1 root root 0 7月 21 23:48 f035
suid特殊權限
用戶或屬主對應的前三位權限的x位上如果有s就表示suid權限。
當x位上沒有小寫x執行權限的時候,suid的權限顯示就是大S
suid作用是讓普通用戶可以root(或其他)的用戶角色運行,只有root(或其他)賬號才能運行的程序或命令,或程序命令對應本來沒有權限操作的文件等。
問題:希望xuliangwei用戶能夠刪除本來無權刪除的文件
a. sudo給xuliangwei授權rm b.給rm命令設置suid c.設置上級目錄權限。
suid修改的是執行的命令passwd,而不是處理的目標文件/etc/shadow
僅對二進制命令程序有效,不能用在shell等類似腳本文件上(具體權限還需要看二進制命令本身)
二進制命令程序需要有可執行權限x配合。
suid權限僅在程序命令執行過程中有效。
執行suid命令的任意系統用戶都可以獲得該命令程序在執行期間對應的擁有者
suid雙刃劍,是一個比較危險的功能,對系統安全有一定的威脅。
如何查找系統中設置了suid的命令
[root@student~]# find /usr/bin/ -type f -perm 4755 | xargs ls -l -rwsr-xr-x.1 root root 66352 10月 15 2014 /usr/bin/chage -rwsr-xr-x.1 root root 51784 11月 23 2013 /usr/bin/crontab -rwsr-xr-x.1 root root 71480 10月 15 2014 /usr/bin/gpasswd -rwsr-xr-x.1 root root 36144 10月 15 2014 /usr/bin/newgrp -rwsr-xr-x.1 root root 30768 2月 22 2012 /usr/bin/passwd -rwsr-xr-x.1 root root 22544 10月 15 2014 /usr/bin/pkexec
sgid特殊權限
sgid知識總結介紹:
與suid不同的是,sgid既可以針對文件也可以針對目錄設置
sgid是針對用戶組權限位修改的。
對於文件來說,sgid的功能如下:
sgid僅對二進制命令程序有效。
二進制命令或程序需要有可執行權限x
執行程序的任意用戶可以獲得該命令程序執行期間所屬組的權限。
特殊權限小結
suid 4000 權限字符s(S),用戶位置上的x位上設置。
授權方法:
chmod 4755xuliangwei.txt chmod u+s test
sgid 2000 權限字符s(S),用戶組位的x位置上設置。
授權方法:
chmod 2744xuliangwei.txt chmod g+s xuliangwei.txt
粘滯位 1000 權限字符t(T),其他用戶位的x位上設置。
設置方法:
chmod 1755 /tmp chmod o+t /tmp
如果對應位有x(執行權限)則,字符權限表現爲小寫,否則表現爲大寫