Bash permission denied linux как исправить

Обновлено: 02.07.2024

Пытаюсь сделать это:

sudo echo no > /etc/pure-ftpd/conf/someparam

На что мне отвечают:

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

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

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

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

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

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


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


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

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

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

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

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

sudo chmod 755 /путь/к/файлу

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

sudo chmod -R 755 /путь/к/каталогу

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

sudo chown пользователь /путь/к/файлу
$ sudo chown -R пользователь /путь/к/каталогу


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

sudo ps aux | grep имя_сервиса


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

Выводы

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

У меня была проблема с Wi-Fi, которая до сих пор не решена из-за проблемы, которая возникла, когда я пытался ее решить.

Я нашел это решение для Wi-Fi, поэтому попробовал его:

Вставьте в конфиг этот текст

Я заметил, что у меня не было разрешения на запись или выполнение файла, поэтому я попытался использовать chmod решить проблему. Это упорядоченный список всех операций, которые я сделал и которые привели к проблеме этого вопроса:

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

На терминале отображается

Теперь, когда я открываю терминал, он выводит мне строку bash /etc/profile: Permission denied, которую я никогда раньше не видел, и пропущенная часть имени необычна, потому что вместо нее следует писать zenoraiser.

Что вы предлагаете мне сделать?

2 ответа

Там нет необходимости выполнять chmod вообще при использовании sudo редактировать файл, хотя вы не должны использовать sudo gedit (скорее sudo -H gedit например)

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

В реальной среде определите (поврежденный) корневой раздел на диске, используя sudo fdisk -l

Когда я использую sudo, чтобы разрешить редактирование файлов, я регулярно получаю «разрешение запрещено».

Например, моя мышь нервная и вялая, поэтому я хочу отключить опрос:

Мне предлагается ввести пароль, а затем получить:

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

И снова система ответила:

Перенаправление вывода (через > оператора) выполняется оболочкой, а не echo . Вы должны войти в систему как root

Тогда вы можете использовать перенаправление

В противном случае вы можете запустить строку bash с помощью sudo

Вы не можете запустить эхо с Sudo? Что насчет результата, который я получил: saji@laptop:

$ sudo echo "Hi" [sudo] password for saji: Hi

Вы можете написать в файл, эхо "что-то"> Somewhre. Это использует трубу .. В этом проблема. Хорошо, если это так, пожалуйста, обновите свой ответ, чтобы отразить, что запуск echo является проблемой только в этом случае. Вы не можете просто запустить встроенную оболочку echo как sudo, если вы не сделаете что-то подобное sudo bash -c 'echo …' ; однако системы POSIX обычно предоставляют внешнюю echo команду, такую ​​как /bin/echo в OS X, которую sudo может выполнить без rigamarole. Таким образом, echo команда, которую вы обычно запускаете, и echo команда, которую вы запускаете с помощью sudo, вероятно, являются двумя разными, но похожими командами.

Перенаправление вывода выполняется оболочкой, из которой была вызвана команда . Итак, разбивая все на кусочки, вот что происходит *:

вызывает оболочку sudo echo "options drm_kms_helper poll=N" , которая выполняет sudo команду с echo "options drm_kms_helper poll=N" командной строкой

Судо запрашивает пароль, открывает суперпользователя оболочку и вызывает echo "options drm_kms_helper poll=N" , который запускает echo команду передачи его "options drm_kms_helper poll=N"

echo, работающий с root привилегиями, выводит строку в стандартный вывод.

echo команда завершается, суперпользовательская оболочка завершается, sudo завершается

(*) - хотя приведенная выше последовательность помогает понять, почему команда терпит неудачу, в действительности все происходит несколько не по порядку: исходная оболочка замечает перенаправление и пытается открыть файл для записи перед вызовом sudo . команды. При открытии файла происходит сбой, оболочка даже не вызывает команду, которая должна была записать файл (спасибо @PanosRontogiannis за это).

Многие новички пытаются выполнить запись определенных значений в системные файлы с помощью операторов перенаправления ввода и вывода и получают ошибку bash permission denied. Эта ошибка выводится, даже если вы использовали sudo.

