Отказано в доступе linux

Обновлено: 06.07.2024

program exited with code: 126 , Эта проблема всегда возникает, когда я пытаюсь выполнить свой код. Какое может быть решение?

Permission denied Ошибка возникает, только если у вас недостаточно прав для доступа к этому файлу. Где я могу это сделать, пожалуйста, дайте мне пример Когда я делаю это, он говорит мне, что chmod: не может получить доступ к `geany_run_script.sh ': нет такого файла или каталога. Должен ли я запустить его из терминала или как?

Если вы хотите пропустить их (пока, конечно), вы можете создать каталог / папку в вашем домашнем каталоге пользователя и работать там над своими C программами (или другими).

Вы можете открыть терминал (нажмите Ctrl + Alt + T ) и cd в целевой каталог:

Чтобы дать файлу «the_file_name» разрешение на выполнение (если файловая система позволяет вам с правами RW):

Проблема в том, как я могу это сделать? Я новый пользователь Ubuntu, которого я недавно переключил с Windows. .. каков твой рабочий каталог т.е. где находится ваш файл исходного кода? ..У вас есть опыт работы с Windows CLI? @ wkhwilo-012, посмотрите, поможет ли это, и, пожалуйста, не стесняйтесь спрашивать больше .. @ wkhwilo-012, пожалуйста, скопируйте исполняемый файл Area_circumference и вставьте его (путь к файлу будет вставлен), чтобы обновить тело вашего вопроса .

Вам нужно дать только разрешение на выполнение. Следовать этому:

Когда мы создаем новый файл скрипта, он по умолчанию имеет права на чтение и запись. Но если мы хотим выполнить их, мы должны дать разрешение на выполнение, как показано выше.

Откройте приложение терминала, нажав CTRL + ALT + T или с помощью соответствующей комбинации клавиш в графической среде (например, Terminal или xTerm ).
В стандартном окне, которое появляется на экране, вы увидите мигающий символ, это terminal cursor : просто нажмите на окно и напишите, чтобы ввести текст (обычно команды), и нажмите, ENTER чтобы подтвердить ввод.
Перед курсором всегда указывается ваша текущая позиция в файловой системе из root directory ("/"), а ваш дом (где находятся ваши личные файлы) называется "

".
Для изменения каталога / папки используйте cd EXISTENTFOLDER (замените EXISTENTFOLDER на имя папки); если вы чувствуете себя потерянным, просто напишите, cd чтобы в мгновение ока вернуться в свой домашний каталог!
В настоящее времядавайте решим вашу проблему :

Используйте cd команду, чтобы найти каталог с вашим исходным кодом. Используйте, TAB чтобы помочь вам. Если вы выполните ls -lh , вы увидите список возможных путей и файлов для выполнения.

Когда вы найдете заблокированный файл, выполните команду chmod +x FILENAME (замените FILENAME на имя файла исходного кода).

Если у вас есть несколько заблокированных файлов, выполните chmod +x * команду, чтобы разблокировать все файлы в текущем каталоге. Никогда не используйте chmod + x опасные или незащищенные файлы .

Выполнить, ./FILENAME YOUREVENTUALARGUMENTS чтобы выполнить ваш исполняемый файл.

Помните, что если ваша скомпилированная программа пытается читать / записывать вне вашего домашнего каталога, вам нужно будет выполнить ее как root с помощью sudo ./FILENAME YOUREVENTUALARGUMENTS .

Если вы хотите иметь руководство для выполнения команды man COMMAND (замените COMMAND на точное имя команды, Linux чувствителен к регистру).

В некоторых оболочках есть Open terminal here команда, упрощающая вашу жизнь, ищите ее в будущем и помните, что командная оболочка может стать вашим лучшим другом, если вы ее хорошо используете. :-D

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

Новые пользователи довольно часто сталкиваются с такой ошибкой, как ошибка отказано в доступе Linux. Если вы только что перешли с Windows, то можете еще не знать всех особенностей операционной системы Linux и почему возникает такая проблема.

В этой статье мы рассмотрим причины ошибки access denied linux, а также как ее обойти.

Ошибка отказано в доступе Linux

Наиболее часто такая ошибка встречается, в таких случаях:

  • Вы пытаетесь выполнить команду в терминале;
  • Вы пытаетесь примонтировать внешний носитель с помощью файлового менеджера;
  • Вы пытаетесь запустить системный сервис и находите такую ошибку в логе.

В операционной системе Linux действует сложная система полномочий. Настройки доступа для каждого файла настраиваются тремя параметрами - чтение, запись и выполнение. Эти параметры устанавливаются для трех категорий - владелец файла, группа файла и все остальные пользователи.

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

Многие программы проверяют после запуска от какого пользователя они запущены и говорят, что их нужно запускать от имени суперпользователя, но так ведут себя не все. Например, команда ls вернет ошибку отказано в доступе linux если вы попытаетесь посмотреть содержимое каталога суперпользователя:

Но эта же команда нормально отработает нормально при использовании команды sudo:

Другой случай, это если вы обнаруживаете проблему в логах какого-либо системного сервиса, например, веб-сервера Apache. Казалось бы, должно было быть все верно, потому что запуск и так выполняется от имени суперпользователя.

Но нет, сервисы не только запускаются от имени суперпользователя, но потом, для увеличения безопасности они меняют пользователя на обычного, не привелигированного. Например, Apache работает от имени пользователя apache или www-data. Уже от имени этого пользователя программа пытается получить доступ к файловой системе.

Если нужная папка не доступна этому пользователю для чтения то вы получите ошибку access denied linux. Обычно, в логе программа сообщает какая папка или файл нужен когда происходит ошибка.

Вам просто нужно поменять на него права с помощью утилиты chmod или изменить владельца chown. Причем, нужно чтобы ко всем подкаталогам на пути к целевому каталогу был доступ у программы. Например, нельзя так чтобы права на чтение /home/ не было, а на /home/user/ было. Так не пройдет.

Права разрешающие чтение и запись владельцу и только чтение для группы и остальных вставляются командой:

Или для смены прав для всех файлов в каталоге и самого каталога:

Или вы можете изменить владельца, обычно, это более безопасная и распространенная практика:

Имя пользователя, от имени которого работает сервис вы можете посмотреть с помощью команды:

После того как вы установите правильные права, ошибка отказано в доступе linux больше не будет встречаться.

Выводы

В этой статье мы рассмотрели что делать если случается ошибка нет доступа linux, а также почему она возникает. Надеюсь, эта информация была полезной для вас. Если остались вопросы, спрашивайте в комментариях!

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

Deleted ( 24.03.19 15:18:47 )
Последнее исправление: Deleted 24.03.19 15:19:13 (всего исправлений: 2)

Есть права, из-под рута же пытаюсь. Но попробовал вручную ко всем подкаталогам до того файла где пробую, установить права 777 - не помогло, всё равно ругается что нет прав. И почему только экзешники? В том же каталоге лежит текстовый файл, копируется спокойно.

Права похерились это же опенсорс вроде как у всех должны быть, но не обязаны, самый свободный дистрибутив я угадал?

насколько я помню у рута есть CAP_DAC_OVERRIDE или что-то подобное, поэтому права на что угодно могут быть хоть 000

файлы exe давно лежат или недавно заливались? В самбе acl_xattr используется? Ну и там в выводе la -la или lsattr есть что-нибудь необычное?

Давно. Самбу пока не трогал, потому что у меня нет к ним доступа даже без Самбы, она нужна только чтобы из-под винды шары были.

Файловая система какая? Ext4? Команду lsattr выполняли, как выше постоветовали?

ext4. lsattr - Отказано в доступе While reading flags on xxx.exe

Посмотрите вот эту ссылку, возможно, Вам поможет предложенный там вариант.

а lsof что по поводу этих файликов говорит?

у нас подобное бывает, что файл вроде как есть, но сделать с ним ничего нельзя (mc его еще красным показывает, со знаком вопроса), но у нас постоянное создание и удаление файлов, а случаи единичны и не зависят от типа файлов.

Учитывая, что началось пару дней назад, то в dmesg или /var/log/syslog могут быть записи, которые может помогут хотя бы понять, что произошло (чаще всего искать надо по имени диска или точки монтирования)

А в чём разница между debugfs и fsck? Просто fsck уже пробовал, для обоих дисков.


Недавно в самбе порезали поддержку старых протоколов. Вероятно активировался ACL или чтото в этом духе. Права рута в этом случае ни на что не влияют. Возможно ты неправильно авторизован на сервере.

Недавно в самбе порезали поддержку старых протоколов.

Так к файлам нет доступа даже из под рута Дебиана. Без Самбы. Причём здесь это? ПыСы: Как я могу быть неправильно авторизован, если я под рутом?


Я подумал что ты пытаешься выполнять операции по сети.

Ну в таком случае ещё можнт гадить SeLinux и компания. Не трогал их?

debugfs — это ручное редактирование файловой системы. А fsck — это автоматическое или полуавтоматическое исправление ошибок.

И ещё вопросик
У нас локальная сеть, через самба подключаюсь к домену, выхожу на сервер, и так долго он пытается отобразить содержимое. Так и должно быть.

Через 2 года война с США (не спрашивайте от куда такие данные), я им войну ужэ объявил, вирусную, вчера у двух америкосов компы загубил (итого ужэ пять), к вечеру опять в бой. в консоли не могу получить права рута, ввожу su- а он мне bash: /bin/su: отказано в доступе

Переключиться в текстовую консоль, войти рутом, и выполнить команду control su public

Через 2 года война с США (не спрашивайте от куда такие данные), я им войну ужэ объявил, вирусную, вчера у двух америкосов компы загубил (итого ужэ пять), к вечеру опять в бой. Что значит "не получается" ?
Не получается сделать Ctrl+Alt+F1 ?
Не получается ПРАВИЛЬНО писать команду Что значит "не получается" ?
Не получается сделать Ctrl+Alt+F1 ?
Не получается ПРАВИЛЬНО писать команду

su-
щтказано в доступе

control su public
command not found

Через 2 года война с США (не спрашивайте от куда такие данные), я им войну ужэ объявил, вирусную, вчера у двух америкосов компы загубил (итого ужэ пять), к вечеру опять в бой. 1) CTRL+ALT+F1
2) login: root
3) Password: "ПАРОЛЬ АДМИНИСТРАТОРА" (при вводе ничего не видно)
4) control su public
ТАК ВИДНО/ПОНЯТНО ? 1) CTRL+ALT+F1
2) login: root
3) Password: "ПАРОЛЬ АДМИНИСТРАТОРА" (при вводе ничего не видно)
4) control su public
ТАК ВИДНО/ПОНЯТНО ?

Спасибо! Сработало.
А почему такое случилось что в доступе было отказано и что значит команда control su public?

Через 2 года война с США (не спрашивайте от куда такие данные), я им войну ужэ объявил, вирусную, вчера у двух америкосов компы загубил (итого ужэ пять), к вечеру опять в бой. Спасибо! Сработало.
А почему такое случилось что в доступе было отказано и что значит команда control su public?


Случилось это потому, что пользователю (в настройках по умолчанию) доступны далеко не все команды. Например, команда su (у вас дистрибутив Server не иначе?).

Множество команд, доступ к которым разумно ограничить, в системе ALT Linux снабжены специальными комментариями для программы control, в которых содержится описание "уровней доступа" к командам, например public, relaxed, wheelonly и т.п. Соответственно, команда control может менять права (правила) доступа к этим командам.

В данном случае с помощью команды control для программы su было установлено поведение, описанное правилом public, то есть доступ для этой программы стал открыт для всех пользователей.

Читайте также: