程序員成長之旅——Linux初識:目錄權限方面的總結

程序員成長之旅——Linux初識篇:目錄權限問題,並進行增刪查( cd, touch, ls, rm, mv)等需要哪些權限

進入目錄的權限

權限是什麼

就是對某項進行決策程度和範圍,通俗來說,就是規定哪些事情能做,哪些事情不能做,那麼在Linux中有哪些權限呢?

  • 基本權限:

r(讀):對於文件而言,具有讀文件的權限,對目錄而言,具有瀏覽目錄的權限
w(寫):對於文件而言,具有修改文件的權限,對目錄而言,具有刪除和移動目錄的權限
x(執行):execute對文件而言,具有執行文件的權限,對於目錄而言,具有進入目錄的權限

  • 基本權限的表現形式:

1.通過字母和"-"表示
在當前目錄中輸入ll(字母L小寫)指令並執行,查看當前目錄下所有項目的權限
2.通過數字來表示
擁有者u 所屬組g 其它o所擁有的權限其實可以用一個八進制數字來表示,也就是說一個文件的權限可以通過三個八進制數字來表示
例如:
具有可讀可寫可執行權限(rwx) - 111(二進制) - 7(八進制)
具有可讀可執行權限(r-x) - 101(二進制)-5(八進制)
不具有可讀可寫可執行權限(—) - 000(二進制)-0(八進制)

  • 進入目錄的權限:

1.以字母形式進行修改,利用chmod命令,通過g,u或者o加減所要的權限或者權限組合,來實現對文件權限的修改,修改之後再
用ll權限來查看修改後的權限。
2.以數字的形式進行修改權限,我們可以讓g、u、o都具有r、w、x權限, 我們在更改權限的時候要想好修改成什麼,然後對應相應的數字即可三個一組,rwx權限分別對應421相加得7,,rw-對應42相加,r–對應4

  • 進入目錄的權限驗證:

(1)創建一個目錄lpff並使用chmod 000 lpff給目錄lpff設置成無權限。
(2)我們先給user加上r權限,(即chmod u + r lpff)但是通過圖片我們看到訪問依然被拒絕,所以進入目錄不需要可讀權限,需要別的權限,我們繼續再給user加上其他的權限。
(3)我們在給user加上w權限(即chmod u + w lpff)進入目錄訪問的權限依然被拒絕,由此我們可知道進入目錄的權限也不需要寫權限。
(4)我們再給user加上執行權限(即chmod u + x)我們發現可以進入目錄,所以目錄需要的是可執行性權限。

[lpf@localhost ~]$ cd lpd
[lpf@localhost lpd]$ ls
lpff
[lpf@localhost lpd]$ rm -r lpff
[lpf@localhost lpd]$ ls
[lpf@localhost lpd]$ mkdir lpff
[lpf@localhost lpd]$ ls
lpff
[lpf@localhost lpd]$ chmod 000 lpff
[lpf@localhost lpd]$ ll
總用量 0
d---------. 2 lpf lpf 6 1010 12:09 lpff
[lpf@localhost lpd]$ cd lpff
-bash: cd: lpff: 權限不夠
[lpf@localhost lpd]$ chmod u+r lpff
[lpf@localhost lpd]$ cd lpff
-bash: cd: lpff: 權限不夠
[lpf@localhost lpd]$ chmod u+w lpff
[lpf@localhost lpd]$ cd lpff
-bash: cd: lpff: 權限不夠
[lpf@localhost lpd]$ chmod u-rw lpff
[lpf@localhost lpd]$ ll
總用量 0
d---------. 2 lpf lpf 6 1010 12:09 lpff
[lpf@localhost lpd]$ chmod u+x lpff
[lpf@localhost lpd]$ cd lpff
[lpf@localhost lpff]$ 

  • 總結:

(1)進入一個目錄,對於普通用戶至少需要可執行權限。
(2)在目錄中創建一個新的文件時,用戶需要可寫可執行權限。
(3)在目錄中創建文件並進行顯示,用戶需要可讀可寫可執行權限。

  • 說明:

(1)如果目錄沒有 - x權限,則無法對目錄執行任何命令,甚至無法cd進入目錄,即使目錄有 - r權限。
(2)而如果目錄具有 - x權限,但沒有 - r權限,則用戶可以執行命令cd進入目錄,但是由於目錄沒有讀權限,所以在目錄下即使可以執行ls命令,但是仍然沒有全部讀出目錄下的文檔。

touch, ls, rm, mv需要的權限

touch需要的權限

此例中我們依然用上例的lpff來解釋。

