Mkdir cannot create directory permission denied linux

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.
Читайте также:  Linux softether vpn server

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.

Источник

Cannot create directory. Permission denied inside docker container

Can not create folder during image building with non root user added to sudoers group. Here is my Dockerfile:

FROM ubuntu:16.04 RUN apt-get update && \ apt-get -y install sudo RUN adduser --disabled-password --gecos '' newuser \ && adduser newuser sudo \ && echo '%sudo ALL=(ALL:ALL) ALL' >> /etc/sudoers USER newuser RUN mkdir -p /newfolder WORKDIR /newfolder 

3 Answers 3

Filesystems inside a Docker container work just like filesytems outside a Docker container: you need appropriate permissions if you are going to create files or directories. In this case, you’re trying to create /newfolder as a non-root user (because the USER directive changes the UID used to run any commands that follow it). That won’t work because / is owned by root and has mode dr-xr-xr-x .

RUN mkdir -p /newfolder RUN chown newuser /newfolder USER newuser WORKDIR /newfolder 

This will create the directory as root , and then chown it.

It helped. Thank you. But when i go to the container: docker exec -it img /bin/bash and then mkdir newfolder2 I get Permission denied and it requires ‘sudo’ command. Is it possible to do commands inside containers without ‘sudo’?

You used the USER directive, so when you run a command inside the container you are not root . If you want to be root , you need a privilege escalation tool such as sudo or su , or you need to redesign the container to not use the USER directive and consider instead something like an ENTRYPOINT script that will use sudo or similar to drop privileges when it runs your CMD .

Источник

Ошибка: mkdir — Cannot Create Directory

Новички в Linux часто не понимают, что делать при получении ошибки “mkdir: cannot create directory” во время работы с командной строкой. Есть несколько причин возникновения такой ошибки, и в этом переводе своей англоязычной статьи с сайта Unix Tutorial я покажу эти причины и их устрание на примерах.

mkdir: cannot create directory – File exists

В переводе с английского сообщение означает: невозможно создать каталог — файл уже существует.

Читайте также:  Readline linux что это

ФАЙЛ существует? А при чём тут проблема создания каталога? И почему ошибка говорить “существует файл”, когда мы вообще пытаемся создавать каталог, а не файл?

На самом деле всё просто: большинство объектов в 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).

Читайте также:  Linux programming interface michael kerrisk pdf

Теперь давайте уберём права на запись (и создание новых объектов) в каталоге 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 — обращайтесь!

Источник

openSuSE, Linux, cannot create directory-permission denied

I am using openSuse 12.3, and logged in as a user. I am trying to create a directory in the /home/ , but getting permission denied. any idea, how to fix this.

harbir@linux-gn77:/home> mkdir testDir mkdir: cannot create directory ‘testDir’: Permission denied harbir@linux-gn77:/home> 

You will need administrative privileges. Why are you making this directory in /home ? Why not in /home/user which is your home directory?

hmm, pardon me, I think you have a very good point. Well I will blame of on 0430 time and lack of coffee. Please, put your comment as the answer, if it works, I can mark it.

2 Answers 2

Only root can create directories under /home . You typically put a directory under /home for each user’s account. Running the command getent passwd will show you which users have home directories located here:

$ getent passwd | grep /home saml:x:1000:1000:saml:/home/saml:/bin/bash samtest:x:1001:1001::/home/samtest:/bin/bash 

Also you generally do not make these directories by hand, but rather use a tool such as adduser to create new user accounts and through it specify sub directories to make for user’s under /home .

$ sudo adduser -d, --home-dir HOME_DIR home directory of the new account 

If you truly want to just make a sub directory under /home for some pre-existing user to use, in addition to their already existing /home directory you can do so like this:

$ sudo mkdir /home/somedir $ sudo chown -R myuser.somegroup /home/somedir 

If you’re merely trying to make a directory under your user’s /home/user directory then do so using one of these methods instead:

$ mkdir ~/testDir $ mkdir $HOME/testDir $ mkdir /home/harbir/testDir $ cd /home/harbir; mkdir testDir 

Источник

Оцените статью
Adblock
detector