1. 程式人生 > >讓PHP以ROOT許可權執行系統命令的方法&SUID,SGID,SBIT許可權的作用和設定

讓PHP以ROOT許可權執行系統命令的方法&SUID,SGID,SBIT許可權的作用和設定

SUID:只對二進位制程式支援,只要擁有該程式的所有者擁有SUID的許可權,那麼其它使用者或者同組使用者擁有該程式的x許可權,就可以在程式執行過程中擁有所有者的許可權支援。

例如:(在root下操作)

有一檔案text的內容是hello world!,現在編寫一個讀出該檔案內容的程式

程式如下:

程式名為read

#include <stdio.h>

#include <stdlib.h>

int main()

{

FILE *fp = fopen("/text","r");

char a=fgetc(fp);

while(a!=EOF)

{

putchar(a);

a=fgetc(fp);

}

fclose(fp);

return 0;

}

然後我們更改檔案和程式的許可權為

read -rwx-----x         root  root 檔案所有者可以讀寫執行,其它使用者能執行

text   -r---------         root  root 只有該檔案的所有者才能讀

現在執行read

輸出hello world!

在新建一個使用者qita,然後切換到其它,然後再執行./read則表示會出現錯誤

原因是read雖然可以執行但是目的是去讀text,text的許可權是隻有所有者能夠讀到,這是其它使用者,當然不能。要想能讀到方法是讓read擁有

SUID的許可權,此時就可以讓其它使用者在執行read時得到所有者的支援(得到所有者的許可權)。***要保證其它使用者對於該程式擁有可執行的許可權。

具體如下

1,切換到root使用者。

2,然後chmod u+s read    此時read就擁有了SUID許可權了。

3,切換到qita使用者,執行./read 就能夠輸出Hello world!了。

SGID:此許可權與SUID有類似的地方,但是SUID是得到所有者的支援,而SGID是得到同組使用者的支援。同樣是剛才的程式和檔案,我們改下許可權。

切換到root

text ----r-----    root root 表示只有同組使用者才能讀

read -rwx--x--x   root root

此時執行read,可以輸出Hello world!

然後切換到qita

此時執行read,這是侯就不能輸出了,原因是其text只能同組使用者讀寫。qita想要讀到text的內容必須得到root組的支援。

方法如下:

1,切換到root

2,chmod g+s read   這時候就擁有了SGID的許可權了

3,切換到qita,執行read,成功

注意:其它使用者必須擁有的程式的執行權!

SBIT:此許可權只對目錄有效,擁有此許可權的目錄,必須是目錄所有者,root,或則是目錄內檔案的建立者才能刪除目錄內的檔案,其它使用者是不能刪除的。

相關推薦

PHPROOT許可權執行系統命令方法&SUID,SGID,SBIT許可權作用設定

SUID:只對二進位制程式支援,只要擁有該程式的所有者擁有SUID的許可權,那麼其它使用者或者同組使用者擁有該程式的x許可權,就可以在程式執行過程中擁有所有者的許可權支援。 例如:(在root下操作) 有一檔案text的內容是hello world!,現在編寫一個讀出該檔案內容的程式 程式如下: 程式名為r

使用Python執行系統命令方法有哪些?

Python學習 Python培訓 Python全棧 使用Python執行系統命令方法有哪些?  Python是一款操作簡單的編程語言,內置豐富的庫,能夠很容易的實現強大的功能,在使用Python進行框架搭建時,往往需要用到Python執行系統命令,一些開發人員對此不熟悉,以下是具體的操作方法: 

如何使用Python執行系統命令方法?老男孩IT教育

Python培訓 Python開發 Python學習 如何使用Python執行系統命令方法?老男孩IT教育   Python是一款操作簡單的編程語言,內置豐富的庫,能夠很容易的實現強大的功能,在使用Python進行框架搭建時,往往需要用到Python執行系統命令,一些開發

Python執行系統命令方法一覽

(1) os.system     這個方法是直接呼叫標準C的system() 函式,僅僅在一個子終端執行系統命令,而不能獲取命令執行後的返回資訊。  import os  os.system('cat /proc/cupinfo') (2) os.popen 

CentOS SUID/SGID/SBIT許可權與其在專案協作中的運用

本文總結自鳥哥的linux私房菜 檔案與目錄管理篇:http://linux.vbird.org/linux_basic/0220filemanager.php 目錄 目錄 一、幾個特殊許可權

如何PHP通過ROOT許可權執行LINUX命令

一般 PHP 在 LINUX 伺服器上執行 shell 命令時,只能擁有 www:www 賬戶許可權,想執行一些系統命令是沒有許可權的,如重啟 apache,因為控制 apache 需要 root 許可權,因此下面的辦法可以讓 PHP 執行 ROOT 許可權的命令。 1

ubuntu16 php root 許可權執行shell命令

有時候執行php 執行某些shell命令必須使用root許可權.如下設定可以讓php 免密碼執行 sudo 用命令 編輯 /etc/sudoers: visudo -f /etc/sudo

PHP執行系統命令的有幾個常用的函數

exe 自動 文件操作 nal 外部命令 中間 ring 打開 lcm PHP執行系統命令的有幾個常用的函數,如有:system函數、exec函數、popen函數,passthru,shell_exec函數他們都可以執行系統命令,不過前提時必須系統給了權限了哦。 syste

root使用者執行jenkins中shell命令 重要

以centOS系統為例,記錄下修改Jenkins以root使用者執行的方法。 修改Jenkins配置檔案 # 開啟配置檔案vim /etc/sysconfig/jenkins# 修改$JENKINS_USER,並去掉當前行註釋$JENKINS_USER="root"1234修改Jenkins相關資料夾使用

給使用者授權root身份執行ls,touch,passwd命令,但是禁止修改root使用者密碼

通過visudo修改授權oldboy相關的許可權 通過visudo修改授權oldboy相關的許可權 [[email protected] ~]# visudo oldboy ALL=(ALL) /bin/ls, /bin/touch, /usr/bin/pa

讀《利用環境變數LD_PRELOAD來繞過php disable_function執行系統命令》有感

今天看來一篇文章:http://cb.drops.wiki/wooyun/drops/tips-16054.html 復現了一下,感覺有點坑 我把復現的過程,結果和遇到問題在這裡總結一下 我的實驗環境是centos7 php 5.4 首先按照要求編譯一個so 1.建立一個

sudoroot身份執行命令與su切換使用者命令

sudo命令用來以其他身份來執行命令,預設的身份為root。在/etc/sudoers中設定了可執行sudo指令的使用者。若其未經授權的使用者企圖使用sudo,則會發出警告的郵件給管理員。使用者使用sudo時,必須先輸入密碼,之後有5分鐘的有效期限,超過期限則必須重新輸入密

root使用者執行jenkins中shell命令

以centOS系統為例,記錄下修改Jenkins以root使用者執行的方法。 修改Jenkins配置檔案 # 開啟配置檔案 vim /etc/sysconfig/jenkins # 修改$JEN

Java超級使用者身份執行系統命令的方式

執行Linux系統命令, 如果無法獲取root許可權, 會丟擲異常 public void testDate(){ Log.i("zmr", "testDate"); try { Process

open (13: 許可權不夠) 無法對狀態列表目錄加鎖(/var/lib/dpkg/),請檢視您是否正 root 使用者執行

在Ubuntu終端中使用安裝命令Sudo apt-get install xxx時,也許會出現如下錯誤: 輸入: apt-get install gimp 出現如下: E: 無法開啟鎖檔案 /var/lib/dpkg/lock - open (13: 許可權不夠) E: 無

在sudo下php無法執行系統命令

 在上一篇文章解決sudo: no valid sudoers sources found, quitting,我讓普通使用者使用sudo的時候,不用輸入密碼了,但老大在後臺讓php執行系統命令的時候,發現php會報錯,但前臺執行又沒有問題,讓我很疑惑,網上找了下,終於知

Esper調用Java代碼執行系統命令

java esper 系統 Esper語言是可以調用高級語言的靜態方法的:以調用Java的靜態方法執行系統命令為例:select Runtime.getRuntime().exec(\"calc\"),avg(price) from " + product + ".win:length_batch

windows linux 使用python執行系統命令並將結果保存到變量

rtc 2008r2 digg 系統 ng- shc down post drive 最近需要用到os.system 發現不能賦值到變量 後查有更新的模塊,如下: os.system os.spawn* os.popen* popen2.* commands.* 重新使

php在linux中執行外部命令

-type nbsp 指令 一行 scrip 自己 edi 混亂 int 目錄:一、PHP中調用外部命令介紹二、關於安全問題三、關於超時問題四、關於PHP運行linux環境中命令出現的問題一、PHP中調用外部命令介紹在PHP中調用外部命令,可以用,1>調用專門函數、2

python執行系統命令後獲取返回值

這就是 () err div log system clas pri 命令 import os, subprocess# os.system(‘dir‘) #執行系統命令,沒有獲取返回值,windows下中文亂碼# result = os.popen(‘dir‘)