Казалось бы, sudo есть, значит права суперпользователя получены и все должно работать но тут все не так просто. В этой статье мы рассмотрим почему возникает ошибка bash permission denied и как ее обойти.

Ошибка bash permission denied


А в результате вместо записи строчки в /etc/resolv.conf получаете ошибку:

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

Но существует несколько способов обойти это ограничение, вы можете, например, использовать команду tee, которая записывает стандартный вывод в файл или запустить саму оболочку от имени суперпользователя. Рассмотрим сначала вариант с tee:

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

sudo sh -c 'echo текст >> /путь/к/файлу'
sudo bash -c 'echo текст >> /путь/к/файлу'


Еще одно решение, призванное, упростить эту команду, добавить такой код в


Теперь все будет работать, как и ожидалось, и ошибка bash отказано в доступе не появится. Еще можно поменять права на файл, а потом уже выводить в него строку. Но это очень неправильное решение. И даже не потому, что это небезопасно, а больше потому что там намного больше действий.

Комментариев нет:

Поиск по этому блогу


QT5-FSARCHIVER Есть различные утилиты (как графические, так и консольные) для создания резервных копий. Мы остановимся и подробно расс.


гитара Всем привет! Сегодня решил попробовать мой компьютер в качестве гитарного процессора, и написать небольшое HOWTO как это реали.



Шаг 1 Добавить ссылку на соответствующий репозиторий в файл /etc/apt/sources.list. Репозиторий следует выбирать в зависимости от операцио.


Недавно приобрел в домашнее пользование Samsung Smart TV 5-ой серии. Так как смартфон был прикручен моментально через AllShare самсу.

Ошибка «Permission denied» в LinuxОшибка «Permission denied» в Linux

Все операционные системы семейства Linux имеют четко разграниченные права доступа. В своей домашней директории пользователь может делать все, что ему угодно, до тех пор, пока укладывается в отведенные рамки. Попытка выйти за них приводит к появлению ошибки «Permission Denied».

Изменение прав в терминале

Рассмотрим вариант, в котором необходимо прочесть текстовый документ, созданный другим пользователем. Файлы TXT в Linux можно просматривать непосредственно в терминале с помощью команды «cat».

    Заходим в каталог с интересующим нас документом. Набираем команду «cat filename», подставляя вместо «filename» имя нужного файла. На скриншоте показана ошибка «Permission Denied», выглядящая в русской локализации как «Отказано в доступе».

Ошибка «Permission Denied»

Получаем ошибку «Permission Denied» при попытке просмотреть содержимое файла

Просмотр прав доступа командой «ls»

Проверяем права доступа к документу используя команду «ls -l»

Изменение прав доступа командой «chmod»

Используем команду «chmod» и административные права для получения доступа

Просмотр текстового файла командой «cat»

Просматриваем содержимое текстового документа командой «cat»

Изменение прав в файловом менеджере

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

    Как видно на скриншоте, значок файла изначально имеет дополнительные символы, указывающие на то, что доступ у нему ограничен. При попытке посмотреть содержимое получаем графический вариант ошибки «Permission Denied».

Графический вариант ошибки «Permission Denied»

При попытке открыть текстовый документ получаем ошибку «Permission Denied»

Переключение файлового менеджера в режим root

Открываем меню «Файл» и перезапускаем файловый менеджер от имени root

Окно аутентификации root

Набираем пароль root в окне аутентификации

Контекстное меню файлового менеджера

Открываем параметры файла с помощью контекстного меню

Вкладка «Права» в свойствах файла

На вкладке «Права» разрешаем доступ для группы root и остальных пользователей

Файл, открытый в режиме чтения

Открываем ранее недоступный файл в режиме чтения и изучаем содержимое

В заключение

Как видим, избавиться от ошибки Permission Denied достаточно просто. Решив изменить правда доступа к системным файлам, лишний раз убедитесь, что полностью уверены в своих действиях и понимаете последствия вносимых изменений.

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