1. 程式人生 > 其它 >python環境變數查詢_Python標準庫09 當前程序資訊 (os包)

python環境變數查詢_Python標準庫09 當前程序資訊 (os包)

技術標籤:python環境變數查詢

我們在Linux的概念與體系,多次提及程序的重要性。Python的os包中有查詢和修改程序資訊的函式。學習Python的這些工具也有助於理解Linux體系。

程序資訊

os包中相關函式如下:

uname()返回作業系統相關資訊。類似於Linux上的uname命令。

umask()設定該程序建立檔案時的許可權mask。類似於Linux上的umask命令,見Linux檔案管理背景知識

get*()查詢 (*由以下代替)

 uid, euid, resuid, gid, egid, resgid  :許可權相關,其中resuid主要用來返回saved UID。 相關介紹見Linux使用者與“最小許可權”原則pid, pgid, ppid, sid                 :程序相關。相關介紹見Linux程序關係

put*()設定 (*由以下代替)

euid, egid:用於更改euid,egid。

uid, gid :改變程序的uid, gid。只有super user才有權改變程序uid和gid (意味著要以$sudo python的方式執行Python)。

pgid, sid :改變程序所在的程序組(process group)和會話(session)。

getenviron():獲得程序的環境變數

setenviron():更改程序的環境變數

例1,程序的real UID和real GID

import osprint(os.getuid())print(os.getgid())

將上面的程式儲存為py_id.py檔案,分別用$python py_id.py和$sudo python py_id.py看一下執行結果

saved UID和saved GID

我們希望saved UID和saved GID如我們在Linux使用者與“最小許可權”原則中描述的那樣工作,但這很難。原因在於,當我們寫一個Python指令碼後,我們實際執行的是python這個直譯器,而不是Python指令碼檔案。對比C,C語言直接執行由C語言編譯成的執行檔案。我們必須更改python直譯器本身的許可權來運用saved UID機制,然而這麼做又是異常危險的。

比如說,我們的python執行檔案為/usr/bin/python (你可以通過$which python獲知)

我們先看一下

$ls -l /usr/bin/python

的結果:

-rwxr-xr-x root root

我們修改許可權以設定set UID和set GID位 (參考Linux使用者與“最小許可權”原則)

$sudo chmod 6755 /usr/bin/python

/usr/bin/python的許可權成為:

-rwsr-sr-x root root

隨後,我們執行檔案下面test.py檔案,這個檔案可以是由普通使用者vamei所有:

import osprint(os.getresuid())

我們得到結果:

(1000, 0, 0)

上面分別是UID,EUID,saved UID。我們只用執行一個由普通使用者擁有的python指令碼,就可以得到super user的許可權!所以,這樣做是極度危險的,我們相當於交出了系統的保護系統。想像一下Python強大的功能,別人現在可以用這些強大的功能作為攻擊你的武器了!使用下面命令來恢復到從前:

$sudo chmod 0755 /usr/bin/python

關於指令碼檔案的saved UID/GID,更加詳細的討論見

作者:Vamei 出處:http://www.cnblogs.com/vamei

親,需要你的“分享”“在看”

6ef627e9215b63bc63ed9db80cc467a0.png

IT入門感謝關注

程式設計師題庫→程式設計師用的單詞表→練習地址:www.520mg.com/it