DEV Community

Cover image for Today I learned - Permission denied? chown to the rescue
kethmars
kethmars

Posted on

4

Today I learned - Permission denied? chown to the rescue

Today I learned is a series where I share a short summary of one thing I learned during the day. The idea is to show what resources I used and give my own short explanation to things.


I was working with a CMS system in Docker Node Alpine environment. At some point, when installing the CMS, I got an error stating that my user doesn't have permissions to run mkdir in /extensions

No permissions

Why? I had changed my default user in Docker container from root to myotherusername for security reasons.

By doing that, I also lost many of the permissions to manipulate the filesystem.

101 of permissions in Linux

You should know that in Linux, files/directories can have three types of permissions:

  • READ(r)
  • WRITE(w)
  • EXECUTE(x).

Also, there are three parties you can set the file permissions for:

  • owner(creator by default)
  • user groups
  • others

You can run ls -la to see that info.
It will display the following data about your current directory:

  • a list of files and directories
  • their permissions
  • owners
  • owner groups

In my case, I was interested in /extensions folder.
extensions folder

drwxr--r-- refers to the permissions that were applied to the directory.

This is how to read it:
how to read permissions

We can see that:

  • it's was directory
  • owner(root) could read, write, execute
  • group(users who were in the root group) could read
  • others could read

As my current user was myotherusername, not root, I didn't have permissions to create directory inside /extensions folder.

Solution? chown

With chown, you can modify the owner of a file or directory.

While being root user, I had to run this command:
chown command

And boom - myotherusername became the owner of the folder and got the permissions to read, write and execute in /extensions folder.

Btw, the -R here means recursively.

As I used Dockerfile to build my image, I actually added the command to be run inside the Dockerfile:
dockerfile code

And that's was it!

If you're more interested in the topic, I also recommend you to read about chmod command which is used to manipulate specific permissions for owner/groups/others.

Also, if you have any feedback / suggestions, please write in the comments.

The resources I used for learning this topic:

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Billboard image

Deploy and scale your apps on AWS and GCP with a world class developer experience

Coherence makes it easy to set up and maintain cloud infrastructure. Harness the extensibility, compliance and cost efficiency of the cloud.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay