命令名稱:chmod
創(chuàng)新互聯(lián)公司成都網(wǎng)站建設(shè)按需開發(fā),是成都網(wǎng)站建設(shè)公司,為成都葡萄架提供網(wǎng)站建設(shè)服務(wù),有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設(shè)計服務(wù):原型圖制作、網(wǎng)站創(chuàng)意設(shè)計、前端HTML5制作、后臺程序開發(fā)等。成都網(wǎng)站制作熱線:13518219792
命令英文原意:change the permissions mode of a file
有兩種角色可以執(zhí)行該命令,一種是 root 用戶,另一種就是文件的所有者。
語法:
大括號里的內(nèi)容表示只能選一個,其中 u 表示該文件的所有者,g 表示所屬組,o 表示其他人,a 表示所有角色。
比如,給 abc.txt 文件的所屬組加一個寫的權(quán)限:
也可以同時做多個授權(quán),比如給文件所有者加上執(zhí)行權(quán)限,給其他人去掉寫權(quán)限:
還可以用數(shù)字表示權(quán)限。權(quán)限的數(shù)字表示:
如果一個文件的權(quán)限是 rw-r--r--,那么翻譯成數(shù)字就是 644,反過來,如果要更改文件的權(quán)限,可以這樣寫:
這樣文件的權(quán)限就改成 rw-r----- 了。
還有一個選項 -R 是遞歸修改權(quán)限,該選項的功能是更改某個目錄的權(quán)限的同時更改該目錄下所有的子目錄和文件的權(quán)限。
命令名稱: chown
英文原意:change owner
語法:chown 用戶名 文件
只有管理員賬戶可以更改文件的所屬用戶。
例如:
命令名稱:chgrp
英文原意:change group
語法:chgrp 組名 文件
例如:
命令名稱:umask
使用命令 umask -S 可以查看新建文件或目錄的默認權(quán)限。
現(xiàn)在顯示的是新建目錄的默認權(quán)限,該目錄的所有者的默認權(quán)限是 rwx,所屬組的默認權(quán)限是 rx,其他人的默認權(quán)限是 rx。為什么說這是新建目錄的默認權(quán)限而不是新建文件的默認權(quán)限,如果你查看新建文件的權(quán)限,會發(fā)現(xiàn)是 rw-r--r-- ,與新建目錄的權(quán)限 rwxr-xr-x 相比,每種角色的權(quán)限都少了 x。所以說,只要知道了新建目錄的默認權(quán)限,再去掉 x 權(quán)限,就是新建文件的默認權(quán)限。
如果直接執(zhí)行 umask 命令,會顯示一個數(shù)字。
這個數(shù)字叫做權(quán)限掩碼,用 777 減去其后三位 022 就得到了每種角色的權(quán)限,即 755。翻譯成字母就是 rwxr-xr-x 。
若想更改新建目錄或文件的默認權(quán)限,只需執(zhí)行 umask 權(quán)限掩碼 即可。
例如,我想把新建目錄的默認權(quán)限改成 rwxr-r-- ,翻譯成數(shù)字就是 744,再用 777 減去 744 就得到了權(quán)限掩碼 033。
雖然 Linux 系統(tǒng)的目錄或文件的默認權(quán)限可以修改,但是 Linux 這樣分配權(quán)限是有一定道理的,最好不要輕易修改。
有三種不同類型的用戶可對文件或目錄進行訪問:文件所有者,同組用戶、其他用戶。所有者一般是文件的創(chuàng)建者。所有者可以允許同組用戶有權(quán)訪問文件,還可以將文件的訪問權(quán)限賦予系統(tǒng)中的其他用戶。在這種情況下,系統(tǒng)中每一位用戶都能訪問該用戶擁有的文件或目錄。
每一文件或目錄的訪問權(quán)限都有三組,每組用三位表示,分別為文件屬主的讀、寫和執(zhí)行權(quán)限;與屬主同組的用戶的讀、寫和執(zhí)行權(quán)限;系統(tǒng)中其他用戶的讀、寫和執(zhí)行權(quán)限。當用ls -l命令顯示文件或目錄的詳細信息時,最左邊的一列為文件的訪問權(quán)限。例如:
$ ls?-l sobsrc.?tgz
-rw-r--r--?1?root root?483997?Ju1?l5?17:3l?sobsrc.?tgz
橫線代表空許可。r代表只讀,w代表寫,x代表可執(zhí)行。注意這里共有10個位置。第一個字符指定了文件類型。在通常意義上,一個目錄也是一個文件。如果第一個字符是橫線,表示是一個非目錄的文件。如果是d,表示是一個目錄。例如:
– rw- r– r–
普通文件 文件主 組用戶 其他用戶
是文件sobsrc.tgz 的訪問權(quán)限,表示sobsrc.tgz是一個普通文件;sobsrc.tgz的屬主有讀寫權(quán)限;與sobsrc.tgz屬主同組的用戶只有讀權(quán)限;其他用戶也只有讀權(quán)限。
確定了一個文件的訪問權(quán)限后,用戶可以利用Linux系統(tǒng)提供的chmod命令來重新設(shè)定不同的訪問權(quán)限。也可以利用chown命令來更改某個文件或目錄的所有者。利用chgrp命令來更改某個文件或目錄的用戶組。
下面分別對這些命令加以介紹。
chmod 命令
chmod命令是非常重要的,用于改變文件或目錄的訪問權(quán)限。用戶用它控制文件或目錄的訪問權(quán)限。
以主文件夾下的一個名為“cc”的文件夾為例。下面一步一步介紹如何修改權(quán)限:
1.打開終端。輸入”su”(沒有引號)
2.接下來會要你輸入密碼,輸入你的root密碼。
3.假設(shè)我的文件夾在主目錄里,地址為? /var/home/dengchao/cc? 。假設(shè)我要修改文件權(quán)限為777,則在終端輸入? chmod? 777 /var/home/userid/cc 文件夾的權(quán)限就變?yōu)榱?77。
如果是修改文件夾及子文件夾權(quán)限可以用? chmod -R 777 /var/home/userid/cc
具體的權(quán)限(例如777的含意等)在下面解釋下:
1.777有3位,最高位7是設(shè)置文件所有者訪問權(quán)限,第二位是設(shè)置群組訪問權(quán)限,最低位是設(shè)置其他人訪問權(quán)限。
其中每一位的權(quán)限用數(shù)字來表示。具體有這些權(quán)限:
r(Read,讀取,權(quán)限值為4):對文件而言,具有讀取文件內(nèi)容的權(quán)限;對目錄來說,具有瀏覽目 錄的權(quán)限。
w(Write,寫入,權(quán)限值為2):對文件而言,具有新增、修改文件內(nèi)容的權(quán)限;對目錄來說,具有刪除、移動目錄內(nèi)文件的權(quán)限。
x(eXecute,執(zhí)行,權(quán)限值為1):對文件而言,具有執(zhí)行文件的權(quán)限;對目錄了來說該用戶具有進入目錄的權(quán)限。
2. 首先我們來看如何確定單獨一位上的權(quán)限數(shù)值,例如最高位表示文件所有者權(quán)限數(shù)值,當數(shù)字為7時,7用“rwx”表示 –{4(r)+2(w)+1(x)=7}–又如果數(shù)值為6,則用“rw-”表示–{4(r)+2(w)+0(x)=6}–,”-”表示不具備權(quán)限,這里表 示不具備“執(zhí)行”權(quán)限。
假如我們設(shè)定其他用戶的訪問權(quán)限為 “r–”,則數(shù)值為4+0+0=4
一開始許多初學者會被搞糊涂,其實很簡單,我們將rwx看成二進制數(shù),如果有則用1表示,沒有則有0表示,那么rwx則可以表示成為:111
而二進制的111就是7。
3.我們再來看下怎么確定3個數(shù)位上的權(quán)限。假如我們要給一個文件設(shè)置權(quán)限,具體權(quán)限如下:
文件所有者有“讀”、“寫”、“執(zhí)行”權(quán)限,群組用戶有“讀”權(quán)限,其他用戶有“讀”權(quán)限,則對應的字母表示為”rwx r– r–“,對應的數(shù)字為744
一般都是最高位表示文件所有者權(quán)限值,第二位表示群組用戶權(quán)限,最低位表示其他用戶權(quán)限。
下面來舉些例子熟悉下。
權(quán)限 ? ?數(shù)值 ?
rwx rw- r– ? ?764 ?
rw- r– r– ? ?644 ?
rw- rw- r– ? ?664 ?
該命令有兩種用法。一種是包含字母和操作符表達式的文字設(shè)定法;另一種是包含數(shù)字的數(shù)字設(shè)定法。
1. 文字設(shè)定法
chmod [who] [+ | – | =] [mode] 文件名?
命令中各選項的含義為:
操作對象who可是下述字母中的任一個或者它們的組合:
u 表示“用戶(user)”,即文件或目錄的所有者。
g 表示“同組(group)用戶”,即與文件屬主有相同組ID的所有用戶。
o 表示“其他(others)用戶”。
a 表示“所有(all)用戶”。它是系統(tǒng)默認值。
操作符號可以是:
+ 添加某個權(quán)限。
– 取消某個權(quán)限。
= 賦予給定權(quán)限并取消其他所有權(quán)限(如果有的話)。
設(shè)置mode所表示的權(quán)限可用下述字母的任意組合:
r 可讀。
w 可寫。
x 可執(zhí)行。
X 只有目標文件對某些用戶是可執(zhí)行的或該目標文件是目錄時才追加x 屬性。
s 在文件執(zhí)行時把進程的屬主或組ID置為該文件的文件屬主。方式“u+s”設(shè)置文件的用戶ID位,“g+s”設(shè)置組ID位。
t 保存程序的文本到交換設(shè)備上。
u 與文件屬主擁有一樣的權(quán)限。
g 與和文件屬主同組的用戶擁有一樣的權(quán)限。
o 與其他用戶擁有一樣的權(quán)限。
-c?:?若該檔案權(quán)限確實已經(jīng)更改,才顯示其更改動作
-f?:?若該檔案權(quán)限無法被更改也不要顯示錯誤訊息
-v?:?顯示權(quán)限變更的詳細資料
-R?:?對目前目錄下的所有檔案與子目錄進行相同的權(quán)限變更(即以遞回的方式逐個變更)
–help?:?顯示輔助說明
–version?:?顯示版本
文件名:以空格分開的要改變權(quán)限的文件列表,支持通配符。在一個命令行中可給出多個權(quán)限方式,其間用逗號隔開。例如:chmod g+r,o+r example使同組和其他用戶對文件example 有讀權(quán)限。
例1:
$ chmod a+x sort
即設(shè)定文件sort的屬性為:
文件屬主(u) 增加執(zhí)行權(quán)限
與文件屬主同組用戶(g) 增加執(zhí)行權(quán)限
其他用戶(o) 增加執(zhí)行權(quán)限
例2:
$ chmod ug+w,o-x text
即設(shè)定文件text的屬性為:
文件屬主(u) 增加寫權(quán)限
與文件屬主同組用戶(g) 增加寫權(quán)限
其他用戶(o) 刪除執(zhí)行權(quán)限
例3:
$ chmod u+s a.out
假設(shè)執(zhí)行chmod后a.out的權(quán)限為(可以用ls – l a.out命令來看):
–rws--x--x?1?inin users?7192?Nov?4?14:22?a.out
并且這個執(zhí)行文件要用到一個文本文件shiyan1.c,其文件存取權(quán)限為“–rw——-”,即該文件只有其屬主具有讀寫權(quán)限。
當其他用戶執(zhí)行a.out這個程序時,他的身份因這個程序暫時變成inin(由于chmod命令中使用了s選項),所以他就能夠讀取shiyan1.c這個文件(雖然這個文件被設(shè)定為其他人不具備任何權(quán)限),這就是s的功能。
因此,在整個系統(tǒng)中特別是root本身,最好不要過多的設(shè)置這種類型的文件(除非必要)這樣可以保障系統(tǒng)的安全,避免因為某些程序的bug而使系統(tǒng)遭到入侵。
例4:
$ chmod a–x mm.txt
$ chmod?–x mm.txt
$ chmod ugo–x mm.txt
以上這三個命令都是將文件mm.txt的執(zhí)行權(quán)限刪除,它設(shè)定的對象為所有使用者。
2. 數(shù)字設(shè)定法
我們必須首先了解用數(shù)字表示的屬性的含義:0表示沒有權(quán)限,1表示可執(zhí)行權(quán)限,2表示可寫權(quán)限,4表示可讀權(quán)限,然后將其相加。所以數(shù)字屬性的格式應為3個從0到7的八進制數(shù),其順序是(u)(g)(o)。
例如,如果想讓某個文件的屬主有“讀/寫”二種權(quán)限,需要把4(可讀)+2(可寫)=6(讀/寫)。
數(shù)字設(shè)定法的一般形式為:chmod [mode] 文件名?
例1:
$ chmod?644?mm.txt
$ ls?–l
即設(shè)定文件mm.txt的屬性為:
-rw-r--r--?1?inin users?1155?Nov?5?11:22?mm.txt
文件屬主(u)inin 擁有讀、寫權(quán)限
與文件屬主同組人用戶(g) 擁有讀權(quán)限
其他人(o) 擁有讀權(quán)限
例2:
$ chmod?750?wch.txt
$ ls?–l
-rwxr-x---?1?inin users?44137?Nov?12?9:22?wchtxt
即設(shè)定wchtxt這個文件的屬性為:
文件主本人(u)inin 可讀/可寫/可執(zhí)行權(quán)
與文件主同組人(g) 可讀/可執(zhí)行權(quán)
其他人(o) 沒有任何權(quán)限
chgrp命令
功能:改變文件或目錄所屬的組。
語法:chgrp?[選項] group filename?
參數(shù):
-c或–changes 效果類似”-v”參數(shù),但僅回報更改的部分。
-f或–quiet或–silent 不顯示錯誤信息。
-h或–no-dereference 只對符號連接的文件作修改,而不更動其他任何相關(guān)文件。
-R或–recursive 遞歸處理,將指定目錄下的所有文件及子目錄一并處理。
-v或–verbose 顯示指令執(zhí)行過程。
–help 在線幫助。
–reference=lt;參考文件或目錄gt; 把指定文件或目錄的所屬群組全部設(shè)成和參考文件或目錄的所屬群組相同。
–version 顯示版本信息。
該命令改變指定指定文件所屬的用戶組。其中g(shù)roup可以是用戶組ID,也可以是/etc/group文件中用戶組的組名。文件名是以空格分開的要改變屬組的文件列表,支持通配符。如果用戶不是該文件的屬主或超級用戶,則不能改變該文件的組。
該命令的各選項含義為:
– R 遞歸式地改變指定目錄及其下的所有子目錄和文件的屬組。
例1:
$?chgrp?-?R book?/opt/local?/book
改變/opt/local /book/及其子目錄下的所有文件的屬組為book。
chown?命令
功能:更改某個文件或目錄的屬主和屬組。這個命令也很常用。例如root用戶把自己的一個文件拷貝給用戶yusi,為了讓用戶yusi能夠存取這個文件,root用戶應該把這個文件的屬主設(shè)為yusi,否則,用戶yusi無法存取這個文件。
語法:chown?[選項] 用戶或組 文件
說明:chown將指定文件的擁有者改為指定的用戶或組。用戶可以是用戶名或用戶ID。組可以是組名或組ID。文件是以空格分開的要改變權(quán)限的文件列表,支持通配符。
參數(shù)說明:
user : 新的檔案擁有者的使用者 ID
group : 新的檔案擁有者的使用者群體(group)
-c : 若該檔案擁有者確實已經(jīng)更改,才顯示其更改動作
-f : 若該檔案擁有者無法被更改也不要顯示錯誤訊息
-h : 只對于連結(jié)(link)進行變更,而非該 link 真正指向的檔案
-v : 顯示擁有者變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的擁有者變更(即以遞回的方式逐個變更)
–help : 顯示輔助說明
–version : 顯示版本
例1:把文件yusi123.com的所有者改為yusi。
$?chown?yusi yusi123.com
例2:把目錄/demo及其下的所有文件和子目錄的屬主改成yusi,屬組改成users。
$ chown?-?R yusi.users?/demo
例如:chown qq /home/qq ?(把home目錄下的qq目錄的擁有者改為qq用戶)
例如:chown -R qq /home/qq ?(把home目錄下的qq目錄下的所有子文件的擁有者改為qq用戶)
權(quán)限簡介
Linux系統(tǒng)上對文件的權(quán)限有著嚴格的控制,用于如果相對某個文件執(zhí)行某種操作,必須具有對應的權(quán)限方可執(zhí)行成功。
Linux下文件的權(quán)限類型一般包括讀,寫,執(zhí)行。對應字母為 r、w、x。
Linux下權(quán)限的粒度有
擁有者 、群組 、其它組 三種。每個文件都可以針對三個粒度,設(shè)置不同的rwx(讀寫執(zhí)行)權(quán)限。通常情況下,一個文件只能歸屬于一個用戶和組,
如果其它的用戶想有這個文件的權(quán)限,則可以將該用戶加入具備權(quán)限的群組,一個用戶可以同時歸屬于多個組。
Linux上通常使用chmod命令對文件的權(quán)限進行設(shè)置和更改。
一、快速入門
更改文件權(quán)限 (chmod命令)
一般使用格式
chmod [可選項]
可選項:? -c, --changes? ? ? ? ? like verbose but report onlywhena change is made (若該檔案權(quán)限確實已經(jīng)更改,才顯示其更改動作)? -f, --silent, --quiet? suppress most error messages(若該檔案權(quán)限無法被更改也不要顯示錯誤訊息)? -v, --verbose? ? ? ? ? output a diagnosticforevery file processed(顯示權(quán)限變更的詳細資料)? ? ? --no-preserve-rootdonottreat'/'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(以遞歸的方式對目前目錄下的所有檔案與子目錄進行相同的權(quán)限變更)--help顯示此幫助信息--version顯示版本信息mode :權(quán)限設(shè)定字串,詳細格式如下 :[ugoa...][[+-=][rwxX]...][,...],其中[ugoa...]
u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬于同一個群體(group)者,o 表示其他以外的人,a 表示所有(包含上面三者)。[+-=]
+ 表示增加權(quán)限,- 表示取消權(quán)限,= 表示唯一設(shè)定權(quán)限。[rwxX]
r 表示可讀取,w 表示可寫入,x 表示可執(zhí)行,X 表示只有當該檔案是個子目錄或者該檔案已經(jīng)被設(shè)定過為可執(zhí)行。
file...文件列表(單個或者多個文件、文件夾)
范例:
設(shè)置所有用戶可讀取文件 a.conf
設(shè)置 c.sh 只有 擁有者可以讀寫及執(zhí)行
設(shè)置文件 a.conf 與 b.xml 權(quán)限為擁有者與其所屬同一個群組 可讀寫,其它組可讀不可寫
設(shè)置當前目錄下的所有檔案與子目錄皆設(shè)為任何人可讀寫
數(shù)字權(quán)限使用格式
在這種使用方式中,首先我們需要了解數(shù)字如何表示權(quán)限。
首先,我們規(guī)定 數(shù)字 4 、2 和 1表示讀、寫、執(zhí)行權(quán)限(具體原因可見下節(jié)權(quán)限詳解內(nèi)容),即 r=4,w=2,x=1
。此時其他的權(quán)限組合也可以用其他的八進制數(shù)字表示出來,如: rwx = 4 + 2 + 1 = 7 rw = 4 + 2 = 6 rx = 4
+1 = 5 即
若要同時設(shè)置
rwx (可讀寫運行) 權(quán)限則將該權(quán)限位 設(shè)置 為 4 + 2 + 1 = 7 若要同時設(shè)置 rw- (可讀寫不可運行)權(quán)限則將該權(quán)限位 設(shè)置
為 4 + 2 = 6 若要同時設(shè)置 r-x (可讀可運行不可寫)權(quán)限則將該權(quán)限位 設(shè)置 為 4 +1 = 5
上面我們提到,每個文件都可以針對三個粒度,設(shè)置不同的rwx(讀寫執(zhí)行)權(quán)限。即我們可以用用三個8進制數(shù)字分別表示 擁有者 、群組 、其它組( u、 g 、o)的權(quán)限詳情,并用chmod直接加三個8進制數(shù)字的方式直接改變文件權(quán)限。語法格式為 :
chmod file...
其中a,b,c各為一個數(shù)字,分別代表User、Group、及Other的權(quán)限。相當于簡化版的chmod u=權(quán)限,g=權(quán)限,o=權(quán)限file...而此處的權(quán)限將用8進制的數(shù)字來表示User、Group、及Other的讀、寫、執(zhí)行權(quán)限
范例:
設(shè)置所有人可以讀寫及執(zhí)行
設(shè)置擁有者可讀寫,其他人不可讀寫執(zhí)行
更改文件擁有者(chown命令)
linux/Unix 是多人多工作業(yè)系統(tǒng),每個的文件都有擁有者(所有者),如果我們想變更文件的擁有者(利用 chown 將文件擁有者加以改變),一般只有系統(tǒng)管理員(root)擁有此操作權(quán)限,而普通用戶則沒有權(quán)限將自己或者別人的文件的擁有者設(shè)置為別人。
語法格式:
chown [可選項] user[:group] file...
使用權(quán)限:root說明:[可選項] :同上文chmoduser :新的文件擁有者的使用者group :新的文件擁有者的使用者群體(group)
范例:
設(shè)置文件 d.key、e.scrt的擁有者設(shè)為 users 群體的 tom
設(shè)置當前目錄下與子目錄下的所有文件的擁有者為 users 群體的 James
二、Linux權(quán)限詳解
Linux系統(tǒng)上對文件的權(quán)限有著嚴格的控制,用于如果相對某個文件執(zhí)行某種操作,必須具有對應的權(quán)限方可執(zhí)行成功。這也是Linux有別于Windows的機制,也是基于這個權(quán)限機智,Linux可以有效防止病毒自我運行,因為運行的條件是必須要有運行的權(quán)限,而這個權(quán)限在Linux是用戶所賦予的。
Linux的文件權(quán)限有以下設(shè)定:
Linux下文件的權(quán)限類型一般包括讀,寫,執(zhí)行。對應字母為 r、w、x。
Linux下權(quán)限的屬組有 擁有者 、群組 、其它組 三種。每個文件都可以針對這三個屬組(粒度),設(shè)置不同的rwx(讀寫執(zhí)行)權(quán)限。
通常情況下,一個文件只能歸屬于一個用戶和組, 如果其它的用戶想有這個文件的權(quán)限,則可以將該用戶加入具備權(quán)限的群組,一個用戶可以同時歸屬于多個組。
如果我們要表示一個文件的所有權(quán)限詳情,有兩種方式:
第一種是十位二進制表示法,(三個屬組每個使用二進制位,再加一個最高位共十位),可簡化為三位八進制形式
另外一種十二位二進制表示法(十二個二進制位),可簡化為四位八進制形式
十位權(quán)限表示
常見的權(quán)限表示形式有:
-rw------- (600)只有擁有者有讀寫權(quán)限。-rw-r--r-- (644)只有擁有者有讀寫權(quán)限;而屬組用戶和其他用戶只有讀權(quán)限。-rwx------ (700)只有擁有者有讀、寫、執(zhí)行權(quán)限。-rwxr-xr-x (755)擁有者有讀、寫、執(zhí)行權(quán)限;而屬組用戶和其他用戶只有讀、執(zhí)行權(quán)限。-rwx--x--x (711)擁有者有讀、寫、執(zhí)行權(quán)限;而屬組用戶和其他用戶只有執(zhí)行權(quán)限。-rw-rw-rw- (666)所有用戶都有文件讀、寫權(quán)限。-rwxrwxrwx (777)所有用戶都有讀、寫、執(zhí)行權(quán)限。
后九位解析:我們知道Linux權(quán)限總共有三個屬組,這里我們給每個屬組使用三個位置來定義三種操作(讀、寫、執(zhí)行)權(quán)限,合起來則是權(quán)限的后九位。 上面我們用字符表示權(quán)限,其中 -代表無權(quán)限,r代表讀權(quán)限,w代表寫權(quán)限,x代表執(zhí)行權(quán)限。
實際上,后九位每個位置的意義(代表某個屬組的某個權(quán)限)都是固定的,如果我們將各個位置權(quán)限的有無用二進制數(shù) 1和 0來代替,則只讀、只寫、只執(zhí)行權(quán)限,可以用三位二進制數(shù)表示為
r--=100-w-=010--x=001---=000
轉(zhuǎn)換成八進制數(shù),則為 r=4, w=2, x=1, -=0(這也就是用數(shù)字設(shè)置權(quán)限時為何是4代表讀,2代表寫,1代表執(zhí)行)
實際上,我們可以將所有的權(quán)限用二進制形式表現(xiàn)出來,并進一步轉(zhuǎn)變成八進制數(shù)字:
rwx=111=7rw-=110=6r-x=101=5r--=100=4-wx=011=3-w-=010=2--x=001=1---=000=0
由上可以得出,每個屬組的所有的權(quán)限都可以用一位八進制數(shù)表示,每個數(shù)字都代表了不同的權(quán)限(權(quán)值)。如 最高的權(quán)限為是7,代表可讀,可寫,可執(zhí)行。
故 如果我們將每個屬組的權(quán)限都用八進制數(shù)表示,則文件的權(quán)限可以表示為三位八進制數(shù)
-rw------- =600-rw-rw-rw- =666-rwxrwxrwx =777
關(guān)于第一位最高位的解釋:上面我們說到了權(quán)限表示中后九位的含義,剩下的第一位代表的是文件的類型,類型可以是下面幾個中的一個:
d代表的是目錄(directroy)-代表的是文件(regular file)s代表的是套字文件(socket)p代表的管道文件(pipe)或命名管道文件(named pipe)l代表的是符號鏈接文件(symbolic link)b代表的是該文件是面向塊的設(shè)備文件(block-oriented device file)c代表的是該文件是面向字符的設(shè)備文件(charcter-oriented device file)
十二位權(quán)限(Linux附加權(quán)限)
附加權(quán)限相關(guān)概念
linux除了設(shè)置正常的讀寫操作權(quán)限外,還有關(guān)于一類設(shè)置也是涉及到權(quán)限,叫做Linxu附加權(quán)限。包括 SET位權(quán)限(suid,sgid)和粘滯位權(quán)限(sticky)。
SET位權(quán)限:
suid/sgid是為了使“沒有取得特權(quán)用戶要完成一項必須要有特權(quán)才可以執(zhí)行的任務(wù)”而產(chǎn)生的。
一般用于給可執(zhí)行的程序或腳本文件進行設(shè)置,其中SUID表示對屬主用戶增加SET位權(quán)限,SGID表示對屬組內(nèi)用戶增加SET位權(quán)限。執(zhí)行文件被設(shè)置了SUID、SGID權(quán)限后,任何用戶執(zhí)行該文件時,將獲得該文件屬主、屬組賬號對應的身份。在許多環(huán)境中,suid
和 sgid 很管用,但是不恰當?shù)厥褂眠@些位可能使系統(tǒng)的安全遭到破壞。所以應該盡量避免使用SET位權(quán)限程序。(passwd
命令是為數(shù)不多的必須使用“suid”的命令之一)。
suid(set User ID,set UID)的意思是進程執(zhí)行一個文件時通常保持進程擁有者的UID。然而,如果設(shè)置了可執(zhí)行文件的suid位,進程就獲得了該文件擁有者的UID。
sgid(set Group ID,set GID)意思也是一樣,只是把上面的進程擁有者改成進程組就好了。
SET位權(quán)限表示形式(10位權(quán)限):
如果一個文件被設(shè)置了suid或sgid位,會分別表現(xiàn)在所有者或同組用戶的權(quán)限的可執(zhí)行位上;如果文件設(shè)置了suid還設(shè)置了x(執(zhí)行)位,則相應的執(zhí)行位表示為s(小寫)。但是,如果沒有設(shè)置x位,它將表示為S(大寫)。如:
1、-rwsr-xr-x表示設(shè)置了suid,且擁有者有可執(zhí)行權(quán)限2、-rwSr--r--表示suid被設(shè)置,但擁有者沒有可執(zhí)行權(quán)限3、-rwxr-sr-x表示sgid被設(shè)置,且群組用戶有可執(zhí)行權(quán)限4、-rw-r-Sr--表示sgid被設(shè)置,但群組用戶沒有可執(zhí)行權(quán)限
設(shè)置方式:
SET位權(quán)限可以通過chmod命令設(shè)置,給文件加suid和sgid的命令如下(類似于上面chmod賦予一般權(quán)限的命令):
chmodu+sfilename設(shè)置suid位chmodu-sfilename去掉suid設(shè)置chmodg+sfilename設(shè)置sgid位chmodg-sfilename去掉sgid設(shè)置
粘滯位權(quán)限:
粘滯位權(quán)限即sticky。一般用于為目錄設(shè)置特殊的附加權(quán)限,當目錄被設(shè)置了粘滯位權(quán)限后,即便用戶對該目錄有寫的權(quán)限,也不能刪除該目錄中其他用戶的文件數(shù)據(jù)。設(shè)置了粘滯位權(quán)限的目錄,是用ls查看其屬性時,其他用戶權(quán)限處的x將變?yōu)閠。
使用chmod命令設(shè)置目錄權(quán)限時,+t、-t權(quán)限模式可分別用于添加、移除粘滯位權(quán)限。
粘滯位權(quán)限表示形式(10位權(quán)限):
一個文件或目錄被設(shè)置了粘滯位權(quán)限,會表現(xiàn)在其他組用戶的權(quán)限的可執(zhí)行位上。如果文件設(shè)置了sticky還設(shè)置了x(執(zhí)行)位,其他組用戶的權(quán)限的可執(zhí)行位為t(小寫)。但是,如果沒有設(shè)置x位,它將表示為T(大寫)。如:
1、-rwsr-xr-t表示設(shè)置了粘滯位且其他用戶組有可執(zhí)行權(quán)限2、-rwSr--r-T表示設(shè)置了粘滯位但其他用戶組沒有可執(zhí)行權(quán)限
設(shè)置方式:
sticky權(quán)限同樣可以通過chmod命令設(shè)置:
chmod +t 文件列表..
十二位的權(quán)限表示方法
附加權(quán)限除了用十位權(quán)限形式表示外,還可以用用十二位字符表示。
11109876543210S? G? T r w x r w x r w x
SGT分別表示SUID權(quán)限、SGID權(quán)限、和 粘滯位權(quán)限,這十二位分別對應關(guān)系如下:
第11位為SUID位,第10位為SGID位,第9位為sticky位,第8-0位對應于上面的三組rwx位(后九位)。
在這十二位的每一位上都置值。如果有相應的權(quán)限則為1, 沒有此權(quán)限則為0。
-rw-r-sr--的值為:010110100100-rwsr-xr-x的值為:100111101101-rwsr-sr-x的值為:110111101101-rwsr-sr-t的值為:111111101101
如果將則前三位SGT也轉(zhuǎn)換成一個二進制數(shù),則
suid 的八進制數(shù)字是4
sgid 的代表數(shù)字是 2
sticky 位代表數(shù)字是1
這樣我們就可以將十二位權(quán)限三位三位的轉(zhuǎn)化為4個八進制數(shù)。其中
最高的一位八進制數(shù)就是suid,sgdi,sticky的權(quán)值。
第二位為 擁有者的權(quán)值
第三位為 所屬組的權(quán)值
最后一位為 其他組的權(quán)值
附加權(quán)限的八進制形式
通過上面,我們知道,正常權(quán)限和附加權(quán)限可以用4位八進制數(shù)表示。類似于正常權(quán)限的數(shù)字權(quán)限賦值模式(使用三位八進制數(shù)字賦值)
chmod file...
我們可以進一步使用4位八進制數(shù)字同時賦值正常權(quán)限和附加權(quán)限。
chmod file...
其中s是表示附加權(quán)限的把八進制數(shù)字,abc與之前一致,分別是對應User、Group、及Other(擁有者、群組、其他組)的權(quán)限。因為SUID對應八進制數(shù)字是4,SGID對于八進制數(shù)字是2,則“4755”表示設(shè)置SUID權(quán)限,“6755”表示同時設(shè)置SUID、SGID權(quán)限。
我們進一步將上小節(jié)的例子中的二進制數(shù)轉(zhuǎn)變?yōu)榘诉M制表示形式,則
-rw-r-sr-- =010110100100=2644-rwsr-xr-x =100111101101=4755-rwsr-sr-x =110111101101=6755-rwsr-sr-t =111111101101=7755
對比范例:
設(shè)置 netlogin 的權(quán)限為擁有者可讀寫執(zhí)行,群組和其他權(quán)限為可讀可執(zhí)行
設(shè)置 netlogin 的權(quán)限為擁有者可讀寫執(zhí)行,群組和其他權(quán)限為可讀可執(zhí)行,并且設(shè)置suid
chmod 4755與chmod 755對比多了附加權(quán)限值4,這個4表示其他用戶執(zhí)行文件時,具有與所有者同樣的權(quán)限(設(shè)置了SUID)。
為什么要設(shè)置4755 而不是 755?
假設(shè)netlogin是root用戶創(chuàng)建的一個上網(wǎng)認證程序,如果其他用戶要上網(wǎng)也要用到這個程序,那就需要root用戶運行chmod 755 netlogin命令使其他用戶也能運行netlogin。但假如netlogin執(zhí)行時需要訪問一些只有root用戶才有權(quán)訪問的文件,那么其他用戶執(zhí)行netlogin時可能因為權(quán)限不夠還是不能上網(wǎng)。這種情況下,就可以用 chmod 4755 netlogin 設(shè)置其他用戶在執(zhí)行netlogin也有root用戶的權(quán)限,從而順利上網(wǎng)。
Linux系統(tǒng)中的用戶是分角色的,用戶的角色是由UID和GID來識別的(也就是說系統(tǒng)是識別的是用戶的UID、GID,而非用戶用戶名),一個UID是唯一(系統(tǒng)中唯一如同身份證一樣)用來標識系統(tǒng)的用戶賬號(用戶名)。
文件的用戶與用戶組分為超級管理員,普通用戶和系統(tǒng)用戶。
1)超級管理員的UID=0,GID=0,也可以這么說系統(tǒng)只要是識別出某個用戶的UID\GID都為0時,那么這個用戶系統(tǒng)就認為是超級管理員。
2)普通用戶(管理員添加的),默認它的UID\GID是從500-65535,權(quán)限很小,只能操作自己的家目錄中文件及子目錄(注:nobody它的UID\GID是65534)。
3)系統(tǒng)用戶,也稱虛擬用戶,也就是安裝系統(tǒng)時就默認存在的且不可登陸系統(tǒng),它們的UID\GID是1-499。
我們可以通過cat /etc/passwd命令來查看所有的用戶信息,例如下圖,第三列是UID,第四列是GID:
創(chuàng)建用戶
useradd user1 創(chuàng)建用戶user1
useradd -e 12/30/2021 user2 創(chuàng)建用戶user2,有效期到2021-12-30
設(shè)置用戶密碼
passwd user1 設(shè)置密碼,有設(shè)置密碼的用戶不能用
這里設(shè)置密碼時可能會碰到密碼保護機制問題,這里需要注釋掉保護機制的問題
這個時候需要在編輯/etc/pam.d/system-auth文件,將其中的password requisite
和password sufficient兩行注釋掉,如下圖:
創(chuàng)建用戶組
groupadd –g 888 users 創(chuàng)建一個組users,其GID為888
groupadd users 不用g參數(shù),使用默認的組ID
命令 gpasswd為組添加用戶
只有root和組管理員能夠改變組的成員:
gpasswd –a user1 users 把 user1加入users組
gpasswd –d user1 users 把 user1退出users組
命令groupmod修改組
groupmod –n user2 user1 修改組名user1為user2
groupdel刪除組
groupdel users 刪除組users
真正從安全性角度上來考慮的話,是要控制用戶一定執(zhí)行命令的權(quán)限,也就是哪些用戶可以執(zhí)行哪些命令,不可以執(zhí)行哪些命令,因此也就有了sudo這個應用,對于sudo提權(quán),也就是修改/etc/sudoers的配置文件。
使用ls -l 命令可以查看當前目錄下各個文件的權(quán)限 也可以用ll命令。\x0d\x0a例如:\x0d\x0abash: lsl: command not found\x0d\x0a[root@liuxiting Documents]# ll\x0d\x0atotal 56\x0d\x0alrwxrwxrwx 1 root root 4 2012-07-02 11:48 1 - 1.sh\x0d\x0a-rwxr-xr-x 1 root root 44 2012-06-20 14:01 1.sh\x0d\x0adrwxr-xr-x 2 root root 4096 2012-07-16 12:11 filetest
本文標題:linux中訪問權(quán)限命令,linux默認訪問權(quán)限
轉(zhuǎn)載來源:http://www.yijiale78.com/article48/dsiojhp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站改版、外貿(mào)建站、自適應網(wǎng)站、手機網(wǎng)站建設(shè)、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)