1. 程式人生 > >學習筆記第九節課

學習筆記第九節課

作業

特殊權限set_uid
  • 之前用過passwd 查看它的位置 然後查看它的權限,發現它是一個紅色的文件,九位權限位裏 出現了一個新的權限字符s 。
  • s=set_uid 這個權限的作用就是臨時賦予普通用戶root用戶的權限。
  • linux系統很安全,要改密碼就要改一個密碼的文件。
  • 密碼的文件是etc/shadow 查看它,發現權限全是0.
  • root是超級用戶,擁有最高權限,即使全是0 也可以改動,可以授權一個修改的權限。普通用戶不行,什麽權限就是什麽權限。
  • 技術分享圖片
  • 為了讓普通用戶可以改密碼,就發明了一個特殊權限set_uid.
  • 除了讓所有者之外的用戶,去執行帶set_uid 的文件一瞬間,可以臨時擁有root用戶的權限。(這就是set_uid的作用。)
  • 給一個文件設置set_uid 前提是一個二進制文件,而且是一個可執行文件。(ls passwd 都是二進制文件)
  • 這樣的權限並不多,在系統中只在/usr/bin/passwd有這個權限。

  • 做個實驗:給一個文件授權一個set_uid的權限。
  • 首先切換到一個普通用戶,然後ls root 會發現權限不夠。
  • 現在個ls設置一個set_uid的權限。
  • 技術分享圖片
  • 再次執行發現可以查看了。
  • 技術分享圖片
  • 權限還是沒有變的,是因為給了ls臨時的特殊權限。
  • 技術分享圖片
  • 改回來授予的權限, 減去權限即可。
  • 技術分享圖片
  • 也可以這樣寫 chmod u=rws /usr/bin/ls,但是查看後發現權限位是一個S (也有s權限,但是沒有x權限,所以變成S,)想變成s 就加一個x
  • 技術分享圖片
  • 實際上就算是S 也不受影響。 root用戶也能執行。
  • 目錄也可以加set_uid 但是沒什麽用,沒意義。

特殊權限set_gid


  • set_gid 權限位作用在所屬組上,同樣是一個s。
  • 做個實驗:設置一個set_gid,背景變成了×××,所屬組多了一個s 這個set_gid 和uid 功能很相似, 只是所有者變成了所屬組。
  • 技術分享圖片
  • set_gid還可以作用在目錄上。
  • 做個實驗:修改一下234文件的所屬組權限,變成了s
  • 技術分享圖片
  • 為了更好對比,更改一下234的所屬組,chown :user11 234
  • 技術分享圖片
  • 再創建一個234下面的子文件 yingxinlinux,查看發現子文件的所屬組也是user11
  • 技術分享圖片
  • 創建一個子目錄 也是屬於user11
  • 把特殊權限取消,發現所屬組的權限又是root了。
  • 技術分享圖片
  • 作用在目錄上的時候,創建子目錄或者子文件的時候 所創建的子目錄或子文件的所屬組會和目錄一致。

特殊權限stick_bit

  • t=stick_bit tmp是有這個權限的。這個叫 防刪除位。這個t也包含x 文件權限位是777 表示所有用戶可讀可寫。
  • 技術分享圖片
  • 但是不可以刪除,誰的文件誰做主。
  • 做個實驗:在tmp下創建一個yingxin2 它的所有者 所屬組都是yingxin
  • 技術分享圖片
  • 然後vi yingxin2 隨便寫一些東西。
  • 改一下權限,改為777
  • 技術分享圖片
  • 切換一下, 然後換到tmp目錄下, 使用vi去編寫發現可以,但是去刪除卻不行,這就是防刪除位。
  • 技術分享圖片
  • 只有有權限的人可以刪,只有root可以刪,其他沒辦法刪除。
  • 作用:防止別人刪除自己的文件,root除外。

  • 知識點
  • 實驗:在tmp下創建一個user11的目錄 把權限改為777 (就是把用戶user11創建的目錄user11的權限改為777)
  • 技術分享圖片
  • 然後切換到user11下,去創建文件和目錄 都可以創建。
  • 技術分享圖片
  • 這個創建的文件和目錄可以刪除麽? 文件顯示普通用戶只有只讀的,沒有寫的權限的。
  • 但是普通用戶沒有寫的權限,為什麽可以刪除,是因為你所刪除的文件和目錄 所在的目錄是有權限的。(比如你刪除1.txt,看的不是1.txt的權限,而是看它所在的目錄,也就是user11的權限)
  • 技術分享圖片
  • 但是如果加上了 防刪除位 就不能刪除了、

