1.1.1 文件的基本權限的作用:
通過對文件設定權限可以達到以下三種訪問限制權限:
隻允許用戶自己訪問;
允許一個預先指定的用戶組中的用戶訪問;
允許系統中的任何用戶訪問;
1.1.2 查看權限 [root@Linux1 ~]# ll /etc/passwd
-rw-r--r--. 1 root root 2393 1月 26 09:52 /etc/passwd
文件權限基本解釋:
-rw-r--r--. 1 root root 2393 1月 26 09:52 /etc/passwd
其中:文件類型,可以為 p、d、l、s、c、b 和 –
p:表示命名管道文件;
d:表示目錄文件;
l:表示符號鏈接文件;
-:表示普通文件;
s:表示 socket 套接口文件;比如我們啟用 mysql 時,會產生一個 mysql.sock 文件
c:表示字符設備文件;例: 虛擬控制臺 或 tty0
b: 表示塊設備文件; 例: sda, cdrom
1.1.3 權限說明
對於文件來說:
r:讀 cat
w:寫 vim echo
x:執行 運行命名或者腳本
對於目錄來說:
r:讀(看到目錄裡面有什麼) ls
w:在目錄裡面新建文件,刪除,移動 touch mkdir rm mv cp
x:目錄是不能直接運行的,對目錄賦予 x 權限,代表用戶可以進入目錄,也就是說,賦予 x 權限的用戶或群組可以使用 cd 命令。
1.1.4 文件擁有者
UGO:所有者--用戶組--其它用戶
User-所有者: 就是創建文件的用戶,這個用戶擁有對它所創建的文件的一切權限,所有者可以允許其所在的用戶組可以訪問所有者的文件。
Group-用戶組: 用戶組是具有相同特征用戶的邏輯集合,有時我們需要讓多個用戶具有相同的權限,比如查看、修改某一個文件的權限,一種方法是分別對多個用戶進行文件訪問授權,如果有 10 個用戶的話,就需要授權 10 次,顯然這種方法不太合理;另一種方法是建立一個組,讓這個組具有查看、修改此文件的權限,然後將所有需要訪問此文件的用戶放入這個組中,那麼所有用戶就具有瞭和組一樣的權限。這就是用戶組。
Other-其它用戶:系統內的其他所有者用戶就是 other 用戶類
1.1.5 常見幾種文件權限組成
-rwx --- ---:文件所有者對文件具有讀取、寫入和執行的權限。
-rwx r-- r--: 文件所有者具有讀、寫與執行的權限,用戶組裡用戶及其他用戶則具有讀取的權限。
-rw- rw- r-x:文件所有者與同組用戶對文件具有讀寫的權限,而其他用戶僅具有讀取和執行的權限。
drwx--x--x: 目錄所有者具有讀寫與進入目錄的權限,其他用戶近能進入該目錄,卻無法讀取任何數據。
drwx------: 除瞭目錄所有者具有完整的權限之外,其他用戶對該目錄完全沒有任何權限。
舉例如下1:
每個用戶都擁有自己的專屬目錄,通常放置/home 下
[root@Linux1 ~]# ll /home/
總用量 4
drwx------. 15 admin admin 4096 1月 26 09:19 admin
drwx------. 3 team1 team1 78 1月 25 15:54 team1
drwx------. 3 team2 team2 78 1月 25 15:54 team2
drwx------. 5 user1 user1 157 1月 26 10:39 user1
註: [rwx------]表示目錄所有者本身擁有的權限,其它用戶是無法進入的。 root 可以。
舉例如下2:
你以什麼用戶身份登錄,那麼你創建的文件或目錄,自動成為該文件的所屬主和組
[root@Linux1 ~]# useradd user1
[root@Linux1 ~]# su - user1
[user1@Linux1 ~]$ touch a.txt
[user1@Linux1 ~]$ ll a.txt
-rw-rw-r--. 1 user1 user1 0 1月 26 09:52 a.txt
互動: su - user1 和 su user1 的區別?
[root@Linux1 ~]# su - user1 #從 root 切換到普通用戶 user1
上一次登錄:三 1月 26 09:52:49 CST 2022pts/0 上
[user1@Linux1 ~]$ pwd
/home/user1
[user1@Linux1 ~]$ exit
登出
[root@Linux1 ~]# su user1
[user1@Linux1 root]$ pwd
/root
[user1@Linux1 root]$ touch a.txt
touch: 無法創建"a.txt": 權限不夠
[user1@Linux1 root]$ cd /home/user1/
[user1@Linux1 ~]$ touch a.txt
[user1@Linux1 ~]$ exit
exit
註: su - 用戶,加上-減號,切換用戶時,會把用戶傢目錄和環境變量都徹底切成用 user1 的。 不加-減號,保留切換前的路徑和環境變量。 一般切換用戶都加減號- 。
1.1.6 更改文件的屬主和屬組
改變文件的所屬關系用到命令:
chown:可以用來改變文件(或目錄)的屬主
chgrp:可以用來改變文件(或目錄)的默認屬組(不常用)
如果你要對目錄進行操作,加參數 -R
語法:chown
user:group filename 比如:chown hr:san a.txt 把文件的屬主改為 hr 屬組改為san
chown user filename 比如:chown san a.txt 把文件的屬主改為 san 用戶
chown :group filename 比如: chown :miao a.txt 把文件的屬組改為 miao 組 :也可以用.代替
-R :遞歸(目錄下的所有內容都更改,否則隻修改目錄)
例: [root@Linux1 ~]# touch {a,b,c}.txt
[root@Linux1 ~]# ll *.txt
-rw-r--r--. 1 root root 0 1月 26 10:32 a.txt
-rw-r--r--. 1 root root 0 1月 26 10:32 b.txt
-rw-r--r--. 1 root root 0 1月 26 10:32 c.txt
[root@Linux1 ~]# chown user1 a.txt
[root@Linux1 ~]# ll a.txt
-rw-r--r--. 1 user1 root 0 1月 26 10:32 a.txt
[root@Linux1 ~]# chown user1:user1 a.txt
[root@Linux1 ~]# ll a.txt
-rw-r--r--. 1 user1 user1 0 1月 26 10:32 a.txt
[root@Linux1 ~]# chown :root a.txt
[root@Linux1 ~]# ll a.txt
-rw-r--r--. 1 user1 root 0 1月 26 10:32 a.txt
[root@Linux1 ~]# chown .bin a.txt
[root@Linux1 ~]# ll a.txt
-rw-r--r--. 1 user1 bin 0 1月 26 10:32 a.txt
互動:一個文件隻有讀的權限,擁有者是否可以寫這個文件?
實驗:
[root@Linux1 ~]# su - user1
上一次登錄:三 1月 26 10:10:25 CST 2022pts/0 上
[user1@Linux1 ~]$ touch a.txt
[user1@Linux1 ~]$ ll a.txt
-rw-rw-r--. 1 user1 user1 0 1月 26 10:37 a.txt
[user1@Linux1 ~]$ chmod 000 a.txt
[user1@Linux1 ~]$ ll a.txt
----------. 1 user1 user1 0 1月 26 10:37 a.txt
[user1@Linux1 ~]$ vim a.txt # 寫入 aaa , :wq! 保存
在另一個終端上,以 root 身份登錄:
[root@Linux1 ~]# cat /home/user1/a.txt
aaa
註:使用 user1 身份,無法查看 cat /home/user1/a.txt
[user1@Linux1 ~]$ cat /home/user1/a.txt
cat: /home/user1/a.txt: 權限不夠
實驗結果:文件所有者一定可以寫文件。 就像 root 可以對 shadow 強制寫。 因 shadow 的擁有者是 root
1.1.7 修改權限
方法 1:使用字符設定
修改權限用的命令:chmod
作用:修改文件,目錄的權限
語法:chmod [對誰操作] [操作符] [賦於什麼權限] 文件名
對誰操作:
u----> 用戶 user,表示文件或目錄的所有者
g---->用戶組 group,表示文件或目錄所屬的用戶組
o---->其它用戶 others
a---->所有用戶 all
操作符:
權限:r w x
例如下面的組合:
u-w user 擁有者
g+x group 組
o=r other 其他人
a+x all 所有人
741a70e74aa754476583368eee9fcdcced4735b7e4c945b0c214f37bd628682a
例 :
互動:rw- 的值是多少 答: 4+2=6
rwx r-x r-x 的值是多少 答: rwx=4+2+1=7 ; r-x=4+1=5 rwx r-x r-x=755
語法:
chmod 755 文件或文件夾名字
chmod a=rwx b.txt 等於 chmod 777 b.txt
例:
[root@Linux1 ~]# touch dd.txt
[root@Linux1 ~]# ll dd.txt
-rw-r--r--. 1 root root 0 1月 26 10:58 dd.txt
[root@Linux1 ~]# chmod 755 dd.txt
[root@Linux1 ~]# ll dd.txt
-rwxr-xr-x. 1 root root 0 1月 26 10:58 dd.txt
[root@Linux1 ~]# chmod 700 dd.txt
[root@Linux1 ~]# ll dd.txt
-rwx------. 1 root root 0 1月 26 10:58 dd.txt
1.1.8 權限對文件和目錄的影響
有三種權限可以應用:讀取,寫入與執行,這些權限對訪問文件和目錄的影響如下:
權限 對文件的影響 對目錄的影響 r(讀取) 可以讀取文件的內容 可以列出目錄的內容(文件名)
w(寫入) 可以更改文件的內容 可以創建或刪除目錄中的任意文件
x(執行) 可以作為命令執行文件 可以訪問目錄的內容(取決於目錄中文件的權限)
擴展:補碼
為什麼我們創建的文件的權限默認是 644 呢?
我們創建文件的默認權限是怎麼來的?
umask 命令允許你設定文件創建時的缺省模式,對應每一類用戶(文件屬主、同組用戶、其他用戶)存在一個相應的 umask 值中的數字。
文件默認權限=666 ,目錄默認權限=777
我們一般在/etc/profile、 [HOME]/.bash_profile 或[HOME]/.profile 中設置 umask 值。
永久生效,編輯用戶的配置文件 vim .bash_profile
[root@Linux1 ~]# vim /etc/profile
e0e22f269979529ef28822fa39a3f604
註: UID 大於 199 且用戶的組名和用戶名一樣,那麼 umask 值為 002,否則為 022。
註: -gt 在 shell 中表示大於; id -gn 顯示組名,id -un 顯示用戶名 id -g 顯示用戶組 ID ,id -u 顯示用戶 id
權限科學的計算方法步驟:
1、將默認權限(目錄 777,文件 666)和 umask 值都轉換為 2 進制
2、對 umask 取反
3、將默認權限和 umask 取反後的值做與運算
4、將得到的二進制值再轉換 8 進制,即為權限,
http://tool.lu/hexconvert/ 在線進制轉換器