『學了就忘』Linux基礎命令 — 25、文件基本許可權的管理

Linux系統的許可權有6種。

  • 讀寫執行為基本許可權。
  • umask為默認許可權。
  • 後邊還有4種許可權,會在之後的許可權管理部分詳細講解。

1、文件和目錄的默認許可權

我們先創建一個文件abc,然後查看abc文件的長資訊。

[root@192 ~]# touch abc
[root@192 ~]# ls -l abc 
-rw-r--r--. 1 root root 0 12月 30 05:32 abc

可以看到上邊新創建的文件,直接就有一定的許可權,我們把這種許可權叫默認許可權。

Linux系統是如何得到文件和目錄的默認許可權?
是通過umask值來獲得文件和目錄的默認許可權。

2、umask默認許可權

(這個值基本上不用我們自己修改,但是我們一定要知道這個,並且能看懂就可以了。)

(1)查看系統的umask許可權

[root@localhost ~ ] # umask
0022

注意:我們之前學的許可權只有三位,我們現在忽略第一位,第一位的作用在以後文章中會詳細說明。

(2)用八進位數值顯示umask許可權

#用字母表示文件和目錄的初始許可權
[root@localhost ~ ] # umask -S
u=rwx,g=rx,O=rx

(3)umask許可權的計算方法

我們需要先了解一下新建文件和目錄的默認最大許可權。

  • 對文件來講,新建文件的默認最大許可權是666,沒有執行(x)許可權。這是因為執行許可權對文件來講比較危險,不能在新建文件的時候默認賦予,而必須通過用戶手工賦予。
  • 對目錄來講,新建目錄的默認最大許可權是777。這是因為對目錄而言,執行(x)許可權僅僅代表進入目錄,所以即使建立新文件時直接默認賦予,也沒有什麼危險。

按照官方的標準演算法,umask默認許可權需要使用二進位進行邏輯與邏輯非聯合運算才可以得到正確的新建文件和目錄的默認許可權。這種方法對電腦來說很好計算,但是對人來說既不好計算,也不好理解,不推薦。

我們在這裡還是按照許可權字母來講解umask許可權的計算方法。(推薦演算法)

我們就按照默認的umask值是022來分別計算一下新建文件和目錄的默認許可權吧。

提示:022,表示三位算一個許可權,第一位表示文件類型。

  • 文件的默認許可權最大只能是666,而umask的值是022,如下:
    -rw-rw-rw-減去-----w--w-等於-rw-r--r--
  • 目錄的默認許可權最大可以是777,而umask的值是022
    drwxrwxrwx減去d----w--w-等於drwx-r-xr-x

(4)注意:umask默認許可權的計算絕不是數字直接相減。

例如umask是033呢?

修改umask值命令為:[root@192 ~]# umask 033

注意:(臨時修改,如果需要永久修改,就要修改配置文件)

文件的默認許可權最大只能是666,而umask的值是033,如下:
-rw-rw-rw-減去---wx-wx等於-rw-r-r-
r-=r
ww=-
-x=-x(所有負的都為-

例如umask是033用數字相減呢?
666-033=633
翻譯成許可權為-rw--rx-rx,這就不對了。

提示:

修改umask值的配置文件在/etc/profile文件,/etc/profile文件是環境變數配置文件。

什麼是環境變數配置文件?
修改該文件內容,會影響當前系統的操作環境。
環境變數配置文件並不是只有這一個,默認是有4個環境變數配置文件,另加一個目錄(目錄中有很多配置文件,以後用到哪個說哪個。)。

說明:

我們進入到上邊所提到的/etc/profile環境變數配置文件,可以找到關於umask值的程式碼塊,如下所示:

[user1@192 ~]$ cat /etc/profile

if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi

#在Linux系統中root用戶的UID=0,而普通用戶的UID>500,500以內是留給系統用戶的。
#[ "`id -gn`" = "`id -un`" ]判斷的是用戶的UID和GID是相等的,暫時可以忽略不看。

root用戶的umask值
[root@192 ~]# umask 
0022

普通用戶的umask值
[user1@192 ~]$ umask
0002

總結:

umask值重要度很高,默認自動賦值並生效。但是不需要用戶介入(修改),能看懂,知道他就可以了。