軟鏈接文件

  • 軟鏈接類似windows的快捷方式。
  • bin 就是屬於軟鏈接。它實際是在usr/bin/下的,使用bin/ls和使用usr/bin/ls是一樣的
  • 技術分享圖片
  • 技術分享圖片
  • 軟鏈接就是在文件本身存了另外一個文件或者目錄的路徑,路徑越長,文件就越大。
  • 在lib64下面的軟鏈接最多。
  • 軟鏈接的作用是節省儲存空間。(比如cp一份一模一樣的文件,再cp一份就多占了好多空間,但是做個軟鏈接就幾kb)
  • ln-s 可以做軟鏈接。ln -s +要做軟連接的文件 +要成為的軟鏈接。
  • 做個實驗: 把tmp/yum.log /root/111/yum.log
  • 技術分享圖片
  • 軟鏈接也可以鏈接目錄。
  • 技術分享圖片
  • 也有特殊的情況,實驗:在tmp下創建一個軟鏈接。
  • 技術分享圖片
  • 這個做的是相對路徑,這個僅僅是在當前目錄下,這樣做有弊端。 假如你在相對路徑裏創建了一個軟鏈接,然後把原文件拷貝到了其他機器上,或者目錄改了名字,軟鏈接就會失效。 做軟鏈接盡量做絕對路徑。
  • 做個實驗:把111/yingyinlinux.log 挪到123/下, 去查看,發現是一個紅色的提示, 說明這個文件不存在,(這就是用了相對路徑)
  • 技術分享圖片
  • 因為123下沒有yum.log,文件不存在 創建一個就可以,就正常了。
  • 技術分享圖片

  • 老師工作中的小栗子
  • 假設工作中有一個情況,每天都要寫一個日誌,但是時間久了 磁盤快寫滿了。(寫滿了會出現很糟糕的情況,)可以cp一份 把文件cp到大的分區裏(比如/目錄下),然後把文件刪除,緊接著做一個軟鏈接,把文件軟鏈接到cp的文件去。 這樣就解決了文件占磁盤的問題。
  • 軟鏈接可以是文件 ,目錄 也可以跨分區。

硬鏈接文件

  • 硬鏈接不支持對目錄做,只支持對文件做。指令是ln
  • 做個實驗,
  • 技術分享圖片
  • 硬鏈接相互為硬鏈接,軟鏈接刪除了源 就不能用了,硬鏈接刪不刪源沒關系, 硬鏈接相當於多了一個文件,相當於多了一張皮。真正的文件在inode號裏。而且硬鏈接不會占雙份空間,因為inode號只有一個。做多少個硬鏈接都無所謂。

  • 硬鏈接不能做目錄,
  • 做個實驗:
  • 技術分享圖片
  • 文件可以做硬鏈接,但是不能跨分區。
  • 做個實驗:把boot目錄下的文件做硬鏈接到tmp下,顯示無法創建。因為這兩個分區存在相同inode文件的。 分區之間都有inode體系,創建分區的時候都已經劃分好了。
  • 技術分享圖片

硬鏈接可以做文件,不能做目錄 不能跨分區。 硬鏈接相當於一張皮,可以創建多個,等於多個皮,但是不能全部刪除完。

學習筆記第九節課