基於 Red Hat Enterprise Linux 7.5 或者 CentOS 7.4 基本概念 Linux最核心的一個概念就是:Linux裡面任何東西都可以被視為一個文件,包括系統本身(說到底Linux啟動不就是調用那些開機文件再連帶啟動其他的文件麽~~~) User:文件擁有者 Group: ...
基於 Red Hat Enterprise Linux 7.5 或者 CentOS 7.4
基本概念
Linux最核心的一個概念就是:Linux裡面任何東西都可以被視為一個文件,包括系統本身(說到底Linux啟動不就是調用那些開機文件再連帶啟動其他的文件麽~~~)
User:文件擁有者
Group:文件所屬群組
Others:非本文件持有者或者所屬群組的其他人員
- User就是字面上的意思,即文件是誰的(具體可執行哪些操作看許可權)
- Group則代表一個拓展版User,代表加入到該組內的所有人對這個文件具有特定的操作許可權,但Group可以不包含User,也就是說一個文件的User可以不在這個文件的Group內
- Others很好理解,不是本人也不是這個所屬組的第三方人員
- 註意:無論如何設置許可權,唯有root是無法被阻擋的
其實許可權的好處就是在生產環境變得更為安全,保證特定數據不會被職權外的人員所訪問
包括root的所有賬號信息都存儲在/etc/passwd,密碼在/etc/shadow,群組則在/etc/group,這三個文件請不要隨意刪除!
文件許可權
-rw-r--r--. 1 root root 2403 7月 20 05:34 initial-setup-ks.cfg
[文件類型和許可權][連接數][User][Group][文件大小][ 最後修改時間 ][ 文件名 ]
類型與許可權:
- rw- r-- r--
[文件類型][User][Group][Others]
許可權分為4段
- 文件類型:這表示這個文件是一個“文件”、目錄或者是快捷方式
- -(橫杠):這是一個文件
- d:這是一個目錄
- l(小寫L):這是一個快捷方式
- b:塊設備文件,即以塊的方式進行存儲,其實指的就是硬碟
- c:字元設備文件,IO設備,也就是滑鼠、鍵盤這些使用物理介面的外設
- p:管道文件(以後會補充)
- s:套介面文件,怎麼說呢,感覺類似網路的監聽埠這樣吧(以後會補充)
- User:請向上看基本概念說明
- Group:請向上看基本概念說明
- Others:請向上看基本概念說明
- rwx在下麵會詳細說明
連接數:i-node
User:擁有者賬號
Group:該文件所屬群組
文件大小:容量,預設單位為Bytes
最後修改時間:代表這個文件的建立日期或者最後修改日期,如果時間距離現在太久,只顯示年份
文件名:就是文件的名字,但如果這個文件的名字前有“.”(例如 .alice )代表這個文件是一個隱藏文件
常用命令
chown [-R] filename/dirname
修改文件擁有者
-R:遞歸修改,這個參數是用在批量修改目錄上面的,即修改一個目錄的時候不加-R參數的話,只是修改目錄錶面的持有者,不會對目錄裡面的文件進行擁有者修改
chgrp [-R] filename/dirname
修改文件所屬群組
-R:遞歸修改,和chown -R的效果是一個意思
chmod [-R] xyz filename/dirname
修改文件許可權
xyz每個字母都代表0~7的數字
-R:遞歸修改,意思和chown -R、chgrp -R一個意思
- r(4):可讀,即讀取
- w(2):可寫,即往文件裡面增加、修改、刪除內容
- x(1):可執行,用Windows的說法就是這個文件能不能啟動,雖然在Linux上你可以給任何文件加上x許可權來執行,但具體能不能用還是看這個文件的尾碼名有沒有相關程式來執行功能,所以從Windows的角度來看Linux的x許可權不大好理解這個;但需要註意的是,Linux下文件能不能被執行與尾碼名是沒有關係的,只和x許可權有關,所以能不能執行這個尾碼名的文件就是另外一回事了
r、w、x的對應數字為4、2、1,即為什麼說xyz的地方為0~7就很好理解了吧,滿許可權rwx加起來的數值剛好就是7,沒有任何許可權加起來就是0,為什麼要rwx定為421的原因其實就是電腦的運行方式(稍微有點電腦基礎的都知道用電腦是如何用二進位是來表示十進位數)
舉點例子好了:
-rwxr-x-wx 就是[4+2+1][4+0+1][0+2+1],各部分加起來就是753
-----wx--x 就是[0+0+0][0+2+1][0+0+1],即031
rwx轉換數字這個需要多加練習,最好能一眼看出一個文件的3組rwx對應總許可權數字是多少
當然如果不習慣xyz這種方式添加許可權的話還有另一種方式
chmod u(User) +(加上) r(可讀) filename/dirname
g(Group) -(減去) w(可寫)
o(Others) =(設定) x(可執行)
a(All,即User+Group+Others)
u、g、o都可以理解,a指的是同時指定User、Group、Others,也就是a選項是同時操作ugo
+:添加這個許可權,如果ugo對應位置有相應許可權則不變,如果沒有就加上
-:去掉這個許可權,如果ugo對應位置沒有相應許可權則不變,如有有就去掉
=:設定這個許可權,這個和+和-就完全不一樣了,=是設定了相應許可權之後那麼ugo對應組就有哪些許可權,假設某個文件許可權本身是-rwxrwxrwx,那麼 chmod u=r,g=w,o=x 就會變成-r---w---x了哦
以alice這個文件為例,下麵每一個例子都是互相獨立的
-rw-r--r--. 1 root root 0 7月 26 06:06 alice
chmod u-r alice
--w-r--r--. 1 root root 0 7月 26 06:06 alice
chmod g-r,o+rx ailce
-rw----r-x. 1 root root 0 7月 26 06:06 alice
chmod a-r alice
--w-------. 1 root root 0 7月 26 06:06 alice
chmod a=rw alice
-rw-rw-rw-. 1 root root 0 7月 26 06:06 alice
許可權對於文件和目錄的意義(重點)
- 許可權對檔案的重要性
- r:可讀,可以讀取文件的實際內容
- w:可寫,即往文件裡面增加、修改、刪除內容
- x:可執行,可以被系統執行的許可權(具體看chmod關於x許可權的說明)
- 註意:文件本身是否可以刪除與文件本身的許可權無關,是由該文件所處目錄的w許可權來決定的
- 許可權對於目錄的重要性
- r:可讀,可以讀取目錄的結構清單,也就是可以將該目錄有哪些文件可以列出來
- w:可寫,這個許可權對目錄來說非常重要,也就是說w許可權可以修改該目錄結構
- 在該目錄內建立新文件或者子目錄
- 刪除該目錄內已存在的文件或者子目錄(無論該文件或者子目錄的許可權是什麼)
- 將該目錄內已存在的文件或者子目錄進行重命名
- 移動該目錄內已存在的文件或者子目錄
也就是說,w許可權可以理解成目錄內有關的文件名修改就對了,怎麼說呢……新增加了一個文件,目錄的結構列表就多了一個名字;刪除一個文件,目錄結構列表就少了一個名字;重命名一個文件,目錄一個文件的名字就修改了嘛~~~
補充一點就是,w許可權可以無視子文件和子目錄的許可權進行刪除的原因在於子文件和子目錄的許可權只是決定了對其自身內容的修改,並不決定自身,所以自身是否能刪除是取決於所在的父目錄的許可權決定的
一個不是很恰當的例子就是,我的書架裡面放了一本別人上了鎖的日記,我既不能看也沒法做其他的操作;但這是我的書架,我可以將別人放在我書架上的上鎖日記拿出來放到(是移動不是複製)其他地方或者直接扔進垃圾桶裡面
-
- x:可進入,這個和文件的x許可權意義就不一樣了,對於目錄來說,執行就是進入這個目錄,同時也是目錄最核心的許可權
重點來了~~ rwx的重要性由高到低來說,文件是rwx,目錄是xwr
可能很多人不是很註意這個許可權問題,但對於文件操作來說這點至關重要
- 為什麼文件的許可權重要性順序是rwx?
首先,你要能讀取(r)文件的內容,你才能去寫入(w)內容,如果你連文件裡面有什麼都不知道,你又怎麼去寫入東西進去呢?何況是執行(x)
對於電腦來說,任何文件都要轉化成1和0才能執行,如果電腦連文件有多少個1和0都不知道,該怎麼去執行(x)文件呢~~~
- 為什麼目錄的許可權重要性順序是xwr?
首先,你要進入(x)這個目錄,你才能去修改文件(w)和列出目錄結構清單(r)
舉個例子可能比較好理解一點:
目錄就像一個抽屜,x許可權就是打開這個抽屜的鑰匙,w許可權就是翻找(修改)東西的能力,r許可權就是個抽屜裡面的照明燈
首先你連鑰匙(x)都沒有,你怎麼翻找東西(w)和知道抽屜裡面有什麼嗎(r)?
其次,如果我已經事先就知道這個抽屜裡面有哪些東西了,那我還需要照明燈(r)嗎?並不一定需要對吧,照明燈(r)的功能只是輔助我翻找東西(w)而已,我甚至都可以摸黑翻找東西~~~
所以現在能理解目錄的許可權重要性順序為什麼和文件是反過來的吧
假設有這麼兩個目錄和並且其中一個目錄有文件 /dir1/file1 /dir2
操作 /dir1 /dir1/file1 /dir2 說明
讀取file1內容 x r - 只需要有個x許可權進到dir1裡面,因為沒有對file1做任何文件名形式上的修改,對dir1來說也就不需要w了
修改file1內容 x rw - 進入dir1裡面,沒動文件名就不需要w,但需要修改file1內容,所以需要讀才能寫(rw)
執行file1內容 x rx - 進入dir1裡面,沒動文件名就不需要w,但需要執行file1內容,所以需要讀才能執行(rx)
刪除file1文件 wx - - 進入dir1裡面,結構清單裡面少了一個文件名,所以需要w,但刪除file1就無所謂file1有沒有許可權了
將file1複製到dir2 x r wx 進入dir1裡面,沒動dir1裡面的文件名就不需要w,但dir2需要進入並且在dir2的結構清單上多了一個文件名,所以dir2需要wx
將file1移動到dir2 wx - wx 進入dir1裡面,file1被移動,dir1結構清單裡面少了一個文件名,所以需要w;同理dir2多了一個文件名,所以也需要w
上面所有對於目錄的操作完全沒有用到r許可權,所以對目錄來說r許可權是可有可無的東西