我正在尝试运行一个Python脚本,该脚本使用由后链接器创建的二进制文件(
xFiles.bin.addr_patched
)。但是,我收到此错误:
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'
当我通过
xFiles.bin
检查这个ls-l
的权限时,显示:
-rwxrwxrwx 1 nobody nogroup
我认为该错误是因为该文件是由我正在运行的 Python 脚本无权访问的其他应用程序创建的。由于我是 Ubuntu 的初学者,我真的不知道如何解决它。关于如何解决这个问题有什么建议吗?
你可以尝试(从命令行,但我确信 python 中有语法):
sudo chown your_username:your_groupname filename
注意:该组通常只是您的用户名。 但我觉得这些权限有问题。每个人的读写执行似乎都已关闭。这个文件是如何创建的?它是如何由用户
nobody
创建的?
更改权限的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
运行脚本即可完成。
我在我的 mac (10.14 Mojave) 上运行 python 脚本尝试访问
/Users/xxx/Pictures/Photos Library.photoslibrary
时遇到了这个问题。
完整的解决方案可以在 http://osxdaily.com/2018/10/09/fix-operation-not-permissed-terminal-error-macos/ 找到
总结: 转到系统偏好设置 > 安全和隐私 > 隐私 > 全磁盘访问并将您的 IDE 或 python 解释器添加到列表中。
我的猜测是,您应该查看
myPath
文件夹的权限。似乎你无法写入它,因此出现了问题。尝试 ls -l myPath/..
并查看 myPath
的权限。如果这是问题所在,请使用 chmod
更改文件夹的权限。
附注另外,请参阅 Google 关于 Linux 文件权限 的最高结果。