Linux 筆記分享八:檔案許可權的設定

yuanshang發表於2019-01-08
-rw-r--r--
  • 第一個-是檔案型別(-代表檔案,d代表目錄,|代表軟連結檔案)
  • 關於後9位
rw- r-- r--
u所有者 g所屬組 o其他人

r是讀許可權,w是寫許可權,x是執行許可權

1、chmod

修改檔案的許可權

chmod [選項] 模式 檔名
  • 選項

-R: 遞迴操作(賦予目錄許可權時,目錄下所有檔案都進行賦予許可權)

  • 模式
[ugoa][+-=][mode=421]

[ugo]和[+-]的方式不方便,需要知道檔案的許可權是什麼,才能操作

a是all的意思,指所有人

  • 檔案所有者加上執行許可權
chmod u+x cangls.av
  • 檔案所屬組和其他人加上寫許可權
chmod g+w,o+w cangls.av
  • 把上面給予的許可權去掉
chmod u-x,g-w,o-w cangls.av
  • 等於方式賦予許可權
chmod u=rwx,g=rw cangls.av
  • 以all和等於的方式賦予許可權,即所有人一樣的許可權,不現實,不常用
chmod a=rw cangls.av
  • 最方便的許可權賦予方式
許可權的數字表示

r ---- 4
w ---- 2
x ---- 1

例如:

rwx r-x r-x
7 5 5

原因:

數字許可權其實是用3位二進位制表示的,其轉換為十進位制數對應的就是4,2,1

  • 賦予檔案最高許可權
chmod 777 cangls.av
  • 常用數字許可權
777 --- 代表所有人都有最高許可權
755 --- 執行檔案的常用許可權
644 --- 普通檔案的常用許可權

1、許可權對檔案的作用

  • r: 讀取檔案內容(cat more head tail)
  • w: 編輯、新增、修改檔案內容(vi echo)

但不包括刪除檔案

  • x: 可執行

2、關於為什麼有檔案的寫許可權,卻不能刪除檔案的問題解釋

對於某個目錄或檔案擁有的許可權,針對的是裡面的內容,而不是檔案本身

由此,對檔案的刪除是對檔案所在目錄的寫,故必須有目錄的寫許可權才可以

3、許可權對目錄的作用

  • r: 可以查詢目錄下檔名(ls)
  • w: 具有修改目錄結構的許可權。如新建檔案和目錄,刪除此目錄下檔案和目錄,重新命名此目錄下檔案和目錄,剪下(touch rm mv cp)
  • x: 可以進入目錄(cd)

4、總結

對檔案來講: 最高許可權是 x(執行)
對目錄來講: 最高許可權是 w(寫)

對檔案要少賦執行許可權,對目錄要少賦寫許可權

  • 對於目錄的許可權

對目錄僅賦予讀許可權沒有意義

對目錄僅賦予執行許可權沒有意義

有意義的三種許可權: 0(沒有任何許可權)、5(讀和執行,基本許可權)、7(讀、寫和執行,最高許可權)

5、舉個例子哈(一步一步來看)

  • root下建立一個使用者,並賦予密碼
[root@localhost ~]# useradd user1
[root@localhost ~]# passwd user1
  • 另外再登入一個shell,使用者是user1
  • root下進入user1的家目錄,並建立測試目錄和檔案
[root@localhost ~]# cd /home/user1
[root@localhost user1]# mkdir 123
[root@localhost user1]# touch 123/abc

此時目錄123的許可權是: drwxr-xr-x(755)

  • root下修改123目錄的許可權和abc檔案的許可權,使其他人的許可權為0
[root@localhost user1]# chmod 750 123
[root@localhost user1]# chmod 640 123/abc
  • 此時user1下不能進入123目錄和檢視123目錄
  • root下修改123目錄的許可權,使其他人的許可權為僅讀
[root@localhost user1]# chmod 754 123
  • 此時user1下不能進入123目錄,但檢視123目錄亂碼,不能用
  • root下修改123目錄的許可權,使其他人擁有基本許可權
[root@localhost user1]# chmod 755 123
  • 此時user1下能查能進入123目錄,但是不能在裡面建立、刪除檔案或目錄,並且對abc檔案沒有讀寫執行許可權
  • root下修改abc檔案,使其他人擁有隻讀許可權
[root@localhost user1]# chmod 644 123/abc
  • 此時user1下可以讀abc內容,但不能執行和修改
  • root下修改abc檔案,使其他人擁有讀寫許可權
[root@localhost user1]# chmod 646 123/abc
  • 此時user1下可以讀和修改abc內容,但不能執行,且不能刪除此檔案,因為123目錄對於user1沒開放寫許可權
  • root下修改123目錄的許可權,使其他人擁有最高許可權
[root@localhost user1]# chmod 757 123
  • 此時user1下可以在123目錄下,建立和刪除檔案

6、我的總結

  • 針對目錄

755是最常用的許可權設定方式,(目錄所有者可以刪除和建立目錄下檔案,其他人只能進入看看)

稍微嚴謹一點是750,其他人進都進不來

極端嚴謹一點是700,就我自己能進能看能改,其他所有拒之門外

  • 針對普通檔案

644是最常用的許可權設定方式,(檔案所有者能看能改,其他人只能看)

640是其他人不能看不能改

600是其他所有人不能看不能改

  • 針對可執行檔案

754是最常用的許可權設定方式,(檔案所有者可以看改執行,組內可以執行,其他人只能看)

750、740、700都是可以的

  • 還有一點

檔案所有者必須為7或者是6,要不就是傻逼

1、chown

修改檔案的所有者

chown 使用者名稱 檔名

例如:

chown ds fengj.av
  • 同時改變所屬組
chown root:root fengj.av

2、chgrp

修改檔案的所屬組

chgrp 組名 檔名

例如:

chgrp group1 fengj.av

完全可以用chown改變所屬組,因此這個命令作用就不是那麼重要了

3、讓使用者對檔案及目錄擁有一定的許可權

  • 要求

擁有一個av目錄

讓加藤老師擁有所有的許可權(7)

讓本課程學員有檢視的許可權(5)

其他所有人不許檢視這個目錄(0)

4、總結

  • 分配檔案基本許可權時,核心原則:

在最小許可權情況下能夠實現要求即可!

嚴謹不負責任的賦777這樣的二逼許可權!

Windows在目錄中建立檔案是繼承的目錄許可權,Linux則不是

1、umask

檢視預設許可權

umask

返回:

0022

第一位0: 檔案特殊許可權

022: 檔案預設許可權

  • 檔案預設許可權

檔案預設不能建立為執行檔案,必須手工賦予執行許可權

所以檔案預設許可權最大為666

預設許可權需要換算成字母再相減

建立檔案之後的預設許可權,為666減去umask值

例如:

檔案預設最大許可權666,umask值022
-rw-rw-rw- 減去 -----w--w- 等於 -rw-r--r--

再例如:

檔案預設最大許可權666,umask值033
-rw-rw-rw- 減去 -----wx-wx 等於 -rw-r--r--
  • 目錄的預設許可權

目錄預設許可權最大為777

預設許可權需要換算成字母再相減

建立檔案之後的預設許可權,為777減去umask值

例如:

目錄預設最大許可權為777,umask值022
-rwxrwxrwx 減去 -----w--w- 等於 -rwxr-xr-x
  • 修改預設許可權
umask 0033

命令修改只是臨時生效,想要永久生效需要修改/etc/profile檔案

本作品採用《CC 協議》,轉載必須註明作者和本文連結
我們是一群被時空壓迫的孩子。 ---- 愛因斯坦

相關文章