UID SGID與chmod 777的一些問題

先來看問題

UID SGID與chmod 777的一些問題

問題來了:
echo的行為返回是對的還是vi是對的?

現場分析:

  1. vi 和 echo 都被設置為SGID權限。

  2. abc文件所在的父目錄權限是777

  3. echo無法寫abc文件,而vi是可以的

當時被問到這個問題時,我也是一征,怎么會這樣。加之SUID,SGID在企業應用很少,如此這么久早忘了一干二凈,只是趕緊去補課~,但經過30MIN后依然沒有找到問題所在,不名有些尷尬。后來在群里和朋友們一起討論下后發現了問題所在。我們這里一一道來。

一道:
因為該父目錄權限是777,所以該目錄是任何人可寫,又因為該目錄只是普通的777權限目錄,沒有ST保護,所以該目錄下的文件是任何人可寫可刪可改的。正做簡單演示:


    1. 先增加兩個普通用戶stanleytom

[root@app1 ~]# id stanley
uid=501(stanley) gid=501(stanley) groups=501(stanley)
[root@app1 ~]# id tom
uid=502(tom) gid=502(tom) groups=502(tom)

    1. 創建/root_test_dir 目錄并賦權為777

[root@app1 ~]# mkdir /root_test_dir
[root@app1 ~]# chmod 777 /root_test_dir
[root@app1 ~]# ll /root_test_dir/

UID SGID與chmod 777的一些問題


    1. 分別登錄 stanleytom用戶,并在/root_test_dir目錄下創建以自己姓名命名的文件stanley.txt 和 tom.txt,并分別編輯內容

###stanley用戶
[stanley@app1 ~]$ cd /root_test_dir/
[stanley@app1 root_test_dir]$ touch stanley.txt
[stanley@app1 root_test_dir]$ echo -e "###Notice:\nThis is stanley's file" > stanley.txt
###tom用戶
[tom@app1 ~]$ cd /root_test_dir/
[tom@app1 root_test_dir]$ touch tom.txt
[tom@app1 root_test_dir]$ echo -e "###Notice:\nThis is tom's file" > tom.txt 
###root用戶
[root@app1 ~]# ll /root_test_dir/
[root@app1 ~]# cat /root_test_dir/{stanley.txt,tom.txt}


為方便實現,分別使用對應用戶各自復制一份文件出來

###stanley用戶
[stanley@app1 root_test_dir]$ cp stanley.txt stanley1.txt  
###tom用戶
[tom@app1 root_test_dir]$ cp tom.txt tom1.txt



    1. 確認777目錄權限。使用stanley編輯并保存tom的文件。
      UID SGID與chmod 777的一些問題

      不理它,繼續編寫
      UID SGID與chmod 777的一些問題

      提示要加!強制保存。輸入:wq!發現是可以強制保存的。同時文件的權限會被強制修改為stanley的文件。這個大家一定要留意?。。。?!
      UID SGID與chmod 777的一些問題

/tmp目錄之所以不會出現這樣的問題是因為/tmp目錄添加了ST粘貼位,所以不會出現這樣的問題

