OSError:[错误1]不允许操作

use*_*576 5 python linux file-permissions user-permissions

我正在尝试运行一个python脚本,它使用由postlinker创建的二进制文件(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'
Run Code Online (Sandbox Code Playgroud)

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

-rwxrwxrwx 1 nobody  nogroup 
Run Code Online (Sandbox Code Playgroud)

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

解决了:

作为答案之一建议:chown用户名:groupname文件名修复此问题

Lin*_*ios 10

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

sudo chown your_username:your_groupname filename
Run Code Online (Sandbox Code Playgroud)

注意:该组通常只是您的用户名.我觉得这些权限有问题.Read Write Execute对每个人来说似乎都是关闭的.这个文件是怎么创建的?它是如何由用户创建的nobody


Fat*_*lan 5

更改权限的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)
Run Code Online (Sandbox Code Playgroud)

运行脚本sudo即可完成。

  • 使用“sudo”运行您自己的脚本并不是最好的主意...特别是如果您不知道它们是否有效。 (2认同)