Невозможно выполнить touch отказано в доступе linux

Обновлено: 05.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, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

права доступа

Здравствуйте! Помогите разобраться с правом исполнения каталога.

Вопрос такой: если

то смогу ли в принципе добавлять в этот каталог новые файлы и менять имеющиеся при условии знания имен последних? Ведь (как и написано во многих
прочитанных мною статьях), в этом случае я меняю лишь список содержимого каталога, а для этого не требуется ни "входить" в него ни права читать.

Если смогу, то почему:

в этом случае я меняю лишь список содержимого каталога, а для этого не требуется ни "входить" в него ни права читать
Не "входить", а, скорее, "проходить через". Именно право на это действие управляется битом исполнения.
Право на чтение позволяет лишь прочитать имена элементов, но не получить номера i-node, в которых хранится вся информация о файлах. Аналогично, права на запись недостаточно для добавления нового i-node в список.
Естественно, без доступа к i-node файла нельзя ни изменить права доступа к нему ни удалить его. Я правильно понимаю, что даже заранее зная inode файла в каталоге, я не могу ни прочитать его ни удалить из каталога, без права исполнения этого каталога? Даже тем процессом, для которого данный каталог уже стал текущим (до отмены права исполнения)? Т.е. выходит что само по себе (200) право записи при отсутствии права исполнения - бесполезно для каталога?
Меня просто смутило вот это:
Наконец, атрибут исполнения для каталога дает право входить в него командой cd. Всего-то навсего, но без этого права какие-либо операции внутри каталога становятся затруднительными. Хотя и не невозможными: по аналогии с правом чтения легко догадаться, что файл из каталога можно удалить, не входя в него - достаточно знать имя файла и путь к нему. даже заранее зная inode файла в каталоге, я не могу ни прочитать его ни удалить из каталога, без права исполнения этого каталога?
Я может не прав, но если представить каталог как файл, содержащий список вида

Права 'r' - как разрешение получить только правую часть списка, и права 'x' - как разрешение выполнить "преобразование" имени файла в inode, то, мне кажется, все можно объяснить. Выполняя команду

процесс rm, использую какую-то там функцию, должен выполнить преобразование имени в inode (я так понимаю, чтобы уменьшить количество хардлинков). Те ему нужен именно 'x'. Одним словом, команда из консоли, которой передается имя файла, знает лишь имя, а не inode.

Хм.. хотя это тоже, видимо, не ответ на вопрос.

sgfault
Да нет, я с Вами согласна. В этом есть логика - запись каталога суть работа с двумя связанными массивами "имя_файла---inode", для доступа ко второму нужно право исполнения.

QWERTYASDF
ИМХО право 0001 правильнее истолковать как "использование", а не "исполнение". Исполнением оно является только для регулярных файлов формата ELF. Например для других регулярных файлов, это именно "использование", система выполняет интерпретатор указанный в sha-bang (или /bin/sh, если там нет), и использует файл как параметр.

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

Добавление файла в каталог -- похожая ситуация. Если есть право w+ x+ r-, вы можете добавлять файлы в каталог, удалять файлы из каталога, и получать доступ к самим файлам.

Однако, без права использования добавлять, удалять, и использовать(и ещё читать/писать) файлы в каталоге вы не можете. Т.е. файл-каталог не может использоваться как файл каталог. Возможно, вы можете попытаться записать туда байты напрямую, командой dd например, вот только при этом вы скорее всего порушите всю структуру вашей ФС. Потому dd проверяет файл, и если это каталог, то возвращает ошибку "Это каталог".

Этичный хакинг и тестирование на проникновение, информационная безопасность

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


В Интернете уже достаточно часто обсуждалась эта ошибка, но я решил вернуться к её решению, поскольку обычно дают неправильный совет, что нужно удалить /var/lib/dpkg/lock. Если не было аварийного завершения работы менеджера пакетов apt, то не надо удалять файлы-блокировщики. Это приведёт к тому, что apt при последующем использовании будет сообщать об ошибке и придётся запускать команду для наведения порядка в пакетах.

Причина ошибки в том, что apt уже работает в фоне — скорее всего, просто скачивает пакеты обновлений, поскольку по умолчанию apt не устанавливает обновления самостоятельно.

Для других дистрибутивов это вызывает временное неудобство, поскольку нужно подождать, когда apt завершит свои фоновые задачи. Если нужно скачать много пакетов, а Интернет-соединение медленное, то придётся довольно долго ждать. Для Kali Linux, специализированного дистрибутива, такое поведение может для некоторых быть вообще неприемлемым. Кстати, авторы Kali Linux утверждают, что по умолчанию сетевые службы отключены. Тем не менее apt всё равно может автоматически скачивать обновления в фоне, когда вы об этом не подозреваете.

