2012-06-07 223 views
4

我試圖運行一個python腳本,它使用一個後鏈接器創建的二進制文件(xFiles.bin.addr_patched)。但是,我收到此錯誤。OSError:[錯誤1]不允許操作

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-1,它表明

-rwxrwxrwx 1 nobody nogroup 

我相信錯誤是因爲這個文件是由其他應用程序,蟒蛇創建我正在運行的腳本無法訪問它。由於我是初學者,所以我不知道如何解決這個問題。對於如何解決這個問題,有任何的建議嗎?

解決:

所建議的答案之一:CHOWN用戶名:組名文件名修復此問題

+2

你應該顯示你使用的一些代碼。你究竟在做什麼?他們可能在這裏引起這個問題的幾個案例。 –

+0

「myPath」的完整(ish)路徑是什麼?它是否在一個'root'擁有的目錄中?它在'/ tmp'中嗎?它在你的家庭文件夾下的某個地方? – Linuxios

+0

也許這可以幫助 - http://stackoverflow.com/questions/10922020/how-to-port-a-python-application-to-linux-that-works-fine-in-windows – corn3lius

回答

7

你可以嘗試(在命令行,但我敢肯定有一個在Python中的語法):

sudo chown your_username:your_groupname filename 

注意:該組通常只是您的用戶名。 雖然我覺得這些權限有問題。讀寫每個人的執行似乎都關閉。這個文件是如何創建的?它是如何由用戶nobody創建的?

+0

我已經試過了,並沒有幫助。 – user1357576

+1

@ user1357576:使用'sudo'?和*什麼*不起作用?權限不會改變嗎?有錯誤嗎?什麼是'ls -l文件名'輸出? – Linuxios

+0

-rwxrwxrwx 1 myUsername nogroup是更改。但是,我的意思是它不起作用。正如在錯誤不會消失 – user1357576

1

我的猜測是,您應該查看myPath文件夾的權限。似乎你不能寫信給它,因此問題。嘗試ls -l myPath/..並查看myPath的權限。如果這是問題,請使用chmod更改文件夾的權限。

P.S.此外,請參閱Linux file permissions上的Google最佳結果。

+0

也許'chmod',但更可能是'chown'。 – Linuxios

+1

我檢查了整個路徑的權限。所有目錄都具有完全權限,並且它們都不受寫保護 – user1357576

3

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運行腳本,你就大功告成了。

+0

使用'sudo'運行自己的腳本不是最好的主意......尤其是如果您不知道它們是否工作。 – Linuxios

+0

@FatihArslan事情是,我不想幹擾Python代碼,因爲它是一個標準的應用程序,並且對這個腳本進行更改可能會讓人頭疼。我運行一個調用python腳本的外部shell腳本。你認爲我可以在這個shell腳本中進行任何更改嗎? – user1357576