1.首先我們先刪掉可讀可寫權限(即chmod u - rw), 我們進入lpff中,使用touch,創建一個新的test.c,發現權限不夠,不能使用touch。
2.我們給lpff加上可讀權限(即chmod u + r),我們進入lpff,使用touch,同1中權限不夠,還是不能創建。
3.當我們給lpff刪除可讀權限,加上可寫權限(即chmod u - r, chmod u + w), 進入lpff, 再次使用touch,這次可以創建一個新的test.c了。
綜上所述,我們發現touch需要的是可寫權限(即w權限)。

d--x------. 3 lpf lpf 16 1010 11:31 lpff
[lpf@localhost lpd]$ cd lpff
[lpf@localhost lpff]$ touch test.c
touch: 無法創建"test.c": 權限不夠
[lpf@localhost lpff]$ cd -
/home/lpf/lpd
[lpf@localhost lpd]$ chmod u+r lpff
[lpf@localhost lpd]$ cd -
/home/lpf/lpd/lpff
[lpf@localhost lpff]$ touch test.c
touch: 無法創建"test.c": 權限不夠
[lpf@localhost lpff]$ cd -
/home/lpf/lpd
[lpf@localhost lpd]$ chmod u-r lpff
[lpf@localhost lpd]$ chmod u+w lpff
[lpf@localhost lpd]$ cd -
/home/lpf/lpd/lpff
[lpf@localhost lpff]$ touch test.c

ls所需要的權限

接上面的touch test.c後,ls一下,發現權限不夠。這時我們返回上一級目錄,給lpff加一個r權限,再次進入lpff,ls一下出現了test。說明ls需要的權限是r。

[lpf@localhost lpff]$ ls
ls: 無法打開目錄.: 權限不夠
[lpf@localhost lpff]$ cd -
/home/lpf/lpd
[lpf@localhost lpd]$ chmod u+r lpff
[lpf@localhost lpd]$ cd -
/home/lpf/lpd/lpff
[lpf@localhost lpff]$ ls
test.c

mv需要的權限

我們先將lpff的權限全部置零,然後我們給user加一個x的權限,進入hehe,將test.c重命名爲test.1,權限不夠不能操作。我們再給user加一個r的權限,進入lpff,將test.c重命名爲test.1,權限還是不夠,最後我們再給user加一個w的權限,再次進入lpff,將test.c重命名爲test.1,ls一下,這次發現lpff目錄下是test.1了。

[lpf@localhost lpd]$ chmod 000 lpff
[lpf@localhost lpd]$ ll
總用量 0
d---------. 3 lpf lpf 30 1010 11:40 lpff
[lpf@localhost lpd]$ chmod u+x lpff
[lpf@localhost lpd]$ ll
總用量 0
d--x------. 3 lpf lpf 30 1010 11:40 lpff
[lpf@localhost lpd]$ cd lpff
[lpf@localhost lpff]$ mv test.c test.1
mv: 無法將"test.c" 移動至"test.1": 權限不夠
[lpf@localhost lpff]$ cd ..
[lpf@localhost lpd]$ chmod u+r lpff
[lpf@localhost lpd]$ cd -
/home/lpf/lpd/lpff
[lpf@localhost lpff]$  mv test.c test.1
mv: 無法將"test.c" 移動至"test.1": 權限不夠
[lpf@localhost lpff]$ cd -
/home/lpf/lpd
[lpf@localhost lpd]$ chmod u+w lpff
[lpf@localhost lpd]$ ll
總用量 0
drwx------. 3 lpf lpf 30 1010 11:40 lpff
[lpf@localhost lpd]$ cd lpff
[lpf@localhost lpff]$  mv test.c test.1
[lpf@localhost lpff]$ ls
test.1

rm需要的權限

這次我們先返回file目錄下,將lpff的權限重新置零,先給lpff一個x權限,進入lpff,刪除lpff中的test.1。發現權限不夠不能夠刪除。再給lpff一個r權限,進入lpff,刪除lpff中的test.1,還是權限不夠不可以刪除。最後我們給lpff一個w權限,進入hehe後,刪除test.1,這次成功刪除。
說明rm所需要的權限是w。

/home/lpf/lpd/lpff
[lpf@localhost lpff]$ rm test.1
rm: 無法刪除"test.1": 權限不夠
[lpf@localhost lpff]$ cd -
/home/lpf/lpd
[lpf@localhost lpd]$ chmod u+x lpff
[lpf@localhost lpd]$ cd -
/home/lpf/lpd/lpff
[lpf@localhost lpff]$ rm test.1
rm: 無法刪除"test.1": 權限不夠
[lpf@localhost lpff]$ ls
test.1
[lpf@localhost lpd]$ ll
總用量 0
dr-x------. 3 lpf lpf 30 1010 11:48 lpff
[lpf@localhost lpd]$ chmod u+w lpff
[lpf@localhost lpd]$ cd lpff
[lpf@localhost lpff]$ rm test.1
[lpf@localhost lpff]$ ls
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章