V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
kojp
V2EX  ›  Python

想给python 提个权,要怎么操作?

  •  
  •   kojp · 2012-05-28 10:52:21 +08:00 · 4361 次点击
    这是一个创建于 4322 天前的主题,其中的信息可能已经有所发展或是发生改变。
    因为,要测试一些东西。需要频繁改HOSTS。一直就想弄个脚本来实现~~~~,今天努力了。
    但是未遂:-(


    这招行不通。说权限不够
    dest_dir="C:\\WINDOWS\\system32\\drivers\\etc\\hosts"
    f=open("dest_dir","a+")
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    file_path = "C:\\WINDOWS\\system32\\drivers\\etc\\hostsnew"
    os.remove(dest_dir)
    aa='C:\\WINDOWS\\system32\\drivers\\etc\\hosts'
    os.copy(file_path,dest_dir)

    这招也行不通,直接不给提示,只说错误


    PS:系统xp
    23 条回复    1970-01-01 08:00:00 +08:00
    CoX
        1
    CoX  
       2012-05-28 10:55:57 +08:00
    下下策,直接把用户加为管理员吧:)
    ayang23
        2
    ayang23  
       2012-05-28 11:02:44 +08:00
    使用runas,或者sysinternal工具包里的psexec.exe,使用管理员账户运行你的python命令。
    treo
        3
    treo  
       2012-05-28 11:03:52 +08:00
    如果你有system权限的话,直接修改hosts的权限,给相应用户modify权限不就行了
    dongbeta
        4
    dongbeta  
       2012-05-28 11:11:11 +08:00
    试试 gearman,提权好工具
    kojp
        5
    kojp  
    OP
       2012-05-28 12:24:19 +08:00
    @treo
    @CoX

    Win下的权限也需要这么复杂吗 ?
    我用 的是 Administrator用户 已经有权限直接改 hosts了 ,只是想用脚本来实现 ,会更方便些 . :-(


    @ayang23
    一会儿试试你的法子
    c
        6
    c  
       2012-05-28 12:45:05 +08:00
    修改host权限为everyone
    CoX
        7
    CoX  
       2012-05-28 12:48:32 +08:00
    @kojp 好吧,我本地试了试,没有问题。
    难道是默认的只读属性你没手动去掉?
    9hills
        8
    9hills  
       2012-05-28 12:48:59 +08:00
    @kojp win下的权限比Linux复杂多了。。

    尤其是win下的Administrator并不是系统最高权限,所以还得依赖dirty hack来做一些事情。。。
    Linux下只需要以root权限运行脚本,就可以干任何事情
    ljbha007
        9
    ljbha007  
       2012-05-28 12:54:31 +08:00
    直接用管理员身份打开python解释器或者管理员身份打开命令行然后运行python解释器就好了
    kojp
        10
    kojp  
    OP
       2012-05-28 14:03:54 +08:00
    @c
    谢谢 ,你的思路很 ok! 我是用手机在上 ,但能确定这条路是能行的通的 !

    But,适用性怎么解决 ?
    我是要在内多好多机器上执行这个脚本. :-(
    allenm
        11
    allenm  
       2012-05-28 14:09:19 +08:00
    我也正在写一个应用,和LZ需求类似,我在 XP 下直接是 open(host,'w') 这样打开的,然后直接写入,貌似没遇到权限问题,代码在此:https://github.com/allenm/sync-hosts/blob/master/client/libs/writehosts.py
    Weakdancer
        12
    Weakdancer  
       2012-05-28 15:15:57 +08:00
    我有个需求也和楼主类似。在win7下,就算是普通用户,安装软件时系统会提醒用户是否放权。
    就是这个请求放权,我一直搞不清楚是怎么触发的。
    c
        13
    c  
       2012-05-28 15:17:43 +08:00
    如果你是管理员,调用命令修改
    Weakdancer
        14
    Weakdancer  
       2012-05-28 15:31:54 +08:00
    kojp
        15
    kojp  
    OP
       2012-05-28 15:52:18 +08:00
    @Weakdancer 你的问题,只要下载一个软件应该不可以解决了。好像就叫 一键获取权限。这是跟WIN7的特例吧。


    @allenm

    谢了,我试试看
    @c 什么命令?
    @CoX 谢谢测试;这个,我也得试试。但会存在和"修改host权限为everyone"一样的蔽端
    c
        16
    c  
       2012-05-28 16:17:32 +08:00
    @kojp

    F:\>icacls c:\Windows\System32\drivers\etc\HOSTS /grant Everyone:F
    已处理的文件: c:\Windows\System32\drivers\etc\HOSTS
    已成功处理 1 个文件; 处理 0 个文件时失败
    CoX
        17
    CoX  
       2012-05-28 17:30:17 +08:00
    @kojp 我的是域的账户,没有给everyone的权限
    kojp
        18
    kojp  
    OP
       2012-05-29 09:52:58 +08:00
    我是那种慢热性的,今天继续折腾这个问题。
    @allenm
    看了一下代码
    这行你漏写了一个 (cont哟,呵呵)def writeHost( hosts ):
    本地运行依旧是个权限问题。哈哈,可能系统环境不一样。
    allenm
        19
    allenm  
       2012-05-29 09:55:55 +08:00
    @kojp THX , 这个之前是写的 writeHostCont ,然后后来觉得有点长,就把 cont 去掉了,但是最后面的测试调用代码还没去掉,因为后来都是在其他地方调用这个了,呵呵。我去改掉。
    kojp
        20
    kojp  
    OP
       2012-05-29 10:00:29 +08:00
    谢谢以上各位!
    @CoX 只读去掉,一切就正常了!哈哈~~~



    @c everyone就有点不太安全了,感觉。不过icacls 只在WIN7和VISTA才有吧。XP下的是cacls
    命令运行格式好是一样的。成功
    cacls c:\windows\system32\drivers\etc\hosts /grant Everyone:F

    目前想的办法是。

    在python里面调用cacls,修改掉hosts的只读属性。然后按照原来的(也就是 Reply @allenm的那个一路走下去)再往win7/vista里面扩展一下。估计就算是一个成品了。哈哈,到时候传git上~~~
    allenm
        21
    allenm  
       2012-05-29 10:07:46 +08:00
    @kojp 话说,你是不是想和我做差不多的东西呢?我是想做一个通过 web 管理 N 个客户端的 hosts 的工具。现在已经初步成型了,正在写分组管理的部分。如果想法差不多,能不能一起做呢?哈哈
    kojp
        22
    kojp  
    OP
       2012-05-29 10:27:37 +08:00
    https://github.com/r00te4/tips/blob/master/pyhosts/pyhosts.py 献丑~~~
    @allenm 呃,远不如你那么高端呀。。

    我们是最近内部上了一个WEB项目。需要进行各种内部测试。DNS服务器那边没有权限改。只能是改参与测试用户的HOSTS了。呵呵。--------------最近各种眸乱,各种忙。以后有机会一起折腾呀。:-)
    allenm
        23
    allenm  
       2012-05-29 10:36:04 +08:00
    @kojp 嗯嗯,web 开发中,改 hosts 是每天都要做的事情,所以我才想做这个项目。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5492 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 01:36 · PVG 09:36 · LAX 18:36 · JFK 21:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.