UID SGID與chmod 777的一些問題


    1. 驗證完前面的問題后,我們來模擬viecho 的SGID權限(同時這里也要聲明的是SUID,SGID只對二進制文件生效?。。?br style="margin: 0px;padding: 0px;max-width: 100%"/>UID SGID與chmod 777的一些問題


    1. 用stanley分別使用echovi命令來編輯tom的文件來模擬圖中的問題
      開始之前再來驗證下用戶屬主屬組是否有特殊權限,/root_test_dir權限是否被特殊設置,文件的權限都是ok的。一切ok模擬第一幅圖中的問題。
      UID SGID與chmod 777的一些問題

      執行echo命令:

[stanley@app1 root_test_dir]$ echo 'stanley need tom1.txt file too!' >> tom1.txt

UID SGID與chmod 777的一些問題

執行vi命令:
vi tom1.txt文件后強制編輯后wq!強制保存。

大家可以看到問題確認是這樣的。這是為什么呢?

最開始的時候,個人也納悶了很久,折騰了30來分鐘也沒有搞定。但絲毫沒有懷疑是Linux系統的問題。所以問題肯定還是出在權限的問題上。

幾經折騰后,最終忽略了一個問題,同時對SUID,SGID的概念沒有深入理解。

  • 問題1: vi是的工作原理是先寫.swap臨時文件再覆蓋原文件的。因為父目錄是777,所以任何用戶都可以覆蓋其它人的文件


  • 問題2:我們賦予了/bin/echo /bin/vi SGID權限,那為什么文件還是不能被重寫呢?
    UID SGID與chmod 777的一些問題

SGID的權限賦予的是vi 和 echo兩個命令,而且這兩個命令也確實是被正常執行了。只是/root_test_dir目錄下的文件沒有權限被重寫而已。

大家試下在/root_test_dir目錄下,mv是可以被覆蓋其它人的文件的。
UID SGID與chmod 777的一些問題

所以,這SUID,SGID和目錄777權限的問題,大家應該清楚了吧。

原創文章,作者:sjfbjs,如若轉載,請注明出處:http://www.www58058.com/30602

(0)
sjfbjssjfbjs
上一篇 2016-08-08
下一篇 2016-08-08

相關推薦

  • MySQL復制

    目錄: 1.備份與恢復 2.主從復制 3.主主復制 4.半同步復制 5.MHA 6.centos7搭建mariadb Galera集群 1.備份和恢復 備份工具:mysqldump+復制binlog xtrabackup (1) mysqldump+復制binlog 備份: mysqldump -E -R –triggers –master-data=2 –…

    2017-11-21
  • Linux系統進程管理

    本章學習內容     ——進程概念     ——進程創建、切換和撤銷     ——進程調度     ——進程分類     ——進程狀態 &n…

    Linux干貨 2016-09-13
  • CentOS7下利用rsyslog+loganalyzer配置日志服務器及Linux和windows客戶端配置

    隨著機房內的服務器和網絡設備增加,日志管理和查詢就成了讓系統管理員頭疼的事。 系統管理員遇到的常見問題如下: 1、日常維護過程中不可能登錄到每一臺服務器和設備上去查看日志; 2、網絡設備上的存儲空間有限,不可能存儲日期太長的日志,而系統出現問題又有可能是很久以前發生的某些操作造成的; 3、在某些非法入侵的情況下,入侵者一般都會清除本地日志…

    2017-03-15
  • N21-北京-泥人-馬哥教育網絡班21期+第一周課程練習

    馬哥教育網絡班21期  第一周課程練習 一、計算機的組成 1、計算機主要由以下幾部分組成:運算器 控制器 存儲器(編址存儲單元)、 輸入、輸出設備   2、運算器負責運算:只能做二進制的數學、邏輯運算, 控制器:控制由哪得到數據,放到哪去,協調運算器、存儲器、輸入、輸出等設備 運算器、控制器整合到一起就是常說的中央處理器,也就是CPU。 …

    Linux干貨 2016-07-12
  • RAID and LVM

    RAID          Redundant Arrays of  inexpensive(Independent)Disks,RAID:容錯式廉價磁盤陣列,容錯式獨立磁盤陣列,簡稱RAID,由加利福尼亞大學伯克利分校(University of California-Berkeley)在1988…

    Linux干貨 2016-09-02
  • linux基礎學習-第六天

    2016-08-02 授課內容: 用戶和組管理命令 理解并設置文件權限 默認權限 特殊權限 文件ACL 用戶和組管理命令 用戶和組的配置文件:/etc/default/useradd(相當于useradd -D)、/etc/skel(創建用戶的家目錄配置文件)、/etc/login.defs(修改用戶的密碼策略配置) /etc/default/useradd…

    Linux干貨 2016-08-04
欧美性久久久久