亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python實現(xiàn)在Linux系統(tǒng)下更改當前進程運行用戶

系統(tǒng) 1523 0

在上一篇文章中,我們講了如何在linux上用python寫一個守護進程。主要原理是利用linux的fork函數(shù)來創(chuàng)建一個進程,然后退出父進程運行,生成的子進程就會成為一個守護進程。細心觀察的可能會發(fā)現(xiàn),這個守護進程的運行身份是執(zhí)行這個程序的用戶,如果把這個守護程序加入到系統(tǒng)的服務項,那么這個守護程序的執(zhí)行身份應該是root。

一個情況出現(xiàn)了,root的權限比較大,如果通過這個root身份的守護程序來進行操作,危險性是比較大的。一種好的辦法是生成一個身份為root的master進程用來接受請求,生成若干個woker進程用來處理請求,這樣就不會出現(xiàn)權限過大問題。事實上,現(xiàn)在很多軟件,nginx,mysql,apache,vsftpd等幾乎都是這樣做的。

那么,怎么樣在linux中更改子進程的運行身份呢?,實際上linux提供了這樣的函數(shù),來看一下python代碼:

            
#!/usr/bin/env python
import time,os,pwd,sys,signal
logfile="/tmp/d2.log"
#step one, get the username you want to running with
try:
    user=sys.argv[1]
except:
    user=raw_input('Please input a username in this machine you want to run this program: ')
if user=="":sys.exit(-1)
try:
    uid=pwd.getpwnam(user)
    uid=uid.pw_uid
except:
    print "Uer not exists!"
    sys.exit(-1)
#step two:Generation of daemon
pid=os.fork()
if(pid):sys.exit(0)
os.setsid()
os.chdir("/")
os.umask(0)
#step three :fork again
pid=os.fork()
if(pid==0):
    os.setuid(uid)
    os.setsid()
    os.chdir("/")
    os.umask(0)
log=open(logfile,'a')
log.write('Daemon start up at %s\n'%(time.strftime('%Y:%m:%d',time.localtime(time.time()))))
log.close()
def reload(a,b):
  log=open(logfile,'a')
  log.write('Daemon reload at %s\n'%(time.strftime('%Y:%m:%d',time.localtime(time.time()))))
  log.close()
while True:
  signal.signal(signal.SIGHUP,reload)
  time.sleep(2)


          

運行這個程序,輸入nginx(nginx為系統(tǒng)中已經添加的用戶),然后用ps aux|grep python查看系統(tǒng)當中運行的python程序,可以看到,有一個woker進程的身份已經改變了成為nginx了:

            
[root@home ~]# ps aux|grep python
root   1139 0.0 0.5  5288 2372 ?    Ss  22:40  0:00 python ./d2.py nginx
nginx   1140 0.0 0.5  5288 2360 ?    S  22:40  0:00 python ./d2.py nginx
root   1151 0.0 0.1  2336  648 pts/0  S+  22:50  0:00 grep python


          

因為身份為nginx的進程是用來處理請求的,那么一些屬于root的權限就不會被進程調用,也可以通過設置文件的權限,對進程操作單個文件進行限制,達到比較好的權限控制效果,減少安全隱患。


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲二区在线视频 | 五月婷婷色播 | 免费一级毛片麻豆精品 | 99视频热| 久久免费视频99 | 久久国产精品亚洲77777 | 亚洲 激情 | 欧美日韩一本大道香蕉欧美 | 日本αv | 毛片网站视频 | 成人影院欧美大片免费看 | 欧美 亚洲 激情 | 欧美亚洲欧美日韩中文二区 | 日本老乱video | 亚洲欧美国产日产综合不卡 | 99热精品久久 | 网站久久| 成人免费国产欧美日韩你懂的 | 2020国产成人精品视频人 | 国产精品免费_区二区三区观看 | 一级成人毛片免费观看 | 国产一级黄色录像 | 久久久精品久久视频只有精品 | 天天操夜夜操夜夜操 | h片在线播放 | 狠狠色噜噜狠狠狠狠色综合网 | 国产成人精视频在线观看免费 | 日本玖玖| 在线亚洲精品 | 国产精品久久久尹人香蕉 | 国产高清精品自在线看 | 久久久精品久久视频只有精品 | 日韩大片在线 | 成人免费视频在线 | 妖精www视频在线观看高清 | 九九精品免视看国产成人 | 欧美成人一区二区 | 亚洲精品欧美在线 | 久久天天躁夜夜躁狠狠85麻豆 | 深夜福利免费 | 亚洲色图国产精品 |