在Linux文件系統模型中,每個文件都有一組9個權限位用來控制誰能夠讀寫和執行該文件的內容。普通文件大家都了解,這里說說目錄的情況。
對於目錄來說,執行位的作用是控制能否進入或者通過該目錄,而不是控制能否列出它的內容。讀取位和執行位的組合的作用才是控制是否列出目錄中的內容。寫入位和執行位的組合則是允許在目錄中創建,刪除,和重命名文件。
下面用實例來說明問題:主要命令為chmod
普通用戶創建文件夾dir1,默認權限為775
$ mkdir dir1 $ ls -l total 4 drwxrwxr-x 2 eric eric 4096 Dec 10 04:03 dir1 $ ls -l dir1/ total 0
更改目錄權限到700,目錄內可列可創建文件
$ chmod 700 dir1/ $ uptime > dir1/uptime $ ls -l total 4 drwx------ 2 eric eric 4096 Dec 10 04:04 dir1 $ ls -l dir1/ total 4 -rw-rw-r-- 1 eric eric 69 Dec 10 04:04 uptime $ cat dir1/uptime 04:04:47 up 3 days, 23:49, 1 user, load average: 0.00, 0.00, 0.00
更改目錄權限到400,目錄內不可列詳情,不可CAT,不可創建文件
$ chmod 400 dir1/ $ ls -l total 4 dr-------- 2 eric eric 4096 Dec 10 04:04 dir1 $ ls -l dir1/ ls: cannot access dir1/uptime: Permission denied total 0 -????????? ? ? ? ? ? uptime $ cat dir1/uptime cat: dir1/uptime: Permission denied $ touch dir1/aaa touch: cannot touch `dir1/aaa': Permission denied
更改目錄權限到100,目錄內不可列,目錄可進入,不可創建文件,可Cat內文件(當然文件的權限要有,而且知道它的名字,不能聯想)
$ chmod 100 dir1/ $ ls -l total 4 d--x------ 2 eric eric 4096 Dec 10 04:04 dir1 $ ls -l dir1/ ls: cannot open directory dir1/: Permission denied $ ls -l dir1/uptime -rw-rw-r-- 1 eric eric 69 Dec 10 04:04 dir1/uptime $ cd dir1/ $ ls -l ls: cannot open directory .: Permission denied $ cat dir1/uptime 04:04:47 up 3 days, 23:49, 1 user, load average: 0.00, 0.00, 0.00 $ touch dir1/aaa touch: cannot touch `dir1/aaa': Permission denied
更改目錄權限到200,目錄內不可列,不可CAT,不可創建文件,
$ chmod 200 dir1/ $ ls -l total 4 d-w------- 2 eric eric 4096 Dec 10 04:04 dir1 $ ls -l dir1/ ls: cannot open directory dir1/: Permission denied $ cat dir1/uptime cat: dir1/uptime: Permission denied $ touch dir1/aaa touch: cannot touch `dir1/aaa': Permission denied
更改目錄權限到500,目錄內可列,可CAT,不可創建文件,
$ chmod 500 dir1/ [eric@SJC3-testing ~]$ ls -l total 4 dr-x------ 2 eric eric 4096 Dec 10 04:04 dir1 $ ls -l dir1/ total 4 -rw-rw-r-- 1 eric eric 69 Dec 10 04:04 uptime $ cat dir1/uptime 04:04:47 up 3 days, 23:49, 1 user, load average: 0.00, 0.00, 0.00 $ touch dir1/aaa touch: cannot touch `dir1/aaa': Permission denied
更改目錄權限到300,目錄內不可列,可CAT(當然文件的權限要有,而且知道它的名字,不能聯想),可創建文件,
$ chmod 300 dir1/ [eric@SJC3-testing ~]$ ls -l total 4 d-wx------ 2 eric eric 4096 Dec 10 04:04 dir1 $ ls -l dir1/ ls: cannot open directory dir1/: Permission denied $ cat dir1/uptime 04:04:47 up 3 days, 23:49, 1 user, load average: 0.00, 0.00, 0.00 $ touch dir1/aaa
備注:700=rwx, 400=r, 100=x, 200=w, 500=rx, 300=wx