我們的伺服器是這樣做的:
php一般是以apache用戶身份去執行的,把apache加入到存儲你文件的父文件夾屬組里去,然後改該父文件夾許可權為775,這樣屬組成員就有寫的許可權,而apache屬於這個組就可以改寫該目錄下所有文件的許可權,當然,屬組最好不要是root,你可以為該文件夾改個其它普通用戶組。
改apache/php的運行用戶方法不安全,不建議使用。
『貳』 Unix/Linux中如何直接執行PHP腳本文件
使用Linux系統搭建完整的PHP環境後,用戶常會遇到執行PHP腳本需要使用php myscript.php的方式,感覺較為繁瑣。實際上,Linux系統支持直接執行PHP腳本文件。具體操作步驟如下:
首先,編寫PHP腳本文件。例如,創建名為test_run.php的文件,內容如下:
Here is some plain text.
Here is the file name:
《?php
echo $argv[0], PHP_EOL;
》
腳本功能簡單,輸出當前腳本文件的名稱。
接著,通過命令執行腳本:
yuanyu@ymac:phpworkspace $ php test_run.php hello
輸出結果為:
Here is some plain text.
Here is the file name:
test_run.php
yuanyu@ymac:phpworkspace $
為腳本文件增加頭信息及設置許可權:
在文件首行添加php命令全路徑,前綴為#!:
#!/usr/bin/php
保持腳本內容不變:
《?php
echo $argv[0], PHP_EOL;
》
執行賦予可執行許可權:
yuanyu@ymac:phpworkspace $ chmod u+x 。/test_run.php
即可直接執行腳本:
yuanyu@ymac:phpworkspace $ 。/test_run.php
輸出結果為:
Here is some plain text.
Here is the file name:
/test_run.php
yuanyu@ymac:phpworkspace $
此方法在PHP官方文檔中亦有提及,請參考:
http://php.net/manual/en/features.commandline.usage.php
文檔中關於腳本在命令行運行的示例,請參照:
「Example #2 Script intended to be run from command line (script.php)」
『叄』 linux如何設置php創建文件的默認許可權
首先,php的執行者你要知道,看進程明確執行者是哪個賬戶,可以使用mkdir(dir, 0777)設置操作許可權
『肆』 Linux下使用PHP實現提升許可權技巧phplinux提權
隨著互聯網的發展和IT技術的日新月異,Linux系統作為一種常用的伺服器操作系統,也變得越來越重要。PHP作為一種強大的腳本語言,在Linux系統下也得到了廣泛的應用。在Linux系統中,管理員或開發人員需要通過提升用戶許可權來完成各種操作,如編輯系統文件或者執行某些需要root許可權才能運行的腳本等。本文將闡述在Linux系統下使用PHP實現提升許可權技巧。
一、前置知識
在討論如何使用PHP實現提升許可權之前,需要了解一些Linux系統的基本知識,如用戶、用戶組、文件許可權等。在Linux系統中,每個文件或目錄都有建立它的用戶和用戶組,並且每個用戶都屬於某一個用戶組,用戶和用戶組都有各自的許可權標記,如讀、寫、執行等,以及文件的屬性,例如所有者、所屬組等等。在使用PHP實現提升許可權的過程中,我們需要了解這些基本知識,以便正確設置文件和目錄的許可權。
二、提升許可權的方法
1.使用sudo
在Linux系統中,管理員可以使用sudo命令臨時提升自己的許可權,以執行需要root許可權才能運行的操作。如果要在PHP中使用此方法,可以使用PHP的exec函數執行sudo命令。下面是一個使用sudo命令執行某個腳本的例子:
“`
$cmd = “sudo /usr/local/in/test.sh”;
exec($cmd, $output);
print_r($output);
?>
“`
在這個例子中,我們使用sudo命令執行了一個名為test.sh的腳本,該腳本需要root許可權才能執行。執行完畢後,輸出結果會被存儲在$output數組中,然後使用print_r函數輸出。
2.修改文件許可權
在Linux系統中,管理員可以通過修改文件或目錄的許可權來提升用戶的許可權。如果要在PHP中使用此方法,可以使用PHP的chmod函數修改文件或目錄的許可權。下面是一個修改文件許可權的例子:
“`
$file = “/var/www/html/test.php”;
chmod($file, 0755);
?>
“`
在這個例子中,我們將文件/var/www/html/test.php的許可權修改為755,其中數字755表示所有者擁有讀、寫、執行許可權,組用戶和其他用戶擁有讀、執行許可權。通過修改許可權,我們可以讓PHP腳本獲得更高的執行許可權,以便執行某些需要root許可權才能運行的操作。
3.使用setuid
在Linux系統中,我們可以為某些可執行文件設置setuid標記,這樣所有者擁有執行該文件的許可權。如果要在PHP中使用此方法,我們可以設置PHP腳本的所有者為root,並且為PHP可執行文件設置setuid標記。下面是一個使用setuid的例子:
“`
$cmd = “/usr/local/php/php-cgi”;
posix_setuid(0);
chmod($cmd, 04750);
exec($cmd, $output);
print_r($output);
?>
“`
在這個例子中,我們使用PHP的posix_setuid函數將PHP腳本的所有者設置為root,在執行完畢後將PHP可執行文件/usr/local/php/php-cgi的許可權設置為4750,其中數字4750表示將setuid標記設置為4,保留原有所有者用戶組的讀許可權,並且為所有組用戶和其他用戶設置執行許可權。執行完畢後,輸出結果會被存儲在$output數組中,然後使用print_r函數輸出。
三、安全問題
在使用PHP實現提升許可權的過程中,我們需要注意安全問題,以保證系統的安全性。我們需要使用sudo或setuid時,只將需要的操作對應的程序或文件提升到root許可權,而不是整個程序或文件,這樣可以控制提升許可權的范圍,從而減少濫用許可權的風險。我們需要謹慎選擇在PHP中執行的命令或操作,並為PHP腳本設置足夠的安全保護,避免被惡意攻擊所利用。我們需要定期審核提升許可權的記錄,並嚴格控制提升許可權的文件和目錄的許可權,避免被非法訪問或篡改。
在Linux系統下,使用PHP實現提升許可權是一種十分實用的技巧,可以讓管理員或開發人員獲得更高的許可權來完成各種操作。在使用此技巧時,我們需要了解Linux系統的基本知識,正確設置文件和目錄的許可權,並注意安全問題,以保證系統的穩定性和安全性。
相關問題拓展閱讀:
linux下php文件設置成什麼許可權安全又不影響運行?linux下php文件設置成什麼許可權安全又不影響運行?
建一個用戶
這個用戶來茄銷虧運行網站程序apache
nginx之類
你的PHP文件設顫神置成
chown
你建立的用戶
然後讀寫許可權
你看斗李著辦
關於php linux 提權的介紹到此就結束了.
『伍』 為啥linux下web目錄文件許可權為777 但是php無法寫入
這個是要添加可執行許可權么 試試,chmod a+x /(文件所在目錄) 這個是給所有身份添加可執行許可權的!
PHP 的mkdir命令受apache賬號許可權限制,只能創建低於其許可權的目錄
但chmod不受其限制
代碼:
[php] view plain
function makeDir($dir, $mode = 0777) {
if (!$dir) return false;
if(!file_exists($dir)) {
mkdir($dir,$mode,true);
return chmod($dir,$mode);
} else {
return true;
}
}
你好好看看這個http://www.linuxprobe.com/chapter-05.html是不是自己有那個地方弄錯了 ,希望可以幫助你啊
『陸』 為啥linux下web目錄文件許可權為777 但是php無法寫入
虛擬機安裝linux系統,所有許可權都是777的情況下任然無法訪問,這個問題卡了我兩天,最後嘗試了以下這個方法,終於解決了。
解決:關閉SELinux
關閉SELinux的方法:
1. 臨時關閉: 使用命令setenforce 0
2. 永久關閉: 修改/etc/selinux/config文件中設置SELINUX=disabled ,然後重啟伺服器。
相關信息:
SELinux(Security-Enhanced Linux) 是美國國家安全局(NSA)對於強制訪問控制的實現,是 Linux歷史上最傑出的新安全子系統。在這種訪問控制體系的限制下,進程只能訪問那些在他的任務中所需要文件。SELinux 默認安裝在 Fedora 和 Red Hat Enterprise Linux 上,也可以作為其他發行版上容易安裝的包得到。
對訪問的控制徹底化MAC(Mandatory Access Control)
對於所有的文件,目錄,埠這類的資源的訪問,都可以是基於策略設定的,這些策略是由管理員定製的、一般用戶是沒有許可權更改的。
TE (Type Enforcement)– 對於進程只賦予最小的許可權
Te概念在 SELinux里非常的重要。它的特點是對所有的文件都賦予一個叫type的文件類型標簽,對於所有的進程也賦予各自的一個叫 domain的 標簽。Domain標簽能夠執行的操作也是由access vector在策略里定好的。
domain遷移 –防止許可權升級
對於用戶只賦予最小的許可權
『柒』 Linux 網站項目發布要做哪些配置
發布伺服器:
SFTP用戶名:
SFTP密碼:
TelNet用戶名:
TelNet密碼:
MySql 5.0及以上版本
Php 5.0及以上版本
Apache 2.0及以上版本
主站綁定域名:www.v-ec.com
默認首頁:index.html
設置php解析htm和html擴展名
博客綁定域名:www.w3cgroup.com
默認首頁:index.php
網站目錄結構:
v-ec(主站)
upload: 寫許可權
w3cgroup(博客)
upload: 寫許可權
Apache、Php及MySql設置
httpd.conf配置:
Linux路徑:/usr/local/apache/conf/httpd.conf
#忽略大小寫
LoadMole speling_mole moles/mod_speling.so
CheckSpelling On
#設置默認首頁
DirectoryIndex index.htm index.html index.php
#設置php能解析的文件
AddType application/x-httpd-php .php
AddType application/x-httpd-php .htm
AddType application/x-httpd-php .html
#設置多域名綁定,請將192.168.11.11更改為真實伺服器IP
NameVirtualHost 192.168.11.11:80
#綁定主域名www.v-ec.com,請將192.168.11.11更改為真實伺服器IP
VirtualHost 192.168.11.11:80
DocumentRoot /www/docs/v-ec
ServerName www.v-ec.com
ServerAlias www.v-ec.com
# ErrorLog logs/www.v-ec.com-error_log
# CustomLog logs/www.v-ec.com-access_log common
/VirtualHost
#綁定博客域名www.w3cgroup.com,請將192.168.11.11更改為真實伺服器IP
VirtualHost 192.168.11.11:80
# ServerAdmin [email protected]
DocumentRoot /www/docs/w3cgroup
ServerName www.w3cgroup.com
ServerAlias www.w3cgroup.com
# ErrorLog logs/www.w3cgroup.com-error_log
# CustomLog logs/www.w3cgroup.com-access_log common
/VirtualHost
php.ini設置:
Linux路徑:/usr/local/Zend/etc/php.ini
;設置開始短標簽模式
short_open_tag = On
;開啟顯示錯誤,調試狀態設置為On,正式上線設置為Off
display_errors = Off
;設置錯誤報告方式
error_reporting = E_ALL ~E_NOTICE
;啟用gd庫
extension=php_gd2.dll
;啟用mysql
extension=php_mysql.dll
;設置時區
date.timezone = PRC
my.cnf(windows系統下名為my.ini)設置:
Linux路徑:/etc/my.cnf
;默認字元
default-character-set=utf8
;表名、欄位名的不區分大小寫
lower_case_table_names = 1
;允許同時連接的數量
max_connections = 1024
;關閉連接前的等待時間
wait_timeout = 7200