- Ошибка «Permission denied» в Linux
- Изменение прав в терминале
- Изменение прав в файловом менеджере
- В заключение
- [Linux.wiki] Права доступа в Ubuntu.
- How to resolve the «Permission Denied» error in Linux
- Ошибка bash permission denied
- Ошибка bash permission denied
- Выводы
- mkdir: cannot create directory ‘a’: Permission denied #4836
- Comments
- xzn commented Jan 22, 2020
- sirredbeard commented Feb 15, 2020
- xzn commented Feb 16, 2020
- sirredbeard commented Feb 18, 2020
- xzn commented Feb 18, 2020
- sirredbeard commented Feb 18, 2020
- xzn commented Feb 18, 2020
- ikastro commented Mar 3, 2020
- WMLHUST commented May 8, 2020
- kudaba commented Jun 1, 2020
- kudaba commented Sep 25, 2020
- stu85010 commented Oct 15, 2020
- kudaba commented Dec 4, 2020
- EmilySeville7cfg commented Apr 16, 2021 •
Ошибка «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 достаточно просто. Решив изменить правда доступа к системным файлам, лишний раз убедитесь, что полностью уверены в своих действиях и понимаете последствия вносимых изменений.
Источник
[Linux.wiki] Права доступа в Ubuntu.
Когда вы начинаете работать с Линуксом у Вас могут возникнуть трудности с открытием того или иного файла, переходом в какую-либо директорию или тп.
Вы можете увидеть следующего вида сообщение:
alexander@srv-ubuntu:
$ cat permissions.txt
cat: permissions.txt: Permission denied
Для того чтобы понять что и кому можно делать с файлом и вообще что это за объёкт нужно ввести команду:
ls -l filename
Или просто ls -l и вам покажут все файлы в текущем каталоге (в том каталоге где вы находитесь).
Например, в моём домашнем каталоге:
alexander@srv-ubuntu:
$ ls -l
total 64
drwxrwxr-x 2 alexander alexander 4096 May 8 08:30 backups
-rwxrwxr— 1 alexander alexander 39 Jun 4 17:43 helloworld.sh
-rw——- 1 alexander alexander 33838 Jun 3 18:37 it-inside_logo.jpg
-rw——- 2 alexander alexander 233 Jun 3 18:47 my_vs_info.txt
-rwxrwxrwx 1 alexander alexander 37 Jun 4 18:20 permissions_all.txt
—w-rw-r— 1 alexander alexander 37 Jun 4 18:00 permissions.txt
drwxrwxr-x 2 alexander alexander 4096 May 8 08:34 recovers
lrwxrwxrwx 1 alexander alexander 14 Jun 3 18:46 soft_link_my_vs_info.txt -> my_vs_info.txt
-rw——- 2 alexander alexander 233 Jun 3 18:47 test_ln_my_vs_info.txt_
В левой колонке отображаются права доступа (-rwxrwxrwx). Так же вы видите кому принадлежит файл (alexander alexander).
В блоке (alexander alexander) первым указывается имя пользователя кому принадлежит файл, вторым группа которой принадлежит файл. Они могут быть одинаковыми или разными.
Рассмотрим блок (-rwxrwxrwx).
Первый символ (-). Эта позиция отвечает за тип файла (-) обозначает обычный файл (картинки, текст, видео и тп)
Тут может быть (d) – директория. Например, в моём домашнем каталоге есть директория=папка backups.
(l) – символьная ссылка. Например, soft_link_my_vs_info.txt. По сути это ярлык в терминологии Windows. Этот ярлык ссылается на другой файл (soft_link_my_vs_info.txt -> my_vs_info.txt).
Есть и другие варианты. Смотри ссылку в конце.
Следующие 9 символов (rwxrwxrwx) обозначают права доступа для владельца-u, группы-g и всех остальных.
Например, для файла helloworld.sh – это скрипт, его можно запускать и он будет что-то делать.
-rwxrwxr–
uuugggooo
Это означает. Что для владельца-u доступно следующее:
r-read – читать
w-write – писать
x-execute – выполнять
По сути, владелец может делать всё что угодно с этим файлом. Члены группы к которой принадлежит данный файл тоже могут делать всё (rwx).
А вот все остальные пользователи могут только читать (r–). Доступа к записили и исполнению у них нет.
Для каталогов тоже есть такие параметры. Например, для backups (drwxrwxr-x).
d – означает, что это директория
Пользователь и группа могут делать всё что захотят.
r – чтение в данном случает означает, например, то что владелец может просмотреть содержимое директории – прочитать список назходящихся в ней файлов.
w – запись – вы можете создавать и удалять файлы в этой директории.
x – можете перейти в эту директорию.
Например, в данной директории пользователи не входящие в группу alexander не могут создавать файлы, но могут просмотреть её содержимое и перейти в неё.
Если директория будет иметь следующие права:
alexander@srv-ubuntu:
$ ls -l | grep dir_permissions
dr—r—r— 2 alexander alexander 4096 Jun 4 18:39 dir_permissions
То владелец сможет посмотерть её содержимое(но не увидет права доступа, просто файлы), но не сможет в неё перейти:
alexander@srv-ubuntu:
$ ls -l dir_permissions/
ls: cannot access dir_permissions/testfile.txt: Permission denied
total 0
-. ? ? ? ? ? testfile.txt
Перейти в директорию нельзя:
alexander@srv-ubuntu:
$ cd dir_permissions/
-bash: cd: dir_permissions/: Permission denied
При полном запрете будет просто отказ в доступе:
alexander@srv-ubuntu:
$ ls -l dir_permissions/
ls: cannot open directory dir_permissions/: Permission denied
Теперь Вы сможете понять причину по которой у Вас не получается что-то сделать с файлом =)
Источник
How to resolve the «Permission Denied» error in Linux
While using Linux, you may encounter the error, “permission denied”. This error occurs when the user does not have the privileges to make edits to a file. Root has access to all files and folders and can make any edits. Other users, however, may not be allowed to make such edits.
Remember that only root or users with Sudo privileges can change permissions for files and folders.
The permissions can be changed using the chmod keyword. The syntax for the command is:
chmod flags permissions filename
- flags are the additional options users can set.
- permissions define if the user can read, write, or execute the file. They can be represented using symbolic or octal numbers.
- filename is the name of the file whose permissions are changed.
Here is an example where users can read, write, and execute a file; whereas, group and others can only read it.
Here, each letter has a meaning:
r gives read permissions
w gives write permissions
x gives execute permissions
The same command can be run using octal notation:
Here, each digit represents the sum of the permissions allowed:
4 gives read permissions
2 gives write permissions
1 gives execute permissions
0 gives no permissions
The sum of these permissions is used to represent each type of author.
Источник
Ошибка 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 для системных файлов, а также несколько путей ее решения. Как видите, все достаточно просто. Надеюсь, эта информация была полезной для вас.
Источник
mkdir: cannot create directory ‘a’: Permission denied #4836
Comments
xzn commented Jan 22, 2020
Cannot create directory with mkdir even though touch , rm , rmdir , mv all works fine.
Microsoft Windows [Version 10.0.19546.1000]
Arch Linux distro created with
wsl —export Arch D:\arch.tar
wsl —import Arch2 D:\WSL\Arch2 D:\arch.tar —version 2
cd /mnt/d/
mkdir a
gives
mkdir: cannot create directory ‘a’: Permission denied
Works fine at home directory though
cd /mnt/c/Users/user
mkdir a
no problem here.
Where should I start to look for a solution for this?
The text was updated successfully, but these errors were encountered:
sirredbeard commented Feb 15, 2020
Can you reproduce this when using C:\ instead?
xzn commented Feb 16, 2020
sirredbeard commented Feb 18, 2020
Where did you get your Arch image?
I have tried the one at https://github.com/yuk7/ArchWSL/releases and except for some issues with permissions on the package GPG signatures it worked well for me.
xzn commented Feb 18, 2020
WSL works fine, exporting it to WSL2 and I have trouble with mkdir .
Will try your link for now.
sirredbeard commented Feb 18, 2020
Give the other Arch image a try, I know it’s a good image.
What are the permissions in the folder what you are trying to create a folder?
Have you tried chown?
xzn commented Feb 18, 2020
chown, chmod all works alongside touch, rm, rmdir, mv, etc. I just noticed mkdir wouldn’t work when git clone gives me permission denied.
Thanks for helping btw! Will try a clean image instead of exporting from one I currently have.
ikastro commented Mar 3, 2020
I have the same issue, I am trying to create a directory so that I can mount the drive
WMLHUST commented May 8, 2020
I delete a git dict in windows explorer, then mkdir failed in WSL terminal.
kudaba commented Jun 1, 2020
I just upgraded to ubuntu version 2 and I’m getting the same issue. I can’t mkdir on my drives in /mnt/c and /mnt/d, but it works fine in my home folder and other areas. All other operations work fine. Even running with sudo doesn’t help. My app that I’m working on also can’t create folders.
kudaba commented Sep 25, 2020
In my case it was a mount issue, or at least changing the mount options fixed it. Running the following command from https://devblogs.microsoft.com/commandline/chmod-chown-wsl-improvements/ worked for me:
sudo umount /mnt/c && sudo mount -t drvfs C: /mnt/c -o metadata
It’s unclear but the command seems to be permanent. I’m not sure what happened during the upgrade from WSL 1 to 2 that affected this.
stu85010 commented Oct 15, 2020
In my case, this issue was solved by: giving the Full control permission to your Windows account for this directory with Security tab
Said, I’d created a directory at /c/src and trying to develop there, but the «User» group doesn’t have Full control permission at that path, so the folder creation is failed in WSL in my case.
Then I was added the Full control permission to my Windows account at that folder, and the mkdir worked perfectly in that directory.
kudaba commented Dec 4, 2020
Turns out my mount solution didn’t last through a reboot, but the Full Control to users fixed it, thanks @stu85010.
EmilySeville7cfg commented Apr 16, 2021 •
I have the same issue on Ubuntu 20.04.2 LTS. Besides other commands like touch and I/O redirection fail with the same error. Why it happens?
Источник