Вопрос по linux, python, file-permissions, user-permissions – Ошибка OSE: [Ошибка 1] Операция не разрешена

5

Я пытаюсь запустить скрипт 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, я действительно не знаю, как это исправить. Любые предложения о том, как это исправить?

РЕШИТЬ:

As one of the answers Suggested : chown username:groupname file name fixes this issue

@ user1357576: А это твой домашний режиссер? Linuxios
Каков полный (ish) путьmyPath? Это вrootвладелец dir? Это в/tmp? Это где-то под вашей домашней папкой? Linuxios
Вы должны показать код, который вы используете. Что ты на самом деле делаешь? Здесь может быть несколько случаев, вызывающих эту проблему. Fatih Arslan
@ Linux_iOS.rb.cpp.c.lisp.m.sh myPath - это / home / anotherfolder / ... user1357576
Может быть, это может помочь -stackoverflow.com/questions/10922020/… corn3lius

Ваш Ответ

3   ответа
1

Я предполагаю, что вы должны смотреть на разрешения дляmyPath папка вместо. Похоже, вы не можете написать в него, следовательно, проблема. Пытатьсяls -l myPath/.. и увидеть разрешения дляmyPath, Если это проблема, измените разрешения для папки сchmod.

Постскриптум Кроме того, смотрите лучший результат Google наРазрешения для файлов Linux.

Может бытьchmod, но более вероятноchown.
namei -m myPath/ хороший ярлык для проверки всех разрешений в пути.
Я проверил разрешение всего пути. Все каталоги имеют полное разрешение и ни один из них не защищен от записи 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 и вы сделали.

@FatihArslan Дело в том, что я не хочу вмешиваться в код Python, потому что это стандартное приложение, и внесение изменений в этот скрипт может быть головной болью. Я запускаю скрипт внешней оболочки, который вызывает скрипт Python. Как вы думаете, я могу внести какие-либо изменения в этот сценарий оболочки? user1357576
Это не лучшая идея запускать свои собственные сценарии сsudo... Особенно, если вы не знаете, работают ли они.
10

Вы можете попробовать (из командной строки, но я уверен, что в python есть синтаксис):

sudo chown your_username:your_groupname filename

Примечание: группа обычно просто ваше имя пользователя. Я чувствую, что с этими разрешениями что-то не так. Чтение Запись Выполнить для всех, кажется, выключен. Как был создан этот файл? Как это было создано пользователемnobody?

@ user1357576: сsudo? А такжеwhat не работает? Разрешения не меняются? Есть ли ошибка? Чтоls -l filename выход?
-rwxrwxrwx 1 myUsername nogroup - это изменение. Однако я имел в виду, что это не работает. Так как ошибка не исчезает user1357576
drwxrwxrwx - это разрешение для пути user1357576
Какие разрешения для папкиmyPath?
что я уже пробовал и не помогает. user1357576

Похожие вопросы