Python学习笔记15:标准库之获取进程信息(os包)
2014-10-17 08:59
701 查看
Python的os包中有查询和修改进程信息的函数。
进程信息
os包中相关函数如下:
uname() 返回操作系统相关信息,类似于Linux上的uname命令。
umask() 设置该进程创建文件时的权限mask,类似于Linux上的umask命令。
get*() 查询 (*由以下代替)
uid, euid, resuid, gid, egid, resgid :权限相关,其中resuid主要用来返回saved UID。
pid, pgid, ppid, sid :进程相关。
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
saved UID和saved GID
当我们写一个Python脚本后,我们实际运行的是python这个解释器,而不是Python脚本文件。
对比C,C语言直接运行由C语言编译成的执行文件。我们必须更改python解释器本身的权限来运用saved UID机制,然而这么做又是异常危险的。
比如说,我们的python执行文件为/usr/bin/python (你可以通过$which python获知)
先看一下python解释器的权限:
$ls -l /usr/bin/python
输出:
-rwxr-xr-x root root
我们修改权限以设置set UID和set GID位
$sudo chmod 6755 /usr/bin/python
/usr/bin/python的权限成为:
-rwsr-sr-x root root
随后,我们运行文件下面test.py文件,这个文件可以是由普通用户所有:
(1000, 0, 0)
上面分别是UID,EUID,saved UID。
我们只用执行一个由普通用户拥有的python脚本,就可以得到super user的权限!
所以,这样做是极度危险的,我们相当于交出了系统的保护系统。
想像一下Python强大的功能,别人现在可以用这些强大的功能作为攻击你的武器了!使用下面命令来恢复到从前:
$sudo chmod 0755 /usr/bin/python
进程信息
os包中相关函数如下:
uname() 返回操作系统相关信息,类似于Linux上的uname命令。
umask() 设置该进程创建文件时的权限mask,类似于Linux上的umask命令。
get*() 查询 (*由以下代替)
uid, euid, resuid, gid, egid, resgid :权限相关,其中resuid主要用来返回saved UID。
pid, pgid, ppid, sid :进程相关。
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 os print(os.getuid()) print(os.getgid())<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>将上面的程序保存为py_id.py文件,分别用$python py_id.py和$sudo python py_id.py看一下运行结果
saved UID和saved GID
当我们写一个Python脚本后,我们实际运行的是python这个解释器,而不是Python脚本文件。
对比C,C语言直接运行由C语言编译成的执行文件。我们必须更改python解释器本身的权限来运用saved UID机制,然而这么做又是异常危险的。
比如说,我们的python执行文件为/usr/bin/python (你可以通过$which python获知)
先看一下python解释器的权限:
$ls -l /usr/bin/python
输出:
-rwxr-xr-x root root
我们修改权限以设置set UID和set GID位
$sudo chmod 6755 /usr/bin/python
/usr/bin/python的权限成为:
-rwsr-sr-x root root
随后,我们运行文件下面test.py文件,这个文件可以是由普通用户所有:
import os print(os.getresuid())输出:
(1000, 0, 0)
上面分别是UID,EUID,saved UID。
我们只用执行一个由普通用户拥有的python脚本,就可以得到super user的权限!
所以,这样做是极度危险的,我们相当于交出了系统的保护系统。
想像一下Python强大的功能,别人现在可以用这些强大的功能作为攻击你的武器了!使用下面命令来恢复到从前:
$sudo chmod 0755 /usr/bin/python
相关文章推荐
- 【Python】学习笔记——-7.4、获取对象信息
- 【Python学习笔记】面向对象编程:获取对象信息
- Python学习笔记11:标准库之文件管理(os包,shutil包)
- Python学习笔记 --- python获取linux脚本的打印信息
- Python标准库09 当前进程信息 (os包)
- Python标准库09 当前进程信息 (os包)
- Python标准库 当前进程信息 (部分os包)
- python自动化运维学习------使用模块psutil获取系统cpu、内存、磁盘、网络、进程等信息
- Python标准库09 当前进程信息 (部分os包)
- Python标准库09 当前进程信息 (os包)
- Python标准库09 当前进程信息 (部分os包)
- Python标准库09 当前进程信息 (os包)
- Python学习笔记10:标准库之路径和文件(os.path包,glob包)
- python基础教程_学习笔记15:标准库:一些最爱——fileinput
- python基础教程_学习笔记20:标准库:一些最爱——os
- Python学习笔记13:标准库之子进程(subprocess包)
- python学习笔记(十二)标准库os
- 初学Python的学习笔记9----面向对象编程(获取对象信息、实例属性和类属性)、面向对象高级编程(使用__slots__、使用@property)
- python基础课程_学习笔记20:标准库:有些收藏夹——os
- python基础课程_学习笔记15:标准库:有些收藏夹——fileinput