【问题标题】:Permission Denied even after chmod 777即使在 chmod 777 之后权限也被拒绝
【发布时间】:2016-06-25 11:44:52
【问题描述】:

我有一个 python 脚本需要访问一个文件夹中的 3 个文件。当我运行脚本时,我得到以下信息:

$ python mqtt_pub_test.py
Traceback (most recent call last):
  File "mqtt_pub_test.py", line 10, in <module>
    mqttc.tls_set(my_ca_cert, certfile=my_pri_cert, keyfile=my_key_cert)
  File "C:\Python27\lib\site-packages\paho\mqtt\client.py", line 557, in tls_set
    raise IOError(ca_certs+": "+err.strerror)
IOError: C:\Users\<user>\my_phone_certs: Permission denied

为了解决这个问题,我对该路径中的所有内容都运行了 chmod 777,甚至包括文件本身! mqttc.tls_set 中的变量指向文件夹位置。 我不知道为什么此时我仍然被拒绝许可。

有什么建议吗?

【问题讨论】:

  • 您使用的是 Windows 还是 linux?
  • @flazzarini 从文件路径结构来看,肯定是Windows。
  • 好吧,但是你如何在 Windows 上运行chmod 777
  • 你试过像脚本一样调用它吗? ./mqtt_pub_test.py(当然,在shebang中使用python)编辑:没有注意到环境。它带有 linux 的标签。
  • @flazzarini 如果我猜测一下,也许使用 cygwin?但这只是一个猜测,才能知道到底发生了什么。

标签: python cygwin


【解决方案1】:

如果您在类似 cygwin 的环境中运行(您在 cmets 中进行了描述),您应该将其用作文件描述符,或者说文件指针类似于 /cygdrive/c/Users/yourusername/phone_certs(或用于 git bash,例如 /c/Users/youruser/phone_certs)。

我真的建议您完全转移到cygwin,因为它在 Windows 上为您提供了一个更完整的类似 linux 的环境,使用起来非常方便。

【讨论】:

    【解决方案2】:

    您正在尝试访问无法编辑的文件: mqttc.tls_set(my_ca_cert, certfile=my_pri_cert, keyfile=my_key_cert)

    如果在 Linux 中,您可以作为超级用户 (sudo python mqtt_pub_test.py) 运行脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      • 2019-01-13
      • 2015-12-05
      • 2014-01-27
      • 2013-01-16
      • 1970-01-01
      相关资源
      最近更新 更多