1

Я подумал, что выполнение sudo chmod a+x /root/file.to.execute или даже sudo chmod 777 /root/file.to.execute должно позволить мне - как пользователю - запускать данную программу. Но после этого я все еще не могу запустить его как обычный пользователь.

Что еще может пойти не так? В каждом уроке, посвященном chmod говорится, что именно это и делается.


редактировать:

$ sudo ls -l /root/.cabal/bin/pandoc
-rwxrwxrwx 1 root root 37443252 Feb 23 14:56 /root/.cabal/bin/pandoc

редактировать: просто вызвать /root/.cabal/bin/pandoc -v чтобы удалить другие источники ошибок: просто самый простой вызов программы.

2 ответа2

1

Могут быть всевозможные потенциальные проблемы.

Знание более подробной информации о том, что может сделать программа, может быть полезным. Например, программе может быть запрещено записывать в каталог в файловой системе, которая монтируется как доступная только для чтения, даже если в файлах указано, что разрешения в стиле Unix позволят перезаписать файл (когда он монтируется, чтение / записывать).

Ваши настройки прав доступа в стиле Unix для файла, которые установлены chmod, выглядят хорошо. Я согласен с этим, основываясь на результатах, которые вы показали. Итак, давайте попробуем взглянуть на некоторые другие вещи.

Несколько быстрых идей: mount может иметь noexec (проверьте точку монтирования /root, если она существует; скорее всего, нет, в этом случае вам нужно проверить точку / mount)

Разрешения вызваны чем-то другим. например, первая строка файла сценария говорит!#/bin/my-interpretor, но у вас нет прав для запуска my-interpretor

Если вы получаете ошибку прав доступа, возможно, файл запускает my-interpretor, но затем файл запускает другую программу, которая выдает ошибку.

Ответ Фрэнка отмечает SELinux. Таким образом, могут быть источники разрешений, отличные от того, что находится в файле. Если файл является файлом сценария, попробуйте найти его. (То есть вместо «/path/file», запустите «. / Path /file» - с точкой и пробелом, а затем с именем файла. Или команда "источник"; детали могут зависеть от оболочки.

Может быть, другая возможная причина может быть связана с "ulimit -a"? (Это может быть внутренняя команда оболочки, поэтому не просто "man ulimit" - вместо этого "man $ SHELL")

Может быть, некоторые из этих идей не совсем верны, но это лишь некоторые из идей, которые легко приходят мне в голову. Итак, я не говорю, что это все возможные ответы или даже то, что все они определенно возможны; это всего лишь некоторые идеи, и, возможно, одна из них верна.

Устранение неполадок: проверьте файлы журналов. Проверить возвращаемое значение (echo $? ). Что если root запускает программу? Что делать, если человек использует "sudo"? Что если человек из группы "Колесо" запускает программу?

1

Чтобы выполнить файл /path/to/file (и получить к нему общий доступ), учетная запись пользователя должна иметь возможность сначала получить к нему доступ, т. Е. Для всех родителей file у пользователя должно быть разрешение x .

В вашем случае вам потребуется chmod +x /root /root/.cabal /root/.cabal/bin но лучшим подходом, вероятно, будет установка пакетов cabal либо локально (для пользователя, который в них нуждается), либо глобально, если все пользователи должны иметь их. Пожалуйста, обратитесь к руководству клики за подробностями.

Также см. Связанные вопросы здесь и здесь для получения дополнительной информации о разрешениях для каталогов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .