摘要:警告通過(guò)函數(shù),可以檢索很多敏感數(shù)據(jù),例如以及其它函數(shù)。當(dāng)開啟了安全模式,函數(shù)并不會(huì)執(zhí)行任何的權(quán)限檢測(cè)。返回當(dāng)前進(jìn)程所在的當(dāng)前控制終端的路徑名返回值成功時(shí),返回路徑名。返回值返回一個(gè)關(guān)聯(lián)數(shù)組,下標(biāo)為定義的各種限制。
POSIX: 簡(jiǎn)介:
該模塊包含了定義在 IEEE 1003.1(POSIX.1)標(biāo)準(zhǔn)文檔里的函數(shù)的接口,通過(guò)其它手段無(wú)法訪問(wèn)。
警告:
通過(guò)POSIX函數(shù),可以檢索很多敏感數(shù)據(jù),例如:posix_getpwnam()以及其它函數(shù)。當(dāng)開啟了安全模式,POSIX函數(shù)并不會(huì)執(zhí)行任何的權(quán)限檢測(cè)。因此,當(dāng)正在上述的環(huán)境下操作,強(qiáng)烈建議關(guān)閉POSIX擴(kuò)展(在配置行中使用 "--disable-posix")。
POSIX函數(shù)默認(rèn)是啟用的,可通過(guò) "--disable-posix" 來(lái)禁用POSIX函數(shù)
預(yù)定義常量,分3大類:
1.posix_access_constants - 權(quán)限相關(guān),php5.1.0開始支持:
POSIX_F_OK - 檢查文件是否存在 POSIX_R_OK - 檢查文件是否存在,且具有 "讀" 權(quán)限 POSIX_W_OK - 檢查文件是否存在,且具有 "寫" 權(quán)限 POSIX_X_OK - 檢查文件是否存在,且具有 "執(zhí)行" 權(quán)限
2.posix_mknod_constants - 文件類型,php5.1.0開始支持:
POSIX_S_IFBLK - 塊特殊文件 POSIX_S_IFCHR - 字符特殊文件 POSIX_S_IFIFO - FIFO(pipe-管道)特殊文件 POSIX_S_IFREG - 普通文件 POSIX_S_IFSOCK - socket
3.posix_setrlimit_constants - php7.0.0開始支持:
函數(shù) posix_access(string $file[, int $mode = POSIX_F_OK])你不妨看一下下面參考頁(yè),關(guān)于你的操作系統(tǒng)的setrlimit()的注意點(diǎn),有關(guān)于實(shí)現(xiàn)POSIX的limits的差異的解釋,甚至是跨操作系統(tǒng)的聲明。
POSIX_RLIMIT_AS - 進(jìn)程地址空間的最大尺寸,單位是bytes。也可查看PHP的 "memory_limit" 配置指令 POSIX_RLIMIT_CORE - 核心文件的最大尺寸。如果設(shè)置為0,將不會(huì)生成核心文件 POSIX_RLIMIT_CPU - 進(jìn)程可使用的CPU最大時(shí)間,單位是秒。當(dāng)達(dá)到軟限制(soft limit),將發(fā)送一個(gè) "SIGXCPU" 信號(hào),這個(gè)信號(hào)可以被 "pcntl_signal()" 捕獲。依賴于操作系統(tǒng),每秒都會(huì)發(fā)送額外的 "SIGXCPU"信號(hào),直到達(dá)到硬限制(hard limit),基于這點(diǎn),會(huì)發(fā)送一個(gè)無(wú)法捕獲的 "SIGKILL" 信號(hào)。也可查看
"set_time_limit()"POSIX_RLIMIT_DATA - 進(jìn)程數(shù)據(jù)段的最大尺寸,單位是bytes。這基本不會(huì)對(duì)PHP的執(zhí)行造成任何影響,除非使用了一個(gè)叫做 "brk()" 或 "sbrk()"的擴(kuò)展
POSIX_RLIMIT_FSIZE - 進(jìn)程可以創(chuàng)建的文件的最大尺寸,單位是bytes POSIX_RLIMIT_LOCKS - 進(jìn)程可以創(chuàng)建的最大的鎖定數(shù)量。僅支持非常老版的linux內(nèi)核 POSIX_RLIMIT_MEMLOCK - 內(nèi)存中,可以鎖定的最大字節(jié)數(shù) POSIX_RLIMIT_MSGQUEUE - 可以分配給 POSIX 消息隊(duì)列的最大字節(jié)數(shù)。PHP不支持POSIX 消息隊(duì)列,因此,這個(gè)限制沒(méi)有任何影響,除非,你使用了一個(gè)實(shí)現(xiàn)了支持 "POSIX_RLIMIT_MSGQUEUE" 的擴(kuò)展 POSIX_RLIMIT_NICE - 進(jìn)程可以設(shè)置 "renice"(linux進(jìn)程的優(yōu)先級(jí)之類的) 的最大值。值可以被設(shè)置為:20-我們?cè)O(shè)置的值,作為資源限制,不能設(shè)置為負(fù) POSIX_RLIMIT_NOFILE - 進(jìn)程可以打開的 >(大于)最大文件描述符數(shù)字的值。 POSIX_RLIMIT_NPROC - 進(jìn)程的真實(shí)用戶ID可以創(chuàng)建的進(jìn)程(和線程、或者線程,在一些操作系統(tǒng)上)的最大個(gè)數(shù)。 POSIX_RLIMIT_RSS - 進(jìn)程的常駐集合的最大尺寸,單位是 pages POSIX_RLIMIT_RTPRIO - 通過(guò) "sched_setscheduler()" 和 "sched_setparam()" 系統(tǒng)調(diào)用,可以設(shè)置的最大真實(shí)時(shí)間優(yōu)先。 POSIX_RLIMIT_RTTIME - 如果使用真實(shí)的時(shí)間調(diào)度,在不進(jìn)行阻塞的系統(tǒng)調(diào)用下,進(jìn)程可以消耗掉最大CPU時(shí)間,單位是微秒 POSIX_RLIMIT_SIGPENDING - 進(jìn)程的真實(shí)用戶ID,可以設(shè)置的信號(hào)隊(duì)列的最大個(gè)數(shù) POSIX_RLIMIT_STACK - 進(jìn)程棧的最大尺寸,單位是bytes POSIX_RLIMIT_INFINITY - 用于指明資源大小不受限制(給資源限制設(shè)置了一個(gè)無(wú)限大值)。
查看用戶對(duì)文件是否具有指定的權(quán)限
posix_ctermid()參數(shù):
$file - 測(cè)試的文件名 $mode - 權(quán)限,包含:POSIX_F_OK, POSIX_R_OK, POSIX_W_OK, POSIX_X_OK的一個(gè)或多個(gè)。
返回當(dāng)前進(jìn)程所在的當(dāng)前控制終端的路徑名
返回值: 成功時(shí),返回路徑名。否則返回false,并設(shè)置錯(cuò)誤號(hào)。可通過(guò) "posix_get_last_error()" 來(lái)獲取posix_errno() - posix_get_last_error()別名 posix_get_last_error()
檢索最后的posix函數(shù)調(diào)用失敗,返回的錯(cuò)誤號(hào)。錯(cuò)誤號(hào)關(guān)聯(lián)的錯(cuò)誤消息,可通過(guò) "posix_strerror()" 來(lái)獲取
posix_strerror(int $errno)通過(guò)給定的錯(cuò)誤號(hào),返回關(guān)聯(lián)的POSIX系統(tǒng)錯(cuò)誤消息
posix_getcwd()獲取當(dāng)前腳本的工作目錄的絕對(duì)路徑
posix_getegid()返回當(dāng)前進(jìn)程的有效用戶組ID
posix_geteuid()返回當(dāng)前進(jìn)程的有效用戶ID
posix_getgid()返回當(dāng)前進(jìn)程的真實(shí)用戶組ID
posix_getuid()返回當(dāng)前進(jìn)程的真實(shí)用戶ID
posix_getgrgid(int $gid)通過(guò)傳入組ID,獲取給定的用戶組的相關(guān)信息
posix_getgrnam(string $name)通過(guò)傳入組名稱,獲取給定的用戶組的相關(guān)信息
posix_getgroups()獲取當(dāng)前進(jìn)程的用戶組集合
返回值:
返回一個(gè)索引數(shù)組,包含組id的集合
返回?fù)碛挟?dāng)前進(jìn)程的用戶的登陸名
posix_getpgid(int $pid)示例:
獲取指定進(jìn)程的進(jìn)程組標(biāo)識(shí)符(進(jìn)程組id),返回整數(shù)
posix_getpgrp()注意:
該函數(shù)不是POSIX函數(shù),但是常見(jiàn)于BSD和System V的系統(tǒng)上。如果系統(tǒng)不支持該函數(shù),在編譯時(shí)就不會(huì)被包含進(jìn)來(lái)。應(yīng)該提前使用 "function_exists()" 檢查,存在再使用
獲取當(dāng)前進(jìn)程的進(jìn)程組標(biāo)識(shí)符(進(jìn)程組id),返回整數(shù)
可查看:POSIX.1 和 POSIX系統(tǒng)上的getpgrp(2) 幫助手冊(cè),獲取關(guān)于進(jìn)程組的更多信息
獲取當(dāng)前進(jìn)程的進(jìn)程標(biāo)識(shí)符(進(jìn)程id)
posix_getppid()獲取當(dāng)前進(jìn)程的父進(jìn)程標(biāo)識(shí)符(父進(jìn)程id)
posix_getpwnam(string $username)通過(guò)用戶名,獲取給定用戶的信息
posix_getpwuid(int $uid)返回值:
成功,返回一個(gè)關(guān)聯(lián)數(shù)組,下標(biāo)如下,失敗返回false: name - 是一個(gè)短的、通常少于16個(gè)字符,非真實(shí)的、全名。應(yīng)該同調(diào)用函數(shù)時(shí),傳遞的$username參數(shù)一致,截?cái)喽嘤嗟淖址? passwd - 返回加密后的用戶密碼的字符串。通常,例如系統(tǒng)的shadow密碼,使用 "*" 代替 uid - 用戶ID gid - 用戶組ID。使用 posix_getgrgid() 獲取用戶組名和它的成員列表 gecos - 一個(gè)過(guò)時(shí)的元素,包含了 "," 分隔的用戶的全名、辦公室電話、辦公室號(hào)碼以及家庭電話號(hào)碼。大多數(shù)的系統(tǒng)上,只有用戶的全名有效。 dir - 用戶家目錄的絕對(duì)路徑 shell - 可執(zhí)行的用戶的默認(rèn)shell的絕對(duì)路徑 示例: 輸出: Array( [name] => tom [passwd] => x [uid] => 10000 [gid] => 42 [gecos] => "tom,,," // "," 分隔 [dir] => "/home/tom" [shell] => "/bin/bash" )
通過(guò)用戶id,獲取給定用戶的信息
posix_getrlimit()返回一個(gè)關(guān)于當(dāng)前資源的軟限制和硬限制的信息數(shù)組
posix_getsid(int $pid)每個(gè)資源有一個(gè)關(guān)聯(lián)的軟限制和硬限制。 軟限制-查看linux系統(tǒng) 硬限制-查看linux系統(tǒng) 一個(gè)無(wú)特權(quán)的進(jìn)程,可能只能設(shè)置它的軟限制為:0-硬限制大小,并且必須低于硬限制的值。 返回值: 返回一個(gè)關(guān)聯(lián)數(shù)組,下標(biāo)為定義的各種限制。每個(gè)限制都有一個(gè)軟限制和硬限制。 core - 核心文件的最大尺寸。當(dāng)為0,不會(huì)創(chuàng)建核心文件。核心文件大于該設(shè)定值,將會(huì)被截?cái)? totalmem - 進(jìn)程的內(nèi)存最大值,單位為bytes virtualmem - 進(jìn)程的虛擬內(nèi)容的最大值,單位為bytes data - 進(jìn)程的數(shù)據(jù)段的最大值,單位為bytes stack - 進(jìn)程棧的最大值,單位為bytes rss - RAM中常駐的虛擬頁(yè)面的最大個(gè)數(shù) maxproc - 可被調(diào)用進(jìn)程的真實(shí)用戶ID創(chuàng)建的最大進(jìn)程數(shù)量 memlock - 在RAM中,可被鎖定的內(nèi)存的最大字節(jié)數(shù) cpu - 進(jìn)程允許使用的最大CPU時(shí)間 filesize - 進(jìn)程可以創(chuàng)建的文件的最大尺寸,單位是bytes openfiles - 進(jìn)程可以打開的最大文件數(shù)量 示例: 輸出: Array( [soft core] => 0 [hard core] => unlimited [soft data] => unlimited [hard data] => unlimited [soft stack] => 8388608 [hard stack] => unlimited )
返回指定進(jìn)程的session ID。進(jìn)程的session ID是會(huì)話領(lǐng)導(dǎo)者(session leader)的進(jìn)程組id
posix_initgroups(string $name, int $base_group_id)對(duì)指定的用戶,計(jì)算其組訪問(wèn)列表
參數(shù):posix_kill(int $pid, int $sig)
$name - 指定的用戶名
$base_group_id - 密碼文件里的組ID
##posix_isatty(mixed $fd)
檢查文件描述符是否是一個(gè)有效的終端類型的設(shè)置(是否是tty)
參數(shù):
$fd - 文件描述符,期望是一個(gè)文件資源或一個(gè)整型。整型將被假定為可以直接傳遞到基礎(chǔ)系統(tǒng)調(diào)用的文件描述符。幾乎在所有情況下,提供的是一個(gè)文件資源。
給指定的進(jìn)程發(fā)送一個(gè)$sig指定的信號(hào)!
參數(shù):
$pid - 進(jìn)程idposix_mkfifo(string $pathname, int $mode)
$sig - PCNTL信號(hào)預(yù)定義常量
創(chuàng)建一個(gè)特殊的FIFO文件,存在于文件系統(tǒng),并且作為進(jìn)程的雙向通信橋梁
posix_mknod(string $pathname, int $mode[, int $major = 0[, int $minor = 0]])參數(shù):
$pathname - FIFO文件(管道) $mode - 必須是8進(jìn)制格式。新創(chuàng)建的FIFO的權(quán)限,也依賴于當(dāng)前的umask()設(shè)置。新創(chuàng)建的文件權(quán)限是(mode & ~umask)
創(chuàng)建一個(gè)特殊的或者一般的文件
參數(shù):posix_setegid(int $gid)
$pathname - 創(chuàng)建的文件
$mode - 這個(gè)參數(shù)由文件類型(POSIX_S_IFREG,POSIX_S_IFCHR, POSIX_S_IFBLK, POSIX_S_IFIFO,POSIX_S_IFSOCK其中一個(gè))和訪問(wèn)權(quán)限(0664等),按位或組成。
$major -主設(shè)備內(nèi)核標(biāo)識(shí)符(當(dāng)使用S_IFCHR或S_IFBLK時(shí),需要傳遞該參數(shù)) $minor - 監(jiān)控設(shè)備內(nèi)核標(biāo)識(shí)符
設(shè)置當(dāng)前進(jìn)程的有效組ID。這是個(gè)特權(quán)函數(shù),需要操作系統(tǒng)上具有特殊權(quán)限(通常是root權(quán)限),才能執(zhí)行該函數(shù)。posix_seteuid(int $uid)
設(shè)置當(dāng)前進(jìn)程的有效用戶ID。這是個(gè)特權(quán)函數(shù),需要操作系統(tǒng)上具有特殊權(quán)限(通常是root權(quán)限),才能執(zhí)行該函數(shù)。posix_setgid(int $gid)
設(shè)置當(dāng)前進(jìn)程的真實(shí)用戶組ID。這是個(gè)特權(quán)函數(shù),需要操作系統(tǒng)上具有特殊權(quán)限(通常是root權(quán)限),才能執(zhí)行該函數(shù)。函數(shù)調(diào)用的適當(dāng)?shù)捻樞蚴牵菏紫日{(diào)用 posix_setgid(),最后調(diào)用 posix_setuid()。
注意:如果是超級(jí)用戶調(diào)用,也會(huì)設(shè)置有效用戶組ID
設(shè)置指定進(jìn)程的進(jìn)程組IDposix_setrlimit(int $resource, int $softlimit, int $hardlimit)
設(shè)置給定系統(tǒng)資源的軟限制和硬限制。
參數(shù): $resource - 是posix_setrlimit_constants預(yù)定義常量 $softlimit -posix_setsid()
軟限制,任意設(shè)置或者 POSIX_RLIMIT_INFINITY - 無(wú)限大 $hardlimit - 硬限制,任意設(shè)置或者
POSIX_RLIMIT_INFINITY - 無(wú)限大
設(shè)置當(dāng)前進(jìn)程為session leader(會(huì)話領(lǐng)導(dǎo)者)posix_setuid(int $uid)
設(shè)置當(dāng)前進(jìn)程的真實(shí)用戶ID。這是個(gè)特權(quán)函數(shù),需要操作系統(tǒng)上具有特殊權(quán)限(通常是root權(quán)限),才能執(zhí)行該函數(shù)。posix_times()
獲取當(dāng)前CUP使用信息
posix_ttyname($mixed $fd)返回值:
返回一個(gè)關(guān)聯(lián)數(shù)組ticks - 重啟到現(xiàn)在,已經(jīng)過(guò)去的 clock ticks 個(gè)數(shù) utime - 當(dāng)前進(jìn)程使用的用戶時(shí)間 stime - 當(dāng)前進(jìn)程使用的系統(tǒng)時(shí)間 cutime - 當(dāng)前進(jìn)程和子進(jìn)程使用的用戶時(shí)間 cstime - 當(dāng)前進(jìn)程和子進(jìn)程使用的系統(tǒng)時(shí)間警告:
返回當(dāng)前打開的文件描述符所在的終端設(shè)備的絕對(duì)路徑
posix_uname()參數(shù):
$fd - 文件描述符,期望是一個(gè)文件資源或一個(gè)整型。整型將被假定為可以直接傳遞到基礎(chǔ)系統(tǒng)調(diào)用的文件描述符。幾乎在所有情況下,提供的是一個(gè)文件資源。
獲取系統(tǒng)相關(guān)信息。
返回值: 返回一個(gè)關(guān)于系統(tǒng)信息的關(guān)聯(lián)數(shù)組
sysname - 操作系統(tǒng)名稱(例如:Linux) nodename - 系統(tǒng)名稱(例如:valiant) release - 操作系統(tǒng)的發(fā)布版(例如:2.6.15-1-686) version - 操作系統(tǒng)版本(例如:#4 Tue Jul 20 17:01:36 MEST 1999) machine - 系統(tǒng)平臺(tái)(例如:i586) domainname - DNS域名(例如:baidu.com)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/28301.html
摘要:本節(jié)主要講解常用函數(shù)和進(jìn)程池的概念,也會(huì)涉及到守護(hù)進(jìn)程的知識(shí)。所以任何時(shí)候,建議預(yù)先創(chuàng)建好進(jìn)程,也就是使用進(jìn)程池的方式實(shí)現(xiàn)。 本節(jié)主要講解Posix常用函數(shù)和進(jìn)程池的概念,也會(huì)涉及到守護(hù)進(jìn)程的知識(shí)。本節(jié)難度較低。 Posix常用函數(shù) posix_kill 向指定pid進(jìn)程發(fā)送信號(hào)。成功時(shí)返回 TRUE , 或者在失敗時(shí)返回 FALSE 。 bool posix_kill ( int $...
摘要:多進(jìn)程中與多進(jìn)程相關(guān)的兩個(gè)重要拓展是和。函數(shù)執(zhí)行期間,主進(jìn)程除了等待無(wú)法處理其他任務(wù),所以一般不認(rèn)為這是多進(jìn)程編程。回收子進(jìn)程有兩種方式,一種是主進(jìn)程調(diào)用函數(shù)等待子進(jìn)程結(jié)束另外一種是處理信號(hào)。 轉(zhuǎn)載請(qǐng)注明文章出處: https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎(chǔ) web請(qǐng)求 cookie web響應(yīng) session 數(shù)據(jù)庫(kù)操作 加解...
摘要:限于,可選的文件描述符序列,用于在父子進(jìn)程間保持開放。如果設(shè)置了,表示派生的進(jìn)程號(hào)子進(jìn)程返回碼,表示進(jìn)程未終止。如果未捕獲標(biāo)準(zhǔn)錯(cuò)誤返回方法如果非,拋出異常異常模塊的異常基類子進(jìn)程執(zhí)行超時(shí)。 常量 subprocess.DEVNULL:可傳遞給stdin, stdout, stderr參數(shù)的特殊值,意味著將使用特殊文件os.devnull重定向輸入輸出 subprocess.PIPE:可...
摘要:我們知道,發(fā)起函數(shù)調(diào)用,需要構(gòu)造一個(gè)棧幀。構(gòu)造棧幀的具體實(shí)現(xiàn)細(xì)節(jié)的選擇,被稱為調(diào)用慣例。要想完成這個(gè)函數(shù)調(diào)用邏輯,就要運(yùn)行時(shí)構(gòu)造棧幀,生成參數(shù)壓棧和清理堆棧的工作。目前,幾乎支持全部常見(jiàn)的架構(gòu)。 原文:http://nullwy.me/2018/01/java...如果覺(jué)得我的文章對(duì)你有用,請(qǐng)隨意贊賞 遇到的問(wèn)題 前段時(shí)間開發(fā)的時(shí)候,遇到一個(gè)問(wèn)題,就是如何用 Java 實(shí)現(xiàn) chdir...
閱讀 2012·2021-11-15 18:09
閱讀 905·2021-09-06 15:13
閱讀 2645·2021-08-23 09:43
閱讀 2027·2019-08-30 15:54
閱讀 2221·2019-08-30 13:56
閱讀 2487·2019-08-26 11:31
閱讀 3083·2019-08-26 10:56
閱讀 708·2019-08-26 10:28