这个问题应该大部分人都没有真正理解(我也不例外:)),引用 stackexchange 上的解释如下:
First, think: What is a directory? It’s just a list of items (files and other directories) that live within. So: directory = list of names.
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.
Summary:
Read bit = You can read the names on the list.
Write bit = You can {add,rename,delete} names on the list IF the execute bit is set too.
Execute bit = You can make this directory your working directory.
Another note is that even if you have x permission on the directory, if you don’t have x permission on the file within, you can’t really “execute” the file. You can only cat it for example, but you can’t run the file itself.
If you want to ls -l
work for a folder, need both r
and x
permission.
原文链接:
Execute vs Read bit. How do directory permissions in Linux work?
https://unix.stackexchange.com/a/21263
最后修改于 2019-01-30