Дело в том, что, например, окружение рабочего стола (GNOME) могут запускать apt в фоне. Я, вроде бы, нашёл все настройки, после отключения которых apt уже никогда не будет ничего загружать без вашего ведома. Если после их применения у вас всё равно возникла ошибка «Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock - open (11: Ресурс временно недоступен)», пишите в комментариях — будем копать ещё глубже.

Итак, начинаем с самого очевидного, отключаем скачивание обновлений по расписанию. Проверить, включены ли какие-либо автоматические обновления, можно командой:

Для их отключения:

Теперь отключаем Unattended (самостоятельные) обновления, для этого откройте файл файл /etc/apt/apt.conf.d/20auto-upgrades

в нём имеются следующие строки:

Первая отвечает за обновление списка пакетов, а вторая – за обновления самих пакетов в системе. Вместо единиц впишете нули.

Теперь проверьте, настроен ли GNOME делать автоматические обновления:

Если будет выведено true, значит да, графическая оболочка также в фоне скачивает обновления.

Чтобы это отключить выполните:

Аварийное завершение работы во время обновления системы или установки программ

Если рассматриваемая ошибка была вызвана тем, что система была выключена во время обновления, то для её исправления нужно выполнить:

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

Исправление ошибки в работе с файлами

Причин возникновения проблем с доступом к файлам в Ubuntu может быть несколько.

Неисправность носителя

В первую очередь стоит проверить, точно ли исправна эта файловая система. В случае с флеш-картой сделать это легко. Попробуйте открыть её с компьютера на Windows. Другая система может быстро найти неполадки на накопителе. То же самое касается карт памяти, китайских плееров и других дешёвых носителей информации. Часто дело может быть в них.

В случае, когда проблемным является жёсткий диск, выполнить проверку будет гораздо труднее. Если на вашем компьютере стоит две системы, проверьте, исправно ли работает ваш HDD на Windows. Эти способы позволят определить очаг неисправности.

Форматирование

Во многих случаях вернуть работоспособность помогает простое форматирование файловой системы. Особенно легко это сделать на флешке. Правда, не всегда мы готовы расстаться с той информацией, которая на ней уже есть. Перекиньте все данные на компьютер под управлением Виндовс и отформатируйте проблемный накопитель.

С диском навряд ли у кого-то поднимется рука совершить такое. Форматирование может уничтожить много важной информации. Тем более, если повреждена файловая система Ubuntu, проблему надо искать в другом месте.

Форматирование диска

Проверка на наличие ошибок

Проверить диск на наличие ошибок можно не только на Windows. Убунту также обладает достаточным арсеналом для этого. Сделать это можно и с помощью команд, и пользуясь специальным приложением. Сначала разберём способ, использующий стандартные средства.

Просматриваем список накопителей:

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

В примере взят sdf, но у вас название диска может отличаться.

Если том был примонтирован, то перед тем, как проверять, это действие нужно отменить:

Теперь проверяем том на бэдблоки — проблемные области:

Прогресс выполнения будет отображаться в процентах.

Теперь отмечаем бэдблоки, чтобы система перестала их использовать:

GParted

Загрузка приложения GParted

  1. Для начала эту программу необходимо установить. Сделать это легко при помощи команды:
    sudo apt-get install gparted
  2. Открываем GParted. Перед нами будут выведены все носители. Среди них должен быть и проблемный недоступный — если утилита увидит ошибки, то она пометит его восклицательным знаком.
  3. Теперь открываем наш диск и нажимаем на кнопку «Раздел», расположенную сверху.
  4. В выпавшем меню выбираем «Проверка на ошибки». Программа отсканирует диск и, возможно, найдёт неполадки, после чего файловая система станет доступной не только для чтения.

Права доступа

Наконец, последняя причина, по которой мы теряем доступ к управлению данными на носителях, заключается в нарушенных правах. С ней могут сталкиваться и опытные юзеры, использующие root-режим. Когда мы используем различные команды, не до конца понимая их суть, или запускаем программы с расширенными полномочиями, система может по ошибке перекрыть доступ.

Проверка прав доступа

В качестве универсального метода здесь подойдёт команда:

Вместо [user] необходимо вписать имя пользователя. Команда chown отвечает за смену прав доступа к папке. Атрибут –R означает, что этот раздел пользователь может только читать. Sudo отменяет эти изменения. В примере проблема заключалась в домашнем разделе, если у вас проблемы с флешкой, то следует вписать её директорию.

Файловая система Убунту работает немного по другим принципам, нежели на Windows. Поэтому любые диски под её управлением ведут себя по-другому. Из-за этого возникают и новые ошибки, с которыми на Винде нельзя столкнуться.

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