【问题标题】:OSError: [Error 1] Operation not permittedOSError:[错误 1] 不允许操作
【发布时间】:2012-06-11 20:40:18
【问题描述】:

我正在尝试运行一个使用后链接器创建的二进制文件 (xFiles.bin.addr_patched) 的 python 脚本。但是,我收到此错误。

File "abc.py", line 74, in ParseCmd
shutil.copy(gOptions.inputX, gWorkingXFile)
File "/usr/lib/python2.6/shutil.py", line 89, in copy
copymode(src, dst)
File "/usr/lib/python2.6/shutil.py", line 66, in copymode
os.chmod(dst, mode)

OSError: [Errno 1] Operation not permitted: 'myPath/xFiles.bin.addr_patched'

当我通过 ls -l 检查这个 xFiles.bin 的权限时,它显示

-rwxrwxrwx 1 nobody  nogroup 

我认为错误是因为此文件是由其他应用程序创建的,我正在运行的 python 脚本无权访问它。由于我是 ubuntu 的初学者,我真的不知道如何解决它。对于如何解决这个问题,有任何的建议吗?

已解决:

作为建议的答案之一:chown username:groupname file name 解决了这个问题

【问题讨论】:

  • 你应该展示你使用的一些代码。你实际上在做什么?他们可能有几种情况会导致此问题。
  • myPath 的完整(ish)路径是什么?它在root 拥有的目录中吗?是在/tmp 吗?它在您的主文件夹下吗?
  • 也许这会有所帮助 -- stackoverflow.com/questions/10922020/…
  • @Linux_iOS.rb.cpp.c.lisp.m.sh myPath is /home/anotherfolder/...
  • @user1357576:这是你的主目录?

标签: python linux file-permissions user-permissions


【解决方案1】:

您可以尝试(从命令行,但我确定 python 中有语法):

sudo chown your_username:your_groupname filename

注意:该组通常只是您的用户名。 我觉得这些权限有问题。每个人的读写执行似乎都关闭了。这个文件是如何创建的?它是如何被用户nobody 创建的?

【讨论】:

  • @user1357576:用sudo?而 what 不起作用?权限不会改变吗?有错误吗? ls -l filename 输出是什么?
  • -rwxrwxrwx 1 myUsername nogroup 是变化。但是,我的意思是它不起作用。因为错误不会消失
  • 文件夹myPath的权限是什么?
  • drwxrwxrwx 是路径的权限
  • @Linux_iOS.rb.cpp.c.lisp.m.sh 我尝试了编辑后的脚本。现在我是所有者,并且组也已设置,但错误不会消失。我仍然面临同样的问题。
【解决方案2】:

更改权限的Python代码:

from getpwnam import pwd
from getgrnam import grp
import os

uid = getpwnam("YOUR_USERNAME")[2]
gid = grp.getgrnam("YOUR_GROUPNAME")[2]
os.chown("myPath/xFiles.bin.addr_patched", uid, gid)

使用sudo 运行脚本就完成了。

【讨论】:

  • 使用sudo 运行您自己的脚本并不是最好的主意...尤其是如果您不知道它们是否有效。
  • @FatihArslan 问题是,我不想干预 python 代码,因为它是一个标准应用程序,在这个脚本中进行更改可能会让人头疼。我运行一个调用 python 脚本的外部 shell 脚本。你认为我可以对这个 shell 脚本进行任何更改吗?
【解决方案3】:

我的猜测是您应该查看myPath 文件夹的权限。似乎您无法写入它,因此出现了问题。尝试ls -l myPath/.. 并查看myPath 的权限。如果这是问题所在,请使用 chmod 更改文件夹的权限。

附:此外,请参阅 Linux file permissions 上的 Google 最高搜索结果。

【讨论】:

  • 可能是chmod,但更可能是chown
  • 我检查了整个路径的权限。所有目录都有完全权限,没有一个是写保护的
  • namei -m myPath/ 是检查路径中所有权限的好方法。
【解决方案4】:

我在我的 mac (10.14 Mojave) 上运行 python 脚本试图访问 /Users/xxx/Pictures/Photos Library.photoslibrary 时遇到了这个问题。 完整的解决方案可以在http://osxdaily.com/2018/10/09/fix-operation-not-permitted-terminal-error-macos/

中找到

总结: 转到 System Preferences > Security & Privacy > Privacy > Full Disk Access 并将您的 IDE 或 python 解释器添加到列表中。

【讨论】:

  • 是的,这是唯一的解决方案,因为 Apple (再次)改变了一些东西,让它更不舒服。等不及我得到我的 Linux 系统了。谢谢。
猜你喜欢
  • 2018-04-25
  • 1970-01-01
  • 1970-01-01
  • 2020-04-13
  • 2020-03-26
  • 1970-01-01
  • 2020-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多