- Fix: cannot create directory permission denied
- Reason: Permissions Not Granted
- Solution: Allow the Directory Permissions
- Alternative Solution: Change the Directory Ownership
- Conclusion
- Ошибка: mkdir — Cannot Create Directory
- mkdir: cannot create directory – File exists
- Возможные решения проблем mkdir: cannot create directory
- Сценарий file exists
- Переименовать (или переместить) существующий файл
- Удалить существующий файл
- не может создать каталог. доступ запрещен. но у меня есть разрешение
- 2 ответа 2
Fix: cannot create directory permission denied
Linux displays the file or directory permissions held by the user via the “ls -l” command. These permissions are of three types: “read”, “write”, and “execute”. The “read” permissions are represented by “r”, and “write” permissions are identified by “w”, and the “execute” is denoted by “x” in Linux.
This guide describes the causes and possible solutions for the issue “cannot create directory permission denied”. The outline of this article is as follows:
Let’s get into the reasons and the solutions of the error.
Reason: Permissions Not Granted
The error “cannot create directory permission denied” occurs because the currently logged-in user does not have the “write” permissions to create the directory. Suppose the user runs the “mkdir” command to create the directory “test” and “subtest1” as a subdirectory. It will not create as it shows the below error shown in the screenshot:
Check the “test” directory permissions by running the below-mentioned command:
The owner “itslinuxfoss” does not have the write permissions to create the “subtest1” directory as it only reads the “test” directory.
To resolve this type of error, the user needs to access the write permissions of the “test” directory
Solution: Allow the Directory Permissions
Change the “test” directory permissions to create the “subtest1” directory inside it. For this purpose, use the “chmod(Change Directory)” command with the combination of “a+w” and the target directory name in the terminal (Ctrl+Alt+T):
The “test” directory now has the “write” permissions.
Execute the “ls” command again to verify the new changes:
The output confirms that now the “test” directory has the “write” permissions to create a directory inside it.
Now run the “mkdir” command with the “subtest1” directory in the terminal. Now the below command will definitely create the “subtest1” directory without any error:
The output verifies that the error “cannot create directory permission denied” has been fixed now, and the “subtest1” is created successfully inside the “test” directory.
Alternative Solution: Change the Directory Ownership
Here is another solution to create the directory. To perform this task, change the ownership of the specified directory using the “chown” Linux command. Run the below command in the terminal to make the current user an “owner” of the directory:
$ sudo chown -R "$USER:" /path/to/the/directory
The above command contains the following components:
- chown: Linux command that is useful to change the ownership of file/directory.
- -R: This flag represents “recursive” as it changes the ownership of files and subdirectories located in a directory.
- $USER: The current user replaces the global variable.
- path/to/directory: Shows the specified directory path.
That’s all about the reasons and the solutions to the error “cannot create directory permission denied”.
Conclusion
The “cannot create directory permission denied” can be resolved by “Allowing the Directory Permissions”.The permissions of the desired directory can be changed by utilizing the “chmod(Change Directory)” command. This article has explained all the possible solutions to resolve the error “cannot create permission denied” in Linux.
Ошибка: mkdir — Cannot Create Directory
Новички в Linux часто не понимают, что делать при получении ошибки “mkdir: cannot create directory” во время работы с командной строкой. Есть несколько причин возникновения такой ошибки, и в этом переводе своей англоязычной статьи с сайта Unix Tutorial я покажу эти причины и их устрание на примерах.
mkdir: cannot create directory – File exists
В переводе с английского сообщение означает: невозможно создать каталог — файл уже существует.
ФАЙЛ существует? А при чём тут проблема создания каталога? И почему ошибка говорить “существует файл”, когда мы вообще пытаемся создавать каталог, а не файл?
На самом деле всё просто: большинство объектов в Linux являются файлами и структурами в файловой системе. Поэтому эта ошибка означает, что там, где вы пытаетесь выполнить команду создания нового каталога, уже существует другой объект с таким же именем. В данном случае — это файл, а не каталог. Но у файла такое же имя, как у желаемого каталога, так что создать второй объект с таким же именем не получится.
[email protected]:~$ mkdir /tmp/try mkdir: cannot create directory – File exists
намекает, что у нас уже есть файл с именем /tmp/try.
Очень просто проверить эту гипотезу с помощью команды ls:
[email protected]:~$ ls -ald /tmp/try drwxr-xr-x 2 greys root 4096 Nov 5 18:55 /tmp/try
Так и есть, у нас существует файл с таким именем.
Возможные решения проблем mkdir: cannot create directory
Сценарий file exists
Если файл с таким именем уже существует, а каталог всё же очень хочется создать, то есть решения.
Переименовать (или переместить) существующий файл
Используем команду mv для перемещения /tmp/try в другой каталог (или просто сменим имя try на другое, оставив файл в том же каталоге /tmp). Вот как можно переименовать файл в имя oldtry:
Теперь давайте попробуем ту же команду mkdir:
…и всё замечательно работает! Никаких ошибок, и создался новый каталог под названием /tmp/try. Подтверждаем это с помощью команды ls:
[email protected]:~$ ls -ald /tmp/try /tmp/oldtry drwxr-xr-x 2 greys root 4096 Nov 5 18:55 /tmp/oldtry drwxrwxr-x 2 greys greys 4096 Nov 5 19:08 /tmp/try
Удалить существующий файл
Ещё одна опция, которая напрашивается сама собой — можно просто удалить неугодный файл, который мешает созаднию нашего нового каталога.
Для этого примера создадим новый пустой файл с названием /tmp/newtry
grey[email protected]:~$ touch /tmp/newtry [email protected]:~$ ls -lad /tmp/newtry -rw-rw-r-- 1 greys greys 0 Nov 5 20:50 /tmp/newtry
Если попробовать mkdir, то получится ожидаемая ошибка:
[email protected]:~$ mkdir /tmp/newtry mkdir: cannot create directory '/tmp/newtry': File exists
А теперь мы просто удалим неугодный файл и попробуем mkdir снова:
[email protected]:~$ rm /tmp/newtry [email protected]:~$ mkdir /tmp/newtry
В этот раз нет никаких ошибок, всё снова сработало:
[email protected]:~$ ls -lad /tmp/newtry drwxrwxr-x 2 greys greys 4096 Nov 5 20:50 /tmp/newtry
##mkdir: cannot create directory – Permission denied
Это — ещё один распространённый сценарий при создании каталогов.
В переводе на русский, сообщение говорит: невозможно создать каталог — недостаточно прав доступа. То есть файлов с таким же именем нет, но текущий пользователь, под которым мы пытаемся создать каталог, не имеет прав в текущем месте файловой системы для создания новых каталогов (и файлов).
Основной подход к такой ошибке — проверка прав доступа в каталоге, где получена ошибка. Команда ls и здесь поможет. You should use ls command on the higher level directory to confirm permissions.
[email protected]:/tmp$ mkdir try2018 [email protected]:/tmp$ mkdir try2018/anotherone [email protected]:/tmp$ ls -ald try2018 drwxrwxr-x 3 greys greys 4096 Nov 5 21:04 try2018
Все эти команды сработали без ошибок, и ls показывает, что у меня есть полные права доступа к каталогу try2018 — rwx для меня, rwx для моей группы и r-x для всех остальных (это я читаю фрагмент drwxrwxr-x в строке с try2018).
Теперь давайте уберём права на запись (и создание новых объектов) в каталоге try2018:
[email protected]:/tmp$ chmod a-w try2018 [email protected]:/tmp$ ls -ald try2018 dr-xr-xr-x 3 greys greys 4096 Nov 5 21:04 try2018
Теперь мои права к этому каталогу сменились с полных (rwx — read/write/execute) на только чтение (r-x — read/execute). Так что если я попробую создать в try2018 какой-то подкаталог, выйдет та самая ошибка про недостаток прав доступа:
[email protected]:/tmp$ mkdir try2018/yetanotherone mkdir: cannot create directory 'try2018/yetanotherone': Permission denied
Чтобы исправить проблему, нужно исправить права доступа на каталоге, где мы видим ошибку. И пробуем mkdir снова:
[email protected]:/tmp$ chmod a+w try2018 [email protected]:/tmp$ mkdir try2018/yetanotherone
Вот теперь — порядок, всё создалось,
[email protected]:/tmp$ ls -ald try2018/yetanotherone drwxrwxr-x 2 greys greys 4096 Nov 5 21:05 try2018/yetanotherone
На сегодня — всё! Будут ещё вопросы по самым основам Linux — обращайтесь!
не может создать каталог. доступ запрещен. но у меня есть разрешение
Я довольно новичок в Linux, и на днях запустил Ubuntu. Это работает двойной загрузки с WindWOS 8. Теперь проблема заключается в том, что, хотя я вхожу в систему как пользователь root и выдаю определенную папку ВСЕ РАЗРЕШЕНИЯ (имя файла #chmod 777), он все равно не позволяет мне создать каталог или сохранить отредактированный файл, говоря (не может создать каталог: нет такой файл или каталог). это дало мне ту же ошибку, даже когда я вошел в систему как root GUI. с тех пор я попробовал CentOS 6.4, и это дает мне ту же проблему. Я снова упоминаю, что дал директории полное разрешение. Я запускал Linux раньше на других компьютерах и никогда не сталкивался с этой проблемой. мой компьютер сейчас DELL XPS L502X.
2 ответа 2
Каталог /sys в Linux обманчив. В отличие от большинства других каталогов, он не обеспечивает постоянного хранения произвольных файлов. Скорее, это способ взглянуть на устройства системы — их состояния и конфигурации. Эти файлы уходят между загрузками и динамически генерируются вашей системой при запуске. Обычно отказывают в разрешении на запись новых файлов или каталогов, даже в качестве пользователя root. Вы можете обнаружить эти файловые системы, просмотрев тип монтирования:
$ mount none on /dev/pts type devpts (rw,nosuid,noexec,relatime,mode=600) none on /proc type proc (rw,nosuid,nodev,noexec,relatime) none on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime) none on /sys/fs/fuse/connections type fusectl (rw,relatime) none on /run type tmpfs (rw,nosuid,noexec,relatime,size=3284248k,mode=755) /dev/md2 on /home type ext4 (rw,relatime,user_xattr,acl,barrier=1,data=ordered,discard)
- devpts , proc , sysfs , binfmt_misc и fusectl — это динамически генерируемые файловые системы, которые отражают внутреннюю системную информацию и не предназначены для обычного использования файловой системы. Скорее всего, вы получите ошибки, в которых отказано в разрешении, даже в качестве root или других проблем, если попытаетесь использовать их как обычную файловую систему.
- tmpfs — это временная файловая система, которая находится в оперативной памяти. Вы можете написать сюда и использовать ее как обычную файловую систему, но все сохраненное здесь будет удалено, как только компьютер выключится. Скопируйте ваши файлы в другое место, если вы хотите сохранить их.
- ext4 — это настоящая файловая система на устройстве где-то. Данные, сохраненные здесь, будут сохранены, как и следовало ожидать на жестком диске. Существует много файловых систем, но ключевое замечание заключается в том, что в этой строке вместо /dev/md2 : none none из них не означает, что нет файлового устройства, поддерживающего файловую систему — оно на самом деле не существует и является полностью виртуальным. Если точка монтирования имеет реальное устройство (например, /dev/sda1 или /dev/md1 ), то это означает, что содержимое фактически существует где-то на устройстве.
Сможете ли вы поместить отредактированные файлы в другой каталог? Или вы конкретно имеете в виду редактировать конфигурацию устройства?