1 ls
藍(lán)色:文件夾
黑色:普通文件
綠色:可執(zhí)行文件,命令、腳本
青色:軟鏈接
紅底黑字、黃底黑字:具有特殊權(quán)限的文件
options
-R遞歸顯示,將子目錄以及以下的目錄全都顯示
-d顯示文件本身信息,而不是文件夾內(nèi)部文件信息
-i顯示文件的inode信息
[root@node1 ~]$ ll -d /root/
dr-xr-x---. 10 root root 4096 Oct 31 11:51 /root/
[root@node1 ~]$ ls -i anaconda-ks.cfg
33575004 anaconda-ks.cfg
2 ll文件信息詳解

每一條記錄共分7個(gè)部分,每個(gè)部分含義如下
- 10位信息12345678910:
1表示文件類型:-普通文件,d文件夾,c/b字符/塊文件,ssocket文件,l鏈接文件
234表示文件所有者權(quán)限
567表示文件所有組權(quán)限
8910表示其他用戶權(quán)限
如果設(shè)置特殊權(quán)限如facl,將出現(xiàn)第11位+,表示文件有特殊權(quán)限
-rw-rwxr--+ 1 root root 0 Oct 29 12:16 服務(wù)器.txt
對(duì)于文件:rwx代表讀、寫、執(zhí)行
對(duì)于文件夾:r能夠讀取文件夾下文件名,w能在文件夾下進(jìn)行文件的創(chuàng)建和刪除,x能夠進(jìn)入文件夾。對(duì)于文件夾一般都要賦予r+x的權(quán)限。 - 鏈接數(shù),創(chuàng)建硬鏈接會(huì)+1,軟鏈接不會(huì)。如果文件是文件夾,鏈接數(shù)等于文件夾下的子文件夾數(shù)。
創(chuàng)建目錄時(shí),默認(rèn)會(huì)生成兩個(gè)目錄項(xiàng):"."和".."。前者的inode號(hào)碼就是當(dāng)前目錄的inode號(hào)碼,等同于當(dāng)前目錄的"硬鏈接";后者的inode號(hào)碼就是當(dāng)前目錄的父目錄的inode號(hào)碼,等同于父目錄的"硬鏈接"。所以,任何一個(gè)目錄的"硬鏈接"總數(shù),總是等于2加上它的子目錄總數(shù)(含隱藏目錄),這里的2是父目錄對(duì)其的“硬鏈接”和當(dāng)前目錄下的".硬鏈接“。
- 文件所有者
- 文件所有組
- 文件大小,單位是字節(jié)
- 文件的mtime
- 文件絕對(duì)路徑
2.1 特殊權(quán)限 suid、sgid、stick
suid:
屬主的執(zhí)行位變成s,屬主須有x權(quán)限,否則顯示S,不生效
含義:將文件屬主擁有的能力,分配給所有能夠執(zhí)行這個(gè)文件的人
設(shè)置方法:
- chmod 4777
- chmod u+/-s
sgid:
屬組的執(zhí)行位變成s,屬組須有x權(quán)限,否則顯示S,不生效
含義:將文件屬組擁有的能力,分配給所有能夠執(zhí)行這個(gè)文件的人
設(shè)置方法:
- chmod 2777
- chmod g+/-s
sticky bit:
其他用戶的執(zhí)行位變成t,一般配置給777權(quán)限的共享文件夾
含義:賦予文件夾,實(shí)現(xiàn)將不同用戶的文件放入共享文件夾,不同用戶數(shù)據(jù)可以相互查看,但不能修改
設(shè)置方法:
- chmod 1777
- chmod o+/-t
3 cp
options
-r遞歸拷貝,將文件夾及其目錄下的全部文件拷貝,否則cp不能拷貝文件夾
-p保留權(quán)限和時(shí)間戳
4 mv
可以移動(dòng)文件和文件夾,保留時(shí)間戳信息
5 mkdir
options
-p遞歸創(chuàng)建父文件夾,如mkdir -p /a/b/c/d,會(huì)依次創(chuàng)建/a、/a/b、/a/b/c、/a/b/c/d文件夾
6 rm
不加參數(shù)只能刪除文件,不能刪除文件夾
-r遞歸刪除,可以刪除文件夾
-fforce,強(qiáng)制刪除,不詢問
#刪除/tmp/root文件夾及文件夾內(nèi)文件
[root@node1 ~]$ rm -rf /tmp/root
[root@node1 ~]$ rm -rf /tmp/root/
#只刪除/tmp/root文件夾下的文件,保留文件夾
[root@node1 ~]$ rm -rf /tmp/root/*
7 文件系統(tǒng)詳解
Linux文件系統(tǒng)(如ext2、ext3)規(guī)定,一個(gè)文件由目錄項(xiàng)、inode和數(shù)據(jù)塊組成:
- 目錄項(xiàng):包括文件名和inode節(jié)點(diǎn)號(hào)。
- Inode:又稱文件索引節(jié)點(diǎn),包含文件的基礎(chǔ)信息以及數(shù)據(jù)塊的指針。
- 數(shù)據(jù)塊:包含文件的具體內(nèi)容。
目錄項(xiàng)
Linux系統(tǒng)中,目錄(directory)也是一種文件。打開目錄,實(shí)際上就是打開目錄文件。
目錄文件的結(jié)構(gòu)非常簡(jiǎn)單,就是一系列目錄項(xiàng)(dirent)的列表。每個(gè)目錄項(xiàng),由兩部分組成:
- 所包含文件的文件名。(目錄r權(quán)限)
- 以及該文件名對(duì)應(yīng)的inode號(hào)碼。(目錄x權(quán)限)
inode
理解inode,要從文件儲(chǔ)存說起。文件儲(chǔ)存在硬盤上,硬盤的最小存儲(chǔ)單位叫做"扇區(qū)"(Sector),每個(gè)扇區(qū)儲(chǔ)存512字節(jié)(相當(dāng)于0.5KB)。
操作系統(tǒng)讀取硬盤的時(shí)候,不會(huì)一個(gè)扇區(qū)一個(gè)扇區(qū)地讀取,這樣效率太低,而是一次性連續(xù)讀取多個(gè)扇區(qū),即一次性讀取一個(gè)"塊"(block)。這種由多個(gè)扇區(qū)組成的"塊",是文件存取的最小單位。"塊"的大小,最常見的是4KB,即連續(xù)八個(gè) sector組成一個(gè) block。
文件數(shù)據(jù)都儲(chǔ)存在"塊"中,那么很顯然,我們還必須找到一個(gè)地方儲(chǔ)存文件的元信息,比如文件的創(chuàng)建者、文件的創(chuàng)建日期、文件的大小等等。這種儲(chǔ)存文件元信息的區(qū)域就叫做inode,中文譯名為"索引節(jié)點(diǎn)"。
inode包含文件的元信息,具體來說有以下內(nèi)容:
- 文件的字節(jié)數(shù)。
- 文件擁有者的User ID。
- 文件的Group ID。
- 文件的讀、寫、執(zhí)行權(quán)限。
- 文件的時(shí)間戳,共有三個(gè):ctime指inode上一次變動(dòng)的時(shí)間,mtime指文件內(nèi)容上一次變動(dòng)的時(shí)間,atime指文件上一次打開的時(shí)間。
- 鏈接數(shù),即有多少文件名指向這個(gè)inode。
- 文件數(shù)據(jù)block的位置。
可以用stat命令,查看某個(gè)文件的inode信息:
stat demo.txt
總之,除了文件名以外的所有文件信息,都存在inode之中。

8 ln
硬鏈接
一般情況下,文件名和inode號(hào)碼是"一一對(duì)應(yīng)"關(guān)系,每個(gè)inode號(hào)碼對(duì)應(yīng)一個(gè)文件名。但是,Linux系統(tǒng)允許,多個(gè)文件名指向同一個(gè)inode號(hào)碼。這意味著,可以用不同的文件名訪問同樣的內(nèi)容;對(duì)文件內(nèi)容進(jìn)行修改,會(huì)影響到所有文件名;但是,刪除一個(gè)文件名,不影響另一個(gè)文件名的訪問。這種情況就被稱為"硬鏈接"(hard link)。
ln source_file target_file
軟鏈接
除了硬鏈接以外,還有一種特殊情況。文件A和文件B的inode號(hào)碼雖然不一樣,但是文件A的內(nèi)容是文件B的路徑。讀取文件A時(shí),系統(tǒng)會(huì)自動(dòng)將訪問者導(dǎo)向文件B。因此,無論打開哪一個(gè)文件,最終讀取的都是文件B。這時(shí),文件A就稱為文件B的"軟鏈接"(soft link)或者"符號(hào)鏈接(symbolic link)。
這意味著,文件A依賴于文件B而存在,如果刪除了文件B,打開文件A就會(huì)報(bào)錯(cuò):"No such file or directory"。這是軟鏈接與硬鏈接最大的不同:文件A指向文件B的文件名,而不是文件B的inode號(hào)碼,文件B的inode"鏈接數(shù)"不會(huì)因此發(fā)生變化。
ln -s source_file target_file
區(qū)別
硬鏈接:
- 不同路徑的文件指定的是同一個(gè)inode
- 硬鏈接不能跨分區(qū)存在
- 硬鏈接不能鏈接到目錄(要避免循環(huán)引用)
- 刪除硬鏈接只會(huì)減少文件被硬鏈接的次數(shù),源文件不會(huì)動(dòng).
軟鏈接:
- 是一個(gè)獨(dú)立的文件,有自己獨(dú)立的inode,引用的是路徑本身,不是inode
- 刪除軟鏈接,跟源文件沒任何關(guān)系
- 軟鏈接沒有存儲(chǔ)任何數(shù)據(jù),只是存儲(chǔ)了訪問文件的另一種路徑.
- 軟鏈接可以對(duì)目錄創(chuàng)建,也可以跨分區(qū)
- 源文件被刪除,軟連接將不可用。
9 touch
創(chuàng)建一個(gè)空文件,刷新文件的時(shí)間戳,默認(rèn)atime、mtime、ctime全部刷新
touch [OPTION]... FILE...
A FILE argument that does not exist is created empty, unless -c or -h
is supplied.
A FILE argument string of - is handled specially and causes touch to
change the times of the file associated with standard output.
Mandatory arguments to long options are mandatory for short options too.
-a change only the access time
-c, --no-create do not create any files
-d, --date=STRING parse STRING and use it instead of current time
-f (ignored)
-h, --no-dereference affect each symbolic link instead of any referenced
file (useful only on systems that can change the
timestamps of a symlink)
-m change only the modification time
-r, --reference=FILE use this file's times instead of current time
-t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time
--time=WORD change the specified time:
WORD is access, atime, or use: equivalent to -a
WORD is modify or mtime: equivalent to -m
--help display this help and exit
--version output version information and exit
10 stat
查看文件的詳細(xì)信息
[root@node1 ~]$ stat f1.txt
File: ‘f1.txt’
Size: 4402 Blocks: 16 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 34690030 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-10-31 11:59:42.914676527 +0800
Modify: 2020-10-26 12:23:46.584552943 +0800
Change: 2020-10-26 12:23:46.584552943 +0800
Birth: -
10.1 文件的時(shí)間戳
Access Time:文件最后的訪問時(shí)間
Modify Time:文件內(nèi)容最后的修改時(shí)間
Change Time:文件狀態(tài)最后的變更時(shí)間,包括文件的大小、權(quán)限等
10.2 atime的更新規(guī)則
為了防止文件被頻繁訪問,atime頻繁更新,增大系統(tǒng)寫IO的負(fù)擔(dān),atime的更新有兩個(gè)限定條件。
- 當(dāng)mtime和ctime大于等于atime時(shí),發(fā)生文件訪問操作時(shí)更新atime
- 不停的訪問該文件,atime不會(huì)一直更新,atime每24h更新一次
11 chown
改變文件的所有者
chown [OPTION]... [OWNER][:[GROUP]] FILE
Options:
-R, --recursive operate on files and directories recursively
12 chgrp
改變文件的所有組
chgrp [OPTION]... GROUP FILE...
Options:
-R, --recursive operate on files and directories recursively
13 chmod
改變文件權(quán)限
字符方式修改:
user(u)、group(g)、other(o)、all(a)
+添加權(quán)限,-減少權(quán)限,=賦予權(quán)限
chmod [OPTION]... MODE[,MODE]... FILE...
Each MODE is of the form '[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+'.
Options:
-R, --recursive operate on files and directories recursively
[root@node1 ~]$ chmod a+r anaconda-ks.cfg
[root@node1 ~]$ chmod o=rx anaconda-ks.cfg
#參考復(fù)制RFILE的權(quán)限給FILE
chmod [OPTION]... --reference=RFILE FILE...
數(shù)字方式修改
r=4、w=2、x=1
特殊權(quán)限
suid=4、sgid=2、sitck=1
特殊權(quán)限的數(shù)字放在開頭
[root@node1 ~]$ chmod 3777 anaconda-ks.cfg
14 umask
默認(rèn)是0022,設(shè)定命令umask 值
默認(rèn)文件權(quán)限:666-umask
umask是奇數(shù):666-033 = 633 + 011 = 644
umask是偶數(shù):666-022 = 644
默認(rèn)目錄權(quán)限:777-umask
umask是奇數(shù):777-033 = 744
umask是偶數(shù):777-022 = 755
永久修改/etc/profile

15 chattr 給文件設(shè)置特殊權(quán)限
chattr +i 文件 給文件加鎖,任何用戶不能修改
chattr -i 文件 給文件解鎖
16 lsattr查看文件特殊權(quán)限
17 md5sum 校驗(yàn)文件完整性
md5sum file能夠生產(chǎn)文件的MD5值,文件內(nèi)容的改動(dòng)會(huì)導(dǎo)致文件MD5值變化
[root@backup ~]$ md5sum f1.txt
b026324c6904b2a9cb4b88d6d61c81d1 f1.txt
可以配合find和輸出重定向直接生成帶有絕對(duì)路徑的校驗(yàn)文件:
find /backup/ -type f -exec md5sum {} \; > /backup/finger.txt
md5sum -c 校驗(yàn)文件比對(duì)本機(jī)文件的MD5值與校驗(yàn)文件中記錄的值是否一致
校驗(yàn)文件的格式為:
MD5值 文件(相對(duì)路徑或絕對(duì)路徑)
md5sum -c 讀取本機(jī)文件時(shí),會(huì)按照校驗(yàn)文件記錄的路徑進(jìn)行讀取,所以校驗(yàn)文件推薦使用絕對(duì)路徑。
18 mktemp創(chuàng)建臨時(shí)文件
創(chuàng)建一個(gè)臨時(shí)文件或目錄,并打印名字。名字的后綴至少帶有3個(gè)X。
-d 創(chuàng)建目錄
mktemp 111.XXX
111.X9B