隱藏權限lsattr/chattr,特殊權限set_uid,特殊權限set_uid,特殊權限stick_bit,軟連接文件,硬連接文件

隱藏權限 lsattr/chattr

  • chattr能夠修改隱藏權限
  • lsattr能夠查看隱藏權限
  • 給文件增長 i 權限,chattr +i 1.txt
  • 增長i權限後,文件就不能編輯,不能追加內容,不能修更名稱,不能刪除,也不能touch修改時間
  • 1.txt增長i權限後,不能編輯寫入內容,剛纔用vi編輯了該文件
  • 1.txt~ 是緩存文件,編輯1.txt的時候會先把內容寫入1.txt~緩存文件
  • 保存的時候再把1.txt~的內容覆蓋到1.txt上面,而後系統自動刪除1.txt~文件
  • 可是由於1.txt是不能寫入的,因此係統就把1.txt~這個緩存文件保留了
  • 使用chattr -i 1.txt 就能夠把i權限去掉
  • chattr +a 1.txt 能夠增長a權限
  • a權限也是不能編輯內容,刪除,重命名,可是能夠追加內容,touch修改時間
  • head -n2 /etc/passwd >> 1.txt 就是把passwd頭兩行內容追加到1.txt內容後面
  • chattr -a 1.txt 能夠去掉a權限
  • lsattr 111 只能查看111目錄下面的子文件子目錄
  • 想查看111目錄自己須要使用-d參數,lsattr -d 111
  • 給目錄增長i權限,也是沒法修改,也就是說不能建立子文件子目錄,刪除,重命名,touch修改時間
  • 目錄增長a權限,能夠建立子文件子目錄,也能夠修改子文件子目錄
  • 目錄增長i權限,不能建立新的子文件子目錄,可是能夠修改裏面已經存在的子文件子目錄
  • lsattr 只能查看當前目錄下的子文件子目錄
  • 使用 -R 參數能夠把當前目錄下全部層級子文件子目錄都顯示出來
  • 使用 -a 參數能夠顯示全部隱藏文件
  • 使用 -d 參數能夠只顯示本身自己,不顯示子文件子目錄

特殊權限 set_uid

  • 如圖,原本應該是rwx的權限,如今變成 rws,s就是特殊權限
  • set_uid 能夠賦予文件特殊權限 s
  • s權限可讓普通用戶臨時擁有該文件全部者的身份
  • 設置s權限有前提條件,必須是二進制文件,必須是可執行文件
  • 系統內有s權限的文件很少,目前只有 /usr/bin/passwd 文件擁有
  • passwd文件是用來更改密碼,爲了讓普通用戶擁有更改密碼的權限,因此設置了s權限
  • chmod u+s /usr/bin/ls 給ls文件添加了s權限
  • 那麼普通用戶使用ls文件的時候,就會臨時擁有ls命令擁有者的身份的權限,也就是說root的權限
  • 使用 chmod u-s /usr/bin/ls 取消掉ls文件的s權限
  • 也可使用 chmod u=rws /usr/bin/ls 修改文件權限
  • 這樣權限就會變成 rwS,大寫S是由於缺乏了x權限
  • chmod u+x /usr/bin/ls 添加上x權限後,大寫S就變成了小寫s
  • set_uid 是指在文件執行階段擁有文件全部者的操做權限
  • 若是一個文件普通用戶沒有執行權限,也就是不能進入執行階段,那麼s權限就沒用了
  • 如圖,ls文件普通用戶是擁有x權限的,進入執行階段就會臨時擁有root權限

