IOError:13,通过 Python 写入 /etc/hosts 时“权限被拒绝”

2023-12-05

我正在开发一个 Python 应用程序,需要访问主机文件以添加几行。一切都在我的测试文件上运行,但是当我告诉程序实际修改 /etc/hosts 中的主机文件时,我收到 IOError 13。据我了解,我的应用程序没有 root 权限。

我的问题是,我该如何解决这个问题?有没有办法提示用户输入密码?如果我在 Windows 计算机上运行该应用程序,该过程会有什么不同吗?

这是有问题的代码:

f = open("/etc/hosts", "a")
f.write("Hello Hosts File!")

另外,我计划在最终产品中使用 py2app 和 py2exe。他们会帮我处理 root 权限问题吗?


处理此问题的最简单方法是将更改写入临时文件,然后运行程序来覆盖受保护的文件。就像这样:

with open('/etc/hosts', 'rt') as f:
    s = f.read() + '\n' + '127.0.0.1\t\t\thome_sweet_home\n'
    with open('/tmp/etc_hosts.tmp', 'wt') as outf:
        outf.write(s)

os.system('sudo mv /tmp/etc_hosts.tmp /etc/hosts')

当你的Python程序运行sudo时,sudo程序将提示用户输入他/她的密码。如果您希望这是基于 GUI 的,您可以运行 GUI sudo,例如“gksu”。

在 Windows 上,hosts 文件隐藏在 \Windows 下的几个子目录中。您可以使用相同的通用技巧,但 Windows 没有 sudo 命令。这是对等价物的讨论:

https://superuser.com/questions/42537/is-there-any-sudo-command-for-windows

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IOError:13,通过 Python 写入 /etc/hosts 时“权限被拒绝” 的相关文章

随机推荐

  • MKMapView持续监控航向

    我在位于我的顶部的图层中渲染一些内容MKMapView 除了旋转之外 整个事情都运转良好 当用户旋转地图时 我需要能够旋转我在自己的图层中渲染的内容 我发现的标准答案是使用 NSLog heading f self mapView came
  • mozilla 和 safari 的仪表栏样式

    I am using the following css on my meter bars but somehow the styling does not work on safari see below screenshots I am
  • 如何停止 while 循环

    这个 while 循环永远不会结束 例如 当我输入错误的密码时 它会一遍又一遍地进入 密码错误 部分 Logo inFile open UsernamePassword txt if inFile cout lt lt Unable to
  • 在http标头中设置身份验证令牌

    我一直在关注关于如何设置身份验证令牌的railscasthttp railscasts com episodes 352 securing an api view asciicast 我已经很好地设置了我的应用程序 它使用authentic
  • 获取字符串的每个组合

    我有一个组合学作业 涉及从特定的字符串组合中获取长度小于或等于 6 的每个单词 在本例中 它是 S a ab ba 教授刚刚开始列出它们 但我认为用程序来解决会更容易 唯一的问题是我无法得到一个好的算法来实际计算每个可能的选项 如果有人可以
  • Onchange 事件运行不佳

    我创建了以下 html 页面
  • 必须使用 fibo_ 实例作为第一个参数调用未绑定方法 f() (改为使用 classobj 实例)

    在 Python 中 我尝试在类中运行一个方法 但出现错误 Traceback most recent call last File C Users domenico Desktop py main py line 8 in
  • 将 sqlite3 db 关联到 iPhone 应用程序

    我正在尝试将 SQLite3 数据库文件与我们的应用程序关联起来 以便可以轻松地从电子邮件打开备份的数据库 然而 以下内容似乎不起作用 因为 邮件 仍然无法识别该文件 在 iPad 和 iPhone 4 上
  • Springfox swagger - 没有 Spring Boot jersey 和 gradle 的 api 文档

    我有一个带有 jersey 和 gradle 的 spring boot 应用程序 我正在尝试使用 springfox 自动生成 API 文档 我已按照此处的步骤操作 http springfox github io springfox d
  • 你能用 pty 做什么?

    阅读了各种资源 包括http www linusakesson net programming tty 我对伪终端的结构和使用仍然很困惑和好奇 在 Linux 终端 bash 不是 tty 中 我们有三个流 stdin stdout std
  • C++ 中初始化变量的 = 和 {} 语法之间的差异

    我读过相当多的 C 代码 并且遇到过两种初始化变量的方法 方法一 int score 0 方法二 int score 我知道int score 会将分数初始化为 0 因此int score 0 这两者有什么区别 我读过了初始化 括号与等号但
  • 字符串生成器与列表

    我正在读取包含数百万行的多个文件 并且正在创建具有特定问题的所有行号的列表 例如 如果特定字段留空或包含无效值 所以我的问题是 跟踪可能超过一百万行的数字列表的最有效的日期类型是什么 使用字符串生成器 列表或其他东西会更有效吗 我的最终目标
  • 如何保护共享工作簿中的工作表?

    我有一个将在多个用户之间共享的工作簿 将运行宏以在 Excel 工作表中输入来自用户表单的数据 该工作表需要受到保护 以便用户无法对其进行编辑 我有 ws Unprotect 我的宏代码 ws Protect UserInterfaceOn
  • 有没有办法降低禁用按钮上图像的饱和度?

    有没有办法可以降低禁用按钮中图像的饱和度 例如 ICommand CanExecute false 或者我需要使用单独的图像 样式 触发器 我为此使用了一种特殊的样式 当按钮被禁用时 它会降低图像的不透明度 是的 如果按钮绑定到命令 这也有
  • initFields(scales = scales) 中的错误:找不到函数“initRefFields”

    我的代码中有一个 ggplot2 绘图函数 当文件作为 R 代码来源时 该函数工作正常 但是当我将此函数包含在 R 包中时 当然 我在包的描述和命名空间文件中包含 ggplot2 和比例 我得到以下内容错误 Error in initFie
  • 实体框架代码优先延迟加载

    我有两个对象类 public class User public Guid Id get set public string Name get set Navigation public ICollection
  • 对 big.matrix 进行子集化的正确方法

    我想知道是否有一种 正确 的方法来对 R 中的 big matrix 对象进行子集化 对矩阵进行子集化很简单 但该类总是恢复为 矩阵 当处理像这样的小数据集时 这不是问题 但对于大量数据集 但对于极大的数据集 子集仍然可以从 big mat
  • 你能将“指向函数指针的指针”转换为 void*

    受到对我的答案的评论的启发here 这个步骤序列在 C 标准 C11 中合法吗 创建一个函数指针数组 获取指向第一个条目的指针并将其强制转换指向函数指针的指针 to void 对其执行指针算术void 将其投射回指向函数指针的指针并取消引用
  • JVM会自动关闭文件吗?

    我在某处读到 没有必要自己关闭它 只需保留它 JVM 会帮助你做到这一点 这是真的吗 假设我需要从文件中获取数据 Source fromFile fileName getLines 直接地 无需 val source Source from
  • IOError:13,通过 Python 写入 /etc/hosts 时“权限被拒绝”

    我正在开发一个 Python 应用程序 需要访问主机文件以添加几行 一切都在我的测试文件上运行 但是当我告诉程序实际修改 etc hosts 中的主机文件时 我收到 IOError 13 据我了解 我的应用程序没有 root 权限 我的问题