В Linux отказано в разрешении после chmod a = rwx - PullRequest
7 голосов
/ 08 апреля 2009

Итак, у меня есть небольшая проблема с Linux, черт побери, она научит меня тратить столько лет на Windows. Во всяком случае, я сделал небольшое приложение Java, красиво обернутое скриптом Java Service Wrapper, но когда я запустил этот скрипт:

sh ./wrapper.sh console

Я сразу же получил разрешение. Сообщение об отказе в разрешении выглядит так:

eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied

Мой маленький wrapper.sh находится в папке MyApp / bin. Каталог MyApp / bin / wrapper содержит 2 файла:

  • обертка-линукс-x86-32
  • обертка-линукс-x86-64

В качестве теста я выполнил следующую команду chmod:

chmod a=rwx MyApp -R

Я проверил, что все было в rwx, даже в подпапках, и попытался снова запустить скрипт, с тем же результатом ... в доступе отказано.

Кто-нибудь имеет представление о том, что я мог бы попробовать сделать, чтобы этот ребенок побежал?

Спасибо, Ланселот

Ответы [ 6 ]

8 голосов
/ 08 апреля 2009

Я только что заметил, что в сообщении об ошибке указано имя каталога , в котором находится ваш файл:

eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied

Мы знаем, что это каталог, так как вы упомянули «Каталог MyApp / bin / wrapper содержит 2 файла».

Не могли бы вы проверить свой сценарий, например, где вы используете имя каталога в качестве команды? Например, использовать обертку (которая является именем каталога) вместо wrapper / wrapper-linux-x86-32 (которая будет именем файла) или подобные ошибки?

Подобные ошибки часто появляются при использовании пробелов в именах файлов и забывании в кавычках упомянутых имен файлов (хотя, возможно, здесь не так).

Если это не удастся, не могли бы вы отредактировать свой вопрос, включив в него содержимое вызываемого сценария-оболочки?

(Новый ответ, поскольку он совершенно не связан с предыдущей идеей noexec, и этот вопрос можно оставить для справки.)

7 голосов
/ 08 апреля 2009

Файловая система, в которой размещен ваш скрипт, может быть смонтирована с флагом noexec. Проверьте запись в / etc / fstab для этой файловой системы и, если там есть noexec, попробуйте удалить ее, а затем перемонтировать эту файловую систему через mount /path/to/mountpoint -o remount

Подумав, проверьте вывод команды mount на наличие экземпляров noexec вместо / etc / fstab (файловая система могла быть смонтирована динамически.)

0 голосов
/ 04 апреля 2017

Хотя моя проблема несколько отличалась, этот вопрос появлялся в моем поиске несколько раз при поиске аналогичной проблемы, поэтому я опубликую свои выводы здесь.

Моя проблема заключалась в том, что я не мог получить доступ к хранилищу / папке после команды chmod.

После выполнения команды:

sudo chmod -755 storage -R    //notice -755 is wrong, it should be 755

Я больше не могу получить доступ к хранилищу / папке.

Я пробовал ls -l:

storage permissions d---------

Также после git status:

storage/.gitignore: Permission denied

После выполнения правильной команды:

sudo chmod 755 storage -R // without -

все вернулось на круги своя.

0 голосов
/ 22 апреля 2009

Вы можете попытаться выполнить файл, который был там в домашнем каталоге другого пользователя, вы можете дать разрешение пользователю "user"

chmod -R a + x / home / user1 или же chmod -R o + x / home / user1 chmod -R g + x / home / user1

0 голосов
/ 08 апреля 2009

Сначала попробуйте открыть его в текстовом редакторе, чтобы убедиться, что у вас есть права на чтение. Если так, сделайте

chmod +x wrapper.sh

И убедитесь, что у вас есть #!/bin/sh в начале скрипта

0 голосов
/ 08 апреля 2009

вам также может понадобиться предоставить скрипт выполнения вашей оболочке

chmod + x wrapper.sh

РЕДАКТИРОВАТЬ: я только что заметил, что ваш wrapper.sh находится в папке MyApp / EDIT

также, если вы убедитесь, что у вас есть

#!/bin/sh

вверху вашего .sh файла, вы можете выполнить его так:

.wrapper.sh

...