I had created a directory mkdir xyz with user centos
The following is the output of ll command:
drw-------. 2 centos centos 6 Oct 6 06:11 xyz
When I executed cd xyz I received the following error:
bash: cd: xyz/: Permission denied
I could not access the directory in any case
mkdir xyz/abc
touch xyz/test.txt
All returned the same error.
The solution for this is to add +x permission on the directory.
chmod 700 xyz/
Then I could cd into the directory and create files and folders.
The logic behind this is as belows:
Read bit = If set, you can read this list. So, for example, if you have a directory named
Write bit = If set, you can modify this list i.e. you can {add,rename,delete} names on it. But! You can actually do it only if the execute bit is set too.
Execute bit = Make this directory your working directory i.e.
Interesting case 1: If you have write + execute permissions on a directory, you can {delete,rename} items living within even if you don't have write perimission on those items. (use sticky bit to prevent this)
Interesting case 2: If you have execute (but not write) permission on a directory AND you have write permission on a file living within, you cannot delete the file (because it involves removing it from the list). However, you can erase its contents e.g. if it's a text file you can use vi to open it and delete everything. The file will still be there, but it will be empty.
So the solution is to add +x to the directory.
You will be able to cd into the directory even if you don't have +x if you are the root user.
The following is the output of ll command:
drw-------. 2 centos centos 6 Oct 6 06:11 xyz
When I executed cd xyz I received the following error:
bash: cd: xyz/: Permission denied
I could not access the directory in any case
mkdir xyz/abc
touch xyz/test.txt
All returned the same error.
The solution for this is to add +x permission on the directory.
chmod 700 xyz/
Then I could cd into the directory and create files and folders.
The logic behind this is as belows:
Read bit = If set, you can read this list. So, for example, if you have a directory named
poems
:- You can
ls poems
and you'll get a list of items living within (-l
won't reveal any details!). - You can use command-line completion i.e.
touch poems/so <TAB> poems/somefile
. - You cannot make
poems
your working directory (i.e.cd
into it).
Write bit = If set, you can modify this list i.e. you can {add,rename,delete} names on it. But! You can actually do it only if the execute bit is set too.
Execute bit = Make this directory your working directory i.e.
cd
into it. You need this permission if you want to:- access (read, write, execute) items living within.
- modify the list itself i.e. add, rename, delete names on it (of course the write bit must be set on the directory).
Interesting case 1: If you have write + execute permissions on a directory, you can {delete,rename} items living within even if you don't have write perimission on those items. (use sticky bit to prevent this)
Interesting case 2: If you have execute (but not write) permission on a directory AND you have write permission on a file living within, you cannot delete the file (because it involves removing it from the list). However, you can erase its contents e.g. if it's a text file you can use vi to open it and delete everything. The file will still be there, but it will be empty.
So the solution is to add +x to the directory.
You will be able to cd into the directory even if you don't have +x if you are the root user.
Comments
Post a Comment