關(guān)注wx:CodingTechWork,一起學(xué)習(xí)進(jìn)步。
引言
??Linux中了解用戶和用戶組概念后,我們就需要對文件目錄進(jìn)行賦權(quán)操作,以便于文件訪問權(quán)限的管控,這就涉及到文件的屬性,那用戶和用戶組,以及讀寫執(zhí)行權(quán)限對于文件來說具有數(shù)據(jù)安全性的影響。
文件屬性
ls介紹
??常用命令有:ls -al [file],其中:ls是list的意思,顯示文件的文件名及相關(guān)屬性。-al表示列出所有的文件詳細(xì)的權(quán)限和屬性(也包含了隱藏文件,即文件名第一個(gè)自復(fù)位"."的文件)
ls示例
[root@linux-01 ~/test01]# ls -al t1.txt
-rw-r----- 1 root root 33 2月 8 11:07 t1.txt
[root@linux-01 ~/test01]# ls -al
總用量 20
drwxr-x--- 4 root root 4096 2月 8 11:07 .
dr-xr-x---. 11 root root 4096 2月 8 11:07 ..
drwxr-x--- 2 root root 4096 2月 8 11:04 t01
drwxr-x--- 2 root root 4096 2月 8 11:04 t02
-rw-r----- 1 root root 33 2月 8 11:07 t1.txt
rwx
??讀(r)、寫(w)、執(zhí)行(x)這三種權(quán)限一點(diǎn)也不陌生了。對于文件和目錄有著不一樣的意義。
文件rwx
-
r:read,讀權(quán)限,可讀取文件的實(shí)際目錄,如讀取這個(gè)文件的內(nèi)容。 -
w:write,寫權(quán)限,可以新增或編輯該文件的內(nèi)容,但不具備刪除該文件的權(quán)限。 -
x:execute,執(zhí)行權(quán)限,表示該文件具有可以被系統(tǒng)執(zhí)行的權(quán)限。
目錄rwx
-
r:read,讀權(quán)限,表示具有讀取目錄結(jié)構(gòu)列表的權(quán)限,如查詢該目錄下的文件名數(shù)據(jù),使用ls命令等。 -
w:write,寫權(quán)限,表示具有更改該目錄結(jié)構(gòu)列表的權(quán)限,如新建新的文件和子目錄、刪除已經(jīng)存在的文件和目錄、對已存在的文件或目錄進(jìn)行重命名、轉(zhuǎn)移該目錄中的文件和子目錄位置等。 -
x:execute,執(zhí)行權(quán)限,表示用戶能夠進(jìn)入該目錄成為工作目錄,如cd命令。
文件屬性
屬性說明
- 第1列:表示文件是目錄、文件、或鏈接文件等。后面是3個(gè)為一組,即為文件權(quán)限,其中
r表示read可讀,w表示write可寫,x表示execute可執(zhí)行,且位置固定rwx,若無對應(yīng)權(quán)限則為-。第1組為文件所有者權(quán)限,第2組為同用戶組的權(quán)限,第3組為其他非本用戶組的權(quán)限。 - 第2列:
示例1詳解
drwxr-x--- 2 root root 4096 2月 8 11:04 t01
-
d:表示目錄; -
rwxr-x---:表示目錄所有者權(quán)限為(rwx)可讀、可寫、可執(zhí)行,同用戶組的權(quán)限為(r-x)可讀、不可寫、可執(zhí)行,其他非本用戶組的權(quán)限為(---)無。 -
2:表示有2個(gè)目錄名連接到此節(jié)點(diǎn)(i-node),每個(gè)目錄都會(huì)將它的權(quán)限與屬性記錄到文件系統(tǒng)的i-node中,不過我們使用的目錄樹卻是使用文件名來記錄,所以每個(gè)目錄名就會(huì)連接到一個(gè)i-node,這個(gè)屬性就是記錄有多少不同的目錄名連接到相同的一個(gè)i-node中。 -
root:表示這個(gè)目錄的所有者賬號是root。 -
root:表示這個(gè)目錄的所屬用戶組是root。 -
4096:表示這個(gè)目錄的容量大小是4096B,默認(rèn)單位為B。 -
2月 8 11:04:表示這個(gè)目錄的創(chuàng)建文件日期或者最近的修改日期是2月8日11點(diǎn)4分。 -
t01:表示該目錄名為t01。
示例2詳解
-rw-r----- 1 root root 33 2月 8 11:07 t1.txt
-
-:表示為文件。 -
rw-r-----:表示文件所有者權(quán)限為(rw-)可讀、可寫、不可執(zhí)行,同用戶組的權(quán)限為(r--)可讀、不可寫、不可執(zhí)行,其他非本用戶組的權(quán)限為(---)無。 -
1:表示有1個(gè)文件連接到此節(jié)點(diǎn)(i-node)。 -
root:一個(gè)i-node中。 -
root:表示這個(gè)文件的所有者賬號是root。 -
root:表示這個(gè)文件的所屬用戶組是root。 -
33:表示這個(gè)文件的容量大小是33B。 -
2月 8 11:07:表示這個(gè)目錄的創(chuàng)建文件日期或者最近的修改日期是2月8日11點(diǎn)7分。 -
t1.txt:表示該文件名為t1.txt。
改變屬性
chgrp改變所屬用戶組
??被改變的組名必須在/etc/group文件內(nèi)存在。若不在,使用該命令時(shí),會(huì)報(bào)錯(cuò)。
[root@linux-01 ~/test01]# ls -al t1.txt
-rw-r----- 1 root root 33 2月 8 11:07 t1.txt
[root@linux-01 ~/test01]# chgrp u3 t1.txt
[root@linux-01 ~/test01]# ls -al t1.txt
-rw-r----- 1 root u3 33 2月 8 11:07 t1.txt
[root@linux-01 ~/test01]# chgrp u4 t1.txt
chgrp: 無效的組:"u4"
[root@linux-01 ~/test01]# ls -al t1.txt
-rw-r----- 1 root u3 33 2月 8 11:07 t1.txt
??其中,用戶組可以改成u3,但是不可以改成u4。我們查看/etc/group中是否包含這些組。
[root@linux-01 ~/test01]# grep 'u3' /etc/group
u3:x:992:
[root@linux-01 ~/test01]# grep 'u4' /etc/group
[root@linux-01 ~/test01]#
chown改變文件所有者
??被改變的用戶名必須在/etc/passwd文件內(nèi)存在。若不在,使用該命令時(shí),會(huì)報(bào)錯(cuò)。
[root@linux-01 ~/test01]# ls -al t1.txt
-rw-r----- 1 root u3 33 2月 8 11:07 t1.txt
[root@linux-01 ~/test01]# chown u3 t1.txt
[root@linux-01 ~/test01]# ls -al t1.txt
-rw-r----- 1 u3 u3 33 2月 8 11:07 t1.txt
[root@linux-01 ~/test01]# chown u4 t1.txt
chown: 無效的用戶: "u4"
[root@linux-01 ~/test01]# ls -al t1.txt
-rw-r----- 1 u3 u3 33 2月 8 11:07 t1.txt
??其中,所屬用戶可以改成u3,但是不可以改成u4。我們查看/etc/passwd中是否包含這些組。
[root@linux-01 ~/test01]# grep 'u3' /etc/passwd
u3:x:996:992::/home/u3:/bin/bash
[root@linux-01 ~/test01]# grep 'u4' /etc/passwd
[root@linux-01 ~/test01]#
??當(dāng)然,我們也可以使用chown對用戶和用戶組同時(shí)賦權(quán)。
[root@linux-01 ~/test01]# ls -al t1.txt
-rw-r----- 1 u3 u3 33 2月 8 11:07 t1.txt
[root@linux-01 ~/test01]# chown u1:u1 t1.txt
[root@linux-01 ~/test01]# ls -al t1.txt
-rw-r----- 1 u1 u1 33 2月 8 11:07 t1.txt
遞歸賦權(quán)
??若遇到遞歸目錄需要賦權(quán),我們可以通過chown [-R] 賬號名稱 目錄的方式進(jìn)行賦權(quán)。
[root@linux-01 ~/test01]# chown u2:u2 *
[root@linux-01 ~/test01]# ls -al
總用量 20
drwxr-x--- 4 root root 4096 2月 8 11:07 .
dr-xr-x---. 11 root root 4096 2月 9 00:01 ..
drwxr-x--- 2 u2 u2 4096 2月 8 11:04 t01
drwxr-x--- 2 u2 u2 4096 2月 8 11:04 t02
-rw-r----- 1 u2 u2 33 2月 8 11:07 t1.txt
[root@linux-01 ~/test01]# cd t01
[root@linux-01 ~/test01/t01]# mkdir t0101
[root@linux-01 ~/test01/t01]# cd ..
[root@linux-01 ~/test01]# chown u2:u2 *
[root@linux-01 ~/test01]# ll
總用量 12
drwxr-x--- 3 u2 u2 4096 2月 9 15:18 t01
drwxr-x--- 2 u2 u2 4096 2月 8 11:04 t02
-rw-r----- 1 u2 u2 33 2月 8 11:07 t1.txt
[root@linux-01 ~/test01]# cd t01
[root@linux-01 ~/test01/t01]# ll
總用量 4
drwxr-x--- 2 root root 4096 2月 9 15:18 t0101
[root@linux-01 ~/test01/t01]# cd ..
[root@linux-01 ~/test01]# chown -R u2:u2 *
[root@linux-01 ~/test01]# cd t01/
chmod改變文件權(quán)限
??可以通過使用chmod命令對文件權(quán)限作出變更,有兩種使用形式,一種是使用數(shù)字,另一種使用符號。
chmod數(shù)字方式
計(jì)算方式
??上述總結(jié)中,我們了解到文件的基本權(quán)限有9個(gè),分別是owner,group,others三種身份帶上各自的read、write、execute權(quán)限,如[-rwxrwxrwx],3個(gè)一組,每一組我們都可以使用數(shù)字來對應(yīng)。
| 權(quán)限 | 說明 | 數(shù)字 |
|---|---|---|
| r | read讀權(quán)限 | 4 |
| w | write寫權(quán)限 | 2 |
| x | execute執(zhí)行權(quán)限 | 1 |
??每種身份(owner,group,others)對應(yīng)的(read、write、execute)權(quán)限都需要累加。如[-rw-r--r--],該文件的權(quán)限數(shù)字是644,計(jì)算方式如下:
-
owner=rw-=4+2+0=6; -
group=r--=4+0+0=4; -
others=r--=4+0+0=4;
使用語法
語法:
chmod [-R] xyz 文件或目錄
參數(shù):
-
-R:進(jìn)行遞歸更改,連同子目錄下的所有文件都會(huì)更改權(quán)限。 -
xyz:表示數(shù)字類型的權(quán)限屬性,即rwx對應(yīng)的屬性數(shù)值相加。
示例
[root@linux-01 ~/t1]# ls -al test1.txt
-rw-r----- 1 root root 0 3月 7 11:13 test1.txt
[root@linux-01 ~/t1]# chmod 644 test1.txt
[root@linux-01 ~/t1]# ls -al test1.txt
-rw-r--r-- 1 root root 0 3月 7 11:13 test1.txt
??原權(quán)限為[-rw-r-----],將其改為本用戶可讀寫,其他都只是可讀,那就改為[-rw-r--r--]即數(shù)字為644。
chmod符號方式
??每種身份owner,group,others,其實(shí)還對應(yīng)縮寫u、g、o。另外,a代表all,就是所有身份。
| 命令 | 身份 | 操作 | 權(quán)限 | 對象 |
|---|---|---|---|---|
| chmod | u g o a |
+(加入) -(除法) =(設(shè)置) |
r w x |
文件或目錄 |
使用語法
語法:
chmod u=rw,g=r,o=x 文件目錄chmod u+rw,g-x,o+r 文件目錄chmod a-x 文件目錄
示例
[root@linux-01 ~/t1]# ls -al test1.txt
-rw-r--r-- 1 root root 0 3月 7 11:13 test1.txt
[root@linux-01 ~/t1]# chmod u+x,o+w test1.txt
[root@linux-01 ~/t1]# ls -al test1.txt
-rwxr--rw- 1 root root 0 3月 7 11:13 test1.txt
[root@linux-01 ~/t1]# chmod a+x test1.txt
[root@linux-01 ~/t1]# ls -al test1.txt
-rwxr-xrwx 1 root root 0 3月 7 11:13 test1.txt
[root@linux-01 ~/t1]# chmod a-wx test1.txt
[root@linux-01 ~/t1]# ls -al test1.txt
-r--r--r-- 1 root root 0 3月 7 11:13 test1.txt
[root@linux-01 ~/t1]# chmod o+wx test1.txt
[root@linux-01 ~/t1]# ls -al test1.txt
-r--r--rwx 1 root root 0 3月 7 11:13 test1.txt
chmod參數(shù)詳解
[root@linux-01]# chmod --help
用法:chmod [選項(xiàng)]... 模式[,模式]... 文件...
或:chmod [選項(xiàng)]... 八進(jìn)制模式 文件...
或:chmod [選項(xiàng)]... --reference=參考文件 文件...
Change the mode of each FILE to MODE.
With --reference, change the mode of each FILE to that of RFILE.
-c, --changes like verbose but report only when a change is made
-f, --silent, --quiet suppress most error messages
-v, --verbose output a diagnostic for every file processed
--no-preserve-root do not treat '/' specially (the default)
--preserve-root fail to operate recursively on '/'
--reference=RFILE use RFILE's mode instead of MODE values
-R, --recursive change files and directories recursively
--help 顯示此幫助信息并退出
--version 顯示版本信息并退出
總結(jié)
??了解學(xué)習(xí)Linux系統(tǒng)文件的三種身份(所有者、用戶組與其他人)至關(guān)重要,學(xué)習(xí)這三種身份對應(yīng)的三個(gè)權(quán)限(讀、寫、執(zhí)行)是我們對于變更權(quán)限的基礎(chǔ)。再加以使用chgrp、chown和chmod命令去實(shí)操,發(fā)現(xiàn)玩轉(zhuǎn)文件屬性和權(quán)限不再那么難了。