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
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.
drwxr--r--
refers to the permissions that were applied to the directory.
We can see that:
- it's was directory
- owner(
root
) couldread
,write
,execute
- group(users who were in the
root
group) couldread
- 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:
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:
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.
Top comments (0)