讓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,或則是目錄內檔案的建立者才能刪除目錄內的檔案,其它使用者是不能刪除的。
相關推薦
讓PHP以ROOT許可權執行系統命令的方法&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.建立一個
sudo以root身份執行命令與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‘)