- Ошибка «Permission denied» в Linux
- Изменение прав в терминале
- Изменение прав в файловом менеджере
- В заключение
- Ошибка bash permission denied
- Ошибка bash permission denied
- Выводы
- How to resolve permission denied Linux error
- What is permission denied Linux error?
- Example of Permission denied Linux error
- How to resolve Permission denied Error
- Resolving Permission denied error related to script execution:
- Resolving permission denied Linux error while listing or writing to a file
- Resolving permission denied Linux error for specific user
- Download Free book
- Permission denied, попытка создать файл
- Как правильно смонтировать cifs (ubuntu 14.04) с доступом на запись для nginx/php (www-data)?
Ошибка «Permission denied» в Linux
Все операционные системы семейства Linux имеют четко разграниченные права доступа. В своей домашней директории пользователь может делать все, что ему угодно, до тех пор, пока укладывается в отведенные рамки. Попытка выйти за них приводит к появлению ошибки «Permission Denied».
Изменение прав в терминале
Рассмотрим вариант, в котором необходимо прочесть текстовый документ, созданный другим пользователем. Файлы TXT в Linux можно просматривать непосредственно в терминале с помощью команды «cat».
- Заходим в каталог с интересующим нас документом. Набираем команду «cat filename», подставляя вместо «filename» имя нужного файла. На скриншоте показана ошибка «Permission Denied», выглядящая в русской локализации как «Отказано в доступе».
Получаем ошибку «Permission Denied» при попытке просмотреть содержимое файла
Проверяем права доступа к документу используя команду «ls -l»
Используем команду «chmod» и административные права для получения доступа
Просматриваем содержимое текстового документа командой «cat»
Изменение прав в файловом менеджере
Разберемся, как выполнить рассмотренную выше операцию в графическом интерфейсе, используя файловый менеджер из дистрибутива.
- Как видно на скриншоте, значок файла изначально имеет дополнительные символы, указывающие на то, что доступ у нему ограничен. При попытке посмотреть содержимое получаем графический вариант ошибки «Permission Denied».
При попытке открыть текстовый документ получаем ошибку «Permission Denied»
Открываем меню «Файл» и перезапускаем файловый менеджер от имени root
Набираем пароль root в окне аутентификации
Открываем параметры файла с помощью контекстного меню
На вкладке «Права» разрешаем доступ для группы root и остальных пользователей
Открываем ранее недоступный файл в режиме чтения и изучаем содержимое
В заключение
Как видим, избавиться от ошибки Permission Denied достаточно просто. Решив изменить правда доступа к системным файлам, лишний раз убедитесь, что полностью уверены в своих действиях и понимаете последствия вносимых изменений.
Источник
Ошибка bash permission denied
Многие новички пытаются выполнить запись определенных значений в системные файлы с помощью операторов перенаправления ввода и вывода и получают ошибку bash permission denied. Эта ошибка выводится, даже если вы использовали sudo.
Казалось бы, sudo есть, значит права суперпользователя получены и все должно работать но тут все не так просто. В этой статье мы рассмотрим почему возникает ошибка bash permission denied и как ее обойти.
Ошибка bash permission denied
Допустим, вы выполняете команду:
sudo echo «nameserver 8.8.8.8» >> /etc/resolv.conf
А в результате вместо записи строчки в /etc/resolv.conf получаете ошибку:
bash: /etc/resolv.conf permission denied
В русской локализации это будет отказано в доступе bash linux. Так происходит потому что вы запускаете с правами суперпользователя утилиту echo и она честно выводит вашу строку в стандартный вывод bash с правами суперпользователя. Но bash запущен от обычного пользователя, и когда интерпретатор bash пытается записать полученную строчку в системный файл, естественно, что вы получите ошибку.
Но существует несколько способов обойти это ограничение, вы можете, например, использовать команду tee, которая записывает стандартный вывод в файл или запустить саму оболочку от имени суперпользователя. Рассмотрим сначала вариант с tee:
echo ‘текст’ | sudo tee -a /путь/к/файлу
echo ‘nameserver 8.8.8.8’ | sudo tee -a /etc/resolv.conf
Это очень простое решение, но, кроме того, вы можете запустить оболочку bash с правами суперпользователя, чтобы дать ей доступ на запись:
sudo sh -c ‘echo текст >> /путь/к/файлу’
sudo bash -c ‘echo текст >> /путь/к/файлу’
sudo bash -c ‘echo nameserver 8.8.8.8 >> /etc/resolv.conf
Еще одно решение, призванное, упростить эту команду, добавить такой код в
sudoe() <
[[ «$#» -ne 2 ]] && echo «Usage: sudoe
» && return 1
echo «$1» | sudo tee —append «$2» > /dev/null
>
Дальше для вывода строки в файл выполняйте:
sudoe ‘текст’ >> /путь/к/файлу
sudoe «nameserver 8.8.8.8» > /etc/resolv.conf
Теперь все будет работать, как и ожидалось, и ошибка bash отказано в доступе не появится. Еще можно поменять права на файл, а потом уже выводить в него строку. Но это очень неправильное решение. И даже не потому, что это небезопасно, а больше потому что там намного больше действий.
Выводы
В этой небольшой статье мы разобрали почему возникает ошибка bash permission denied при использовании команды echo для системных файлов, а также несколько путей ее решения. Как видите, все достаточно просто. Надеюсь, эта информация была полезной для вас.
Источник
How to resolve permission denied Linux error
This article will teach you quickly what is permission denied Linux error. And also what ways you can avoid permission denied error in Linux.
What is permission denied Linux error?
This error comes when you try to list files or try execute the file inside the directory where you don’t have sufficient permission. Since Linux operating system is very particular about its security aspect.
Example of Permission denied Linux error
Let’s say you are a normal user who is trying to list or trying change the directory inside the /root file-system. Since you do not have sufficient permissions system will respond with permission denied error message as below:
One way to avoid such error is to switch to root user using su – command. However this solution is not recommended since it will gain unnecessary access to all the root file system.
How to resolve Permission denied Error
Resolving Permission denied error related to script execution:
Let’s say you have created a shell script for performing any task. but when you try to execute the script you may end with below error due absence of permission denied error.
Now to avoid such case you need to add execute permission “x” to the file myshell.sh using chmod command as below:
In the last output you can see that there is “x” (execution) permission added after chmod command. So next time when you try to execute the shell script , it will execute without any error.
Resolving permission denied Linux error while listing or writing to a file
In this type of permission denied error you try to list or write the file in which you do not have sufficient permission to do so as below:
If you look at the permissions of the “myfolder” directory using ls -l command you will come to know about the permissions.
As per the permission given in above output only owner of the directory who is root can have all permission that is read, write and execute. So in such case you need to change the permission of the directory to read using below chmod command:
Now this time when normal user manmohan try to list directory he will not get the permission denied error.
In case you want to have write permission on this directory you need to specify w flag as well in chmod command as below:
Same is applicable to file level permission as well.
One more way is to changing the ownership of the directory using chown command. Since in our example we are getting error for user manmohan we will change ownership of the directory “myfolder” using below command.
Since manmohan user is now the owner of the directory he can able to do any operation on the directory. In case you want to recursive permission do not forget to add -r while chown command as below:
Resolving permission denied Linux error for specific user
In above method of changing the permission using chmod is not suitable as per my opinion. Because when you give permission to others, it will be open for all the users within the system. Which is wrong in terms of security perspective. To resolve this error specific to user you can implement it using access control list or ACL. Follow my article on Access control list ACL for the same.
Download Free book
Get your free copy of Linux command line Cheat Sheet.
Источник
Permission denied, попытка создать файл
Здравствуйте. Пытаюсь программно создать файл на linux из под codeblocks. Среда выводит сообщение об ошибке permission denied. Дал полный доступ к папке, с которой работаю, не помогло. Не подскажите, в чём может быть проблема?
Permission denied при записи в смонтированный каталог
После успешного монтирования каталога /export на другой компьютер в условную /mnt/home пытаемся.
Permission denied
Делаю эту команду sudo echo «aaaaaa» > /sys/bas/iqds/new но к команде /sys/bas/iqds/new .
Перенести файлы с одной системы на другую с помощью ssh — permission denied
Здравствуйте. Нужно перенести файлы с одной системы ubuntu, на другую с помощью ssh. Выдает.
Error pam pam_open_session() permission denied
при соединение с сервером по SSH желает приятно провести время и Have a lot of fun. Connection.
По пробуйте запустить codeblocks от имени администратора.
Не помогло, выходит аналогичное сообщение
Добавлено через 1 минуту
Не помогло, выходит аналогичное сообщение
Помощь в написании контрольных, курсовых и дипломных работ здесь.
/’: Permission denied»
Стоит ProFTPd 1.3.3 на CentOS6. ServerName «ProFTPD server» ServerIdent on «FTP Server ready.» .
Intel Parallel studio xe — permission denied при установке
Пытаюсь поставить parallel studio , скачал с сайта intel , разархивировал , пытаюсь запустить.
Permission denied
Проблема в том, что не могу запустить программу (не знаю, как это точно называется), в общем.
Ubuntu, Permission denied, при передаче файлов
Не освоил еще linux системы, не могу с win передать файлы на сервер ubuntu, по ssh. Через cmd.
Источник
Как правильно смонтировать cifs (ubuntu 14.04) с доступом на запись для nginx/php (www-data)?
У меня какой-то замкнутый круг, не могу нагуглить ответ уже второй день.
Дано:
- Есть сетевой NAS на основе какого-то линукса, который раздаёт папку как расшаренную папку windows — доступ для всех на запись
- Эта сетевая папка отлично видна и работает на запись для windows desktop клиентов
- Настраиваю Ubuntu Server 14.04 на котором будет работать web-приложение под nginx+php-fpm — самые обычные настройки, запускаются под пользователем www-data
Задача:
PHP веб-приложение иногда должно создавать вложенные папки и файлы внутри той самой расшаренной папки на NAS. Например, писать файлы с помощью file_put_contents.
С другой стороны, я хочу сидя на ubuntu сервере по ssh под своим пользователем также иметь доступ на запись в эту расшаренную папку (буду иногда вручную запускать всякие скприты, которые будут туда писать).
Пробую решить
Попытка номер 1:
Пишу в /etc/fstab следующую строку:
Обратите внимание на опции dir_mode=0777,file_mode=0777 — про них каждый второй ответ на stackoverflow, что стоит их добавить и всё заработает само! (ха-ха)
Монтирую $ sudo mount -a
Проверим как смонтировалось:
Посмотрим какие права получились у папки:
Вроде есть доступ на запись для всех: drwxrwxrwx. Попробуем записать новый файл:
Что инетерсно, сам файл создался, но он пуст:
Проверим, могу ли я писать файлы из веб-приложения? Пишем php скрипт, который будет запускаться при заходе на страницу
Открываем в браузере 192.168.20.149/test.php (это мой ubuntu сервер с запущенным nginx+php-fpm, где мы совбственно пытаемся монтировать) и получаем:
Т.е. из скрипта тоже никакого доступа на запись нет 🙁
Если посмотреть в консоли, то обнаружим, что файл создался, только он пустой — этого я никак не понимаю
Попытка номер 2:
Погуглил, узнал, что нужно при монтировании cifs шары указывать uid и gid.
Попробуем. Для начала узнаем мои uid и gid.
Узнали: я пользователь ad и моя основная группа ad
Сначала отмонтируем: $ sudo umount -l /mnt/filesfolder
Потом меняем fstab: $ sudo nano /etc/fstab
Монтируем заново: $ sudo mount -a
Смотрим на папку:
Теперь owner стал ad/ad (раньше был nobody/nogroup)
Запись нового файла в папку заработала:
Попробуем наш php скрипт через браузер (предварительно удаляю старый пустой test.txt с помощью windows машины):
Открываем браузер 192.168.20.149/test.php и видим старое знакомое сообщение:
При этом файл test_from_php.txt создаётся:
и теперь у него owner почему-то ad/ad
Кстати, надо бы проверить, что мой nginx+php-fpm работают как www-data, для этого пишу такой простой php скприт и открываю его в браузере:
Выводит текст в браузере: www-data
Получается я из консоли теперь могу писать в эту расшаренную папку, но моё веб-приложение всё ещё не может.
Попытка номер 3:
Размонтируем, меняем fstab, указывая uid=www-data,gid=www-data, монтируем обрабтно, проверяем:
Пробуем записать файл через консоль — опять отказ (как и в попытке номер 1, но я не понимаю почему, ведь права на папку drwxrwxrwx)
Зато php-скрипт через браузер не выдёт никаких ошибок и файл test_from_php.txt записывается успешно!
Внимание, вопрос:
Как мне примонтировать папку так, чтобы я и из консоли мог в неё записывать и из web-приложения, которое под пользователем www-data?
И почему в экспериментах выше у меня вообще проблемы с записью в папку, если она выглядит как drwxrwxrwx — т.е. доступна на запись для всех пользователей всех групп?
Источник