特殊權限 set_gid

  • 使用 chmod g+s /usr/bin/ls 將ls文件的用戶組權限增長了s權限
  • 普通用戶執行ls命令時,會得到ls文件所屬組的權限
  • ls文件所屬組是root組,普通用戶執行ls文件時就擁有root組的權限
  • 設置了所屬組s權限後,文件背景顏色變成了黃色
  • 若是對一個目錄set_gid的話,該目錄下面建立的子文件子目錄的所屬組會跟該目錄保持一致
  • 對234目錄set_gid,而後將所屬組更改爲user1
  • 而後在234目錄下面建立文件aminglinux,該文件所屬組也是user1
  • 因此目錄設置了set_gid之後,下面再建立子文件子目錄所屬組就跟該目錄同樣了

特殊權限 stick_bit

  • 系統有一個目錄擁有stick_bit權限,就是 /tmp/
  • 如圖,顯示爲t的就是stick_bit權限,也叫作防刪除位
  • stick_bit能夠防止別人刪除本身文件的權限,root用戶除外
  • 好比 /tmp/ 有stick_bit 權限,那麼/tmp/裏面的文件就不能被刪除,除了root和文件全部者
  • 好比用戶aming在/tmp/建立一個文件1.txt
  • 而/tmp/目錄自己的權限是其它用戶能夠讀寫執行的
  • 那麼用戶user1或者其它用戶就能夠讀寫執行1.txt
  • 而/tmp/增長stick_bit權限後,1.txt也能夠被其它用戶讀寫執行,可是就不能刪除了
  • 除了root和文件全部者

軟連接文件

  • 這就是軟連接文件,/bin文件就是軟連接文件,真正的文件是 usr/bin
  • 軟連接文件裏面存了另一個文件的路徑
  • 執行軟連接文件,真正執行的是存在裏面的路徑的文件,相似快捷方式
  • 軟連接文件的大小跟路徑長短有關,越長就越大
  • 如圖 ln -s /tmp/yum.log /root/111/yum.log 製做/tmp/yum.log的軟連接指令
  • 真實文件路徑是 /tmp/yum.log , /root/111/yum.log 是軟連接文件所在的路徑
  • 也能夠製做目錄的軟連接文件,如上圖所示
  • 真實目錄路徑是 /tmp/aming2 ,軟連接文件路徑是 /root/111/aming3
  • 軟連接文件也可使用相對路徑,可是容易出問題,因此儘可能使用絕對路徑製做軟連接文件
  • 案例,軟連接實際應用,有一個log文件被不斷寫入,不斷增大,磁盤空間不足了
  • 可是log文件是不能刪除的,只能不斷寫入,而寫入的路徑也是不能改變的
  • 這時候能夠把log文件拷貝到一個足夠大的磁盤裏面,把原來的log文件刪除
  • 而後在原來的路徑處作一個軟連接文件連接到log文件實際所在的路徑去
  • 這樣就能夠不改變log寫入路徑的狀況下,把真實的log文件移到空間大的磁盤去
  • 軟連接不能刪除源文件,刪除了軟連接就無效了

硬連接文件

  • 作硬連接的方法 ln 1.txt 1_heard.txt
  • 源文件是 1.txt, 1_heard.txt 是硬連接文件
  • 查看 inode 號,1.txt和1_heard.txt文件的inode是同樣的
  • 這表示他們指向硬盤中的同一個位置
  • 這兩個文件都顯示爲2,說明使用相同的inode號的文件有兩個
  • 無論誰是源文件,硬連接文件之間相互爲硬連接
  • 目錄是不能作硬連接的,文件才能夠,可是不能跨分區作硬連接
  • 好比系統作了兩個分區,c盤和d盤,只能在c盤內作硬連接,不能在d盤內作c盤文件的硬連接
  • 由於兩個分區之間inode系統是獨立的
  • 在d盤作一個對應c盤inode 74號地址的硬連接,可是d盤自己也有inode 74號的地址存在
  • 這時候就沒法區分74號對應c盤仍是d盤,所以系統規定不能跨分區作硬連接
  • 硬連接指向同一個inode,因此無論操做哪一個硬連接,實際是操做同一個文件
  • 同一個文件的硬連接能夠刪除,若是還有別的硬連接的話
相關文章
相關標籤/搜索