學(xué)習(xí)目標(biāo)
1、知道為什么要設(shè)置權(quán)限
2、linux中的權(quán)限類別和身份類別
3、掌握文件和文件夾權(quán)限的設(shè)置方法(字母和數(shù)字)
4、掌握文件和文件夾的屬主屬組設(shè)置方法
5、了解粘滯位
6、知道為什么要使用ACL
7、掌握ACL的使用方法
在多用戶計算機(jī)系統(tǒng)的管理中,權(quán)限是指某個特定的用戶具有特定的系統(tǒng)資源使用權(quán)利。
在Linux 中分別有讀、寫、執(zhí)行權(quán)限:
注:一般給予目錄讀權(quán)限時,也將會給其執(zhí)行權(quán)限,屬于“套餐”組合
假設(shè)目錄叫做 boxuegu
cd boxuegu
ls
ls /boxuegu
A 給boxuegu文件夾的權(quán)限
B root
1)服務(wù)器中的數(shù)據(jù)價值
2)員工的工作職責(zé)和分工不同
3)應(yīng)對自外部的攻擊
4)內(nèi)部管理的需要
Linux 系統(tǒng)一般將文件權(quán)限分為3 類:
read(讀)
write(寫)
execute(執(zhí)行)
誰對文件有讀,寫,執(zhí)行的權(quán)限呢?
1)所有者分類(誰)
對于文件的所有者,又分為3類:
user(屬主)
group(屬組)
other(其他用戶)
user(屬主):文件的創(chuàng)建者或擁有者,換句話說,某個賬戶對這個文件有的權(quán)限。
A 一個人
B 多個人
group(屬組):文件所屬的用戶組,換句話或,某個用戶組對這個文件有的權(quán)限。
A 一個人
B 多個人
other(其他用戶):除了上面提到的屬主和屬組之外的所有用戶,對這個文件有的權(quán)限
A 一個人
B 多個人
舉例:
愛情公寓拆遷,拆遷款按照政策,分配如下:一半給張偉,另一半由愛情公寓3601和3602室的其余的伙伴平分。如果把拆遷款看做一個文件,那么這個文件的權(quán)限是:
屬主:張偉
屬組:3601和3602的其他伙伴,他們是一個組
其他用戶:沒有
2)所有者的表示方法
① u(the user who owns it)(屬主權(quán)限)
用u表示,文件所有者,默認(rèn)為文檔的創(chuàng)建者
② g(other users in the file's group)(屬組權(quán)限)
用g表示,在文件所屬組(默認(rèn)是創(chuàng)建文件的用戶的主組)里的用戶
③ o(other user not in the file's group)(其他權(quán)限)
用o表示,既不是文件的創(chuàng)建者,也不在文件屬組里的用戶,稱為其他人
注意:某些資料上會提到linux ugo權(quán)限,所謂ugo,就是User,
Group,Other三個單詞的首字母。就指屬主,主組,其他三種權(quán)限。
ugo等于u+g+o
a (all)等于u+g+o
我們后面設(shè)置文件權(quán)限的時候,會用到
④ root用戶(超級管理員)
在Linux 中,還有一個神一樣的用戶,這就是root 用戶,因為在所有用戶中它擁有最大的權(quán)限 ,可以管理著普通用戶。因此以后在設(shè)置文檔的
要設(shè)置權(quán)限,就需要知道文件的一些基本屬性和權(quán)限的分配規(guī)則。在Linux 中,ls 命令常用來查看文檔的屬性,用于顯示文件的文件名和相關(guān)
屬性。
ls命令我們之前學(xué)過,用于查看文件信息,這里我們使用之前提到過的一個用法,ll
用法一:ll
示例代碼:
#ll
含義:查看當(dāng)前文件夾下的所有目錄和文件的詳細(xì)信息
2、文件權(quán)限詳解
Linux 中存在三類身份:
屬主(owner擁有者)
屬組(group用戶組)
其他用戶(others)
各自有不同的權(quán)限,對于一個文檔來說,其權(quán)限具體分配如下:
linux一共有7種文件類型,分別如下:
-:普通文件
d:目錄文件
l: 軟鏈接(類似Windows的快捷方式)
(下面四種是特殊文件)
b:塊設(shè)備文件(例如硬盤、光驅(qū)等)
p:管道文件
c:字符設(shè)備文件(例如貓等串口設(shè)備)
s:套接口文件/數(shù)據(jù)接口文件(例如啟動一個MySql服務(wù)器時會產(chǎn)生一個mysql.sock文件)
文件權(quán)限對應(yīng)關(guān)系(對應(yīng)數(shù)字后面有用)
第1位:表示文件類型
第2-4位:表示文件所有者的權(quán)限情況,第2位r表示讀權(quán)限,第3位w表示寫
權(quán)限,第4位x表示執(zhí)行權(quán)限。
第5-7位:表示與文件所有者同組的用戶的權(quán)限情況,第5位r表示讀權(quán)限,
第6位-表示不可寫,第7位x表示執(zhí)行權(quán)限。
第8-10位:表示除了組外的其他用戶權(quán)限情況,第8位r表示讀權(quán)限,第9
位-表示不可寫,第10位x表示執(zhí)行權(quán)限。
前10位字符表示含義:
第1位:表示文件類型
第2-4位:表示文件屬主(所有者)的權(quán)限情況
第5-7位:表示與文件屬組(用戶組)的用戶的權(quán)限情況
第8-10位:表示其他(除了屬主和屬組之外的其他用戶)權(quán)限情況
命令:chmod
語法:# chmod [選項] 權(quán)限模式 文檔
作用:增加或者減少當(dāng)前文件所有者的權(quán)限(注意,不能改變所有者,只能改變現(xiàn)有所有者的權(quán)限)
常用選項:-R:遞歸設(shè)置權(quán)限 (當(dāng)文檔類型為文件夾的時候)
權(quán)限模式:就是該文檔需要設(shè)置的權(quán)限信息
前10位字符表示含義:
第1位:表示文件類型
第2-4位:表示文件所有者的權(quán)限情況,第2位r表示讀權(quán)限,第3位w表示寫權(quán)限,第4位x表示執(zhí)行權(quán)限。
第5-7位:表示與文件所有者同組的用戶的權(quán)限情況,第5位r表示讀權(quán)限,
第6位-表示不可寫,第7位x表示執(zhí)行權(quán)限。
第8-10位:表示除了組外的其他用戶權(quán)限情況,第8位r表示讀權(quán)限,第9位-表示不可寫,第10位x表示執(zhí)行權(quán)限。
文檔:可以是文件,也可以是文件夾,可以是相對路徑也可以是絕對路徑。
注意點:如果想要給文檔設(shè)置權(quán)限,操作者要么是root 用戶,要么就是文檔的所有者。
① 字母形式(對應(yīng)前面提到的u g o,r w x的表示方法)
使用root用戶登錄
用法一:chmod -R 要增加的權(quán)限 文件名
示例代碼:
#chmod -R u+x quanxian.txt
含義:對于quanxian.txt文件,給 屬主 增加 執(zhí)行 權(quán)限
用法二:chmod -R 多個要增加的權(quán)限 文件名
示例代碼:
#chmod -R g+x,o+x quanxian.txt
含義:對于quanxian.txt文件,給 屬組 增加 執(zhí)行 權(quán)限,給其他增加 執(zhí)行權(quán)限。
注意:同時改變多個對象的權(quán)限,中間使用“逗號“分割。
用法三:chmod -R 要減少的權(quán)限 文件名
示例代碼:
#chmod -R o-x quanxian.txt
含義:對于quanxian.txt文件,給 其他 減少 執(zhí)行權(quán)限。
用法四:chmod -R 要賦予的權(quán)限 文件名
示例代碼:
#chmod -R u=rwx,g=rwx,o=rwx quanxian.txt
含義:對于quanxian.txt文件,給屬主,屬組,其他,都 賦予 讀,寫,執(zhí)行權(quán)限
用法五:chmod -R 要賦予的權(quán)限 文件夾
示例代碼:
#chmod -R a=rwx quanxianfolder
含義:對于quanxianfolder文件夾,給所有用戶(屬主,屬組,其他),都 賦予 讀,寫,執(zhí)行權(quán)限
如果只想給屬主和屬組賦予讀寫權(quán)限,要怎么寫?
答:u+rw,g+rw
如果同時去掉屬組和其他的寫權(quán)限,要怎么寫?
答:g-w,o-w
總結(jié):
權(quán)限設(shè)置要考慮的因素:
首先:
給誰設(shè)置?
u 可以給屬主設(shè)置權(quán)限
g 可以給屬組設(shè)置權(quán)限
o 可以給其他用戶設(shè)置權(quán)限
ugo 給所有用戶設(shè)置權(quán)限(主+組+其他)
a 給所有用戶設(shè)置權(quán)限
第二:
怎么設(shè)置?
+ 添加權(quán)限
- 減少權(quán)限
= 賦予權(quán)限
第三:
增加減少或者賦予什么權(quán)限?
r 讀
w 寫
x 執(zhí)行
相關(guān)參數(shù)總結(jié):
注:
1)如果同時設(shè)置多個身份的權(quán)限時候,每個身份之間需要通過英文逗號分開。
例如:
#chmod -R u=rwx,g=rwx,o=rwx quanxian.txt
2)在權(quán)限設(shè)置中,如果有兩部分權(quán)限一樣則可以合在一起寫
例如:
# chmod u=rwx,g=rwx
等價于:
# chmod ug=rwx
作業(yè):如果想給屬主,屬組,其他同時設(shè)置權(quán)限讀寫執(zhí)行,有幾種寫法,分別是?
② 數(shù)字形式
經(jīng)常會在技術(shù)網(wǎng)站上看到類似于# chmod 777 a.txt 這樣的命令,這種形式稱之為數(shù)字形式權(quán)限。
文件權(quán)限與數(shù)字的對應(yīng)關(guān)系,我們會發(fā)現(xiàn)沒有7這個數(shù)字
權(quán)限與數(shù)字對應(yīng)詳解
技巧:不要背上面的表格,只要記住R,W,X對應(yīng)4,2,1,之后做10以內(nèi)加法
用法六:chmod -R 要賦予的權(quán)限(數(shù)字形式) 文件名
示例代碼:
#chmod -R 765 quanxian.txt
含義:對于quanxian.txt文件,給屬主所有權(quán)限,屬組讀寫權(quán)限,其他讀和執(zhí)行權(quán)限
注意:
全部權(quán)限:7 = r+w+x = 4 + 2 + 1
讀寫權(quán)限:6 = r+w = 4 + 2
讀和執(zhí)行:5 = r+x = 4 + 1
綜上所述,u=7,g=6,o=5
問題:用超級管理員設(shè)置文檔的權(quán)限命令是# chmod -R 731 shop,請問這個命令有沒有什么不合理的地方?
分析:
所有者權(quán)限:7 = 4 + 2 + 1 = 讀 + 寫 + 執(zhí)行
同組用戶權(quán)限:3 = 2 + 1 = 寫 + 執(zhí)行
其他用戶權(quán)限:1 = 執(zhí)行
問題在權(quán)限731中的3權(quán)限,3表示寫+執(zhí)行權(quán)限,但是寫又必須需要能打開
之后才可以寫,因此必須需要具備可讀權(quán)限,因此此權(quán)限設(shè)置不合理。
注:實際工作中,各位小伙伴在設(shè)置權(quán)限時一定不要設(shè)置這種"奇葩權(quán)限",一般情況下,單獨出現(xiàn)2、3的權(quán)限數(shù)字一般都是有問題的權(quán)限。
一般linux系統(tǒng)中,不允許出現(xiàn)777的權(quán)限。
755
③ 練習(xí)題
1)使用root 用戶設(shè)置文件夾/root/shop 的權(quán)限為:屬主全部權(quán)限,屬組擁有讀和執(zhí)行權(quán)限,其他用戶沒有權(quán)限,請使用數(shù)字權(quán)限的形式設(shè)置
750
2)請置文件/root/readme.txt 的權(quán)限,權(quán)限要求為:
屬主擁有全部權(quán)限,屬組要求可以讀寫,其他用戶只讀,要求使用數(shù)字形式;
3)請設(shè)置/root/email.doc權(quán)限,權(quán)限要求只有屬主可以讀寫,除此之外任何人沒有權(quán)限;
在Linux 中,如果要刪除一個文件,不是看文件有沒有對應(yīng)的權(quán)限,而是看文件所在的目錄是否有寫權(quán)限,如果有才可以刪除(同時必須具備執(zhí)行權(quán)限)。
設(shè)置
屬主:所屬的用戶,文檔所有者,這是一個賬戶,這是一個人
屬組:所屬的用戶組,這是一個組
基本語法: # ls -l 查看文檔屬主與屬組
這兩項信息在文檔創(chuàng)建的時候會使用創(chuàng)建者的信息(用戶名、用戶所屬的主組名稱)。
問題:為什么itheima.txt 的屬主和屬組默認(rèn)都是itheima
2、為什么要修改屬主與屬組?
舉例:
一個財務(wù)表格,以前由胡一菲進(jìn)行更新,她有讀寫權(quán)限,現(xiàn)在胡一菲去阿拉善沙漠找曾老師了,改權(quán)限沒用,需要把屬主改成諸葛大力,由諸葛大力更新。
3、chown修改文件的屬主
基本語法: # chown [-R] 新文檔擁有者名稱 文檔路徑
作用:更改文檔的所屬用戶(change owner)
選項:-R 代表遞歸修改文件的屬主
示例代碼1:將readme.txt文檔屬主更改為itheima
#touch readme.txt
#ll readme.txt
#chown itheima readme.txt
將readme.txt文件的屬主設(shè)置為itheima
#ll readme.txt
示例代碼2:將shop文件夾的擁有者更改為itheima
#mkdir shop
#ll
#chown itheima shop
將shop文件夾的屬主設(shè)置為itheima
#ll
基本語法: # chgrp [-R] 新文檔組名稱 文檔的路徑
作用:更改文檔的所屬用戶組(change group)
示例代碼1:將readme.txt文檔所屬組修改為itcast
錯誤信息:invalid user: ‘itheima’
不可用的賬戶"itheima"
原因:檢查是否有這個賬戶,如果沒有,需要新建
示例代碼2:將shop文檔所屬組修改為itcast
問題:如何通過一個命令實現(xiàn)既可以更改所屬的用戶,也可以修改所屬的
用戶組呢?
答:使用 chown 命令
基本語法: 語法:# chown [-R] username:groupname 文檔路徑
示例代碼:將readme.txt文件的擁有者與所屬組都更改為root
#ll readme.txt
#chown root:root readme.txt
將readme.txt文件的屬主和屬組同時設(shè)置為root
#ll readme.txt
特別注意:
一般來說,這個指令(chown)只有是由系統(tǒng)管理者(root)所使用,普通用戶沒有權(quán)限可以改變別人的檔案擁有者,也沒有權(quán)限可以將自己的檔案擁有者改設(shè)為別人。只有系統(tǒng)管理者(root)才有這樣的權(quán)限。
四、特殊權(quán)限(擴(kuò)展)
1、設(shè)置位S(SetUid)
作用:為了讓一般使用者臨時具有該文件所屬主/組的執(zhí)行權(quán)限。
例如:/usr/bin/passwd在執(zhí)行它的時候需要去修改/etc/passwd和/etc/shadow等文件,這些文件除了root外,其他用戶都沒有寫權(quán)限,但是又為了能讓普通用戶修改自己的密碼,該怎么辦呢?
答:可以臨時讓他們具有root的權(quán)限,而這個s權(quán)限就是用來完成這個特殊任務(wù)的。s權(quán)限只能應(yīng)用在二進(jìn)制的可執(zhí)行文件上。
示例代碼:不想讓普通用戶修改自己的密碼
注:which命令可以用于查看二進(jìn)制可執(zhí)行文件所在位置
去除s權(quán)限,基本語法:
#which passwd
#ll /usr/bin/passwd
#chmod u-s /usr/bin/passwd
或者
#chmod 0755 /usr/bin/passwd
去除passwd程序的s權(quán)限
#ll /usr/bin/passwd
測試普通用戶:
注:0755最前面的0表示不使用任何特殊權(quán)限,如果想使用數(shù)字設(shè)置特殊權(quán)限,可以使用4表示設(shè)置S位。
2、沾滯位T (sticky bit)
命令:chmod
語法:# chmod [選項] 文件夾
作用:只允許文件的創(chuàng)建者和root用戶刪除文件
常用選項:
o+t 添加粘滯位
o-t 去掉粘滯位
用法:chmod o+t 目錄名
示例代碼:
#chmod o+t
含義:給目錄增加粘滯位權(quán)限。
舉例:
公司多個部門公用一個文件夾work,為了讓所有人都能訪問,work文件夾賦予了777權(quán)限,用戶root新建了一個文件root.txt,發(fā)現(xiàn)被別人刪除了。我們希望root建立的文件,只有root自己可以刪。
步驟1:root用戶下操作
root用戶新建文件夾/work,并且新建兩個文件root.txt和root1.txt,賦予/work文件夾和下面的文件777權(quán)限
#mkdir /work
#cd /work
#touch root.txt
#touch root1.txt
#chmod -R 777 /work
#ll -d /work
步驟2: wangwu用戶下操作
在沒有設(shè)置粘滯位的時候,wangwu可以刪除root創(chuàng)建的文件。
cd /work
ll -d /work
ll
rm -rf root.txt
ll
步驟3:root用戶下操作:給/work文件夾添加粘滯位
#ll -d /work/
#chmod o+t /work
#ll -d /work/
步驟4:wangwu用戶下操作
發(fā)現(xiàn)添加粘滯位后,無法刪除root2.txt文件
#ll -d /work/
#chmod o+t /work
#ll -d /work/
步驟5:root用戶下操作
去掉/work文件夾的取消粘滯位
#ll -d /work/
#chmod o-t /work
#ll -d /work/
步驟6:wangwu用戶下操作
wangwu用戶下,發(fā)現(xiàn)又可以刪除了
#cd /work/
#rm -rf root1.txt
#ll
問題:我們學(xué)過的所有者身份包含哪些?
答案:ugo,屬主,屬組,其他。
問題:我們學(xué)過的文件權(quán)限包含哪些?
答案:rwx,讀寫執(zhí)行,特殊s,t
ACL,是 Access Control List(訪問控制列表)的縮寫,在 Linux 系統(tǒng)中, ACL 可實現(xiàn)對單一用戶設(shè)定訪問文件的權(quán)限。
1、基本命令
getfacl命令:查看文件的ACL策略及權(quán)限
setfacl命令: 給文件針對某個用戶或者某個組來增加(設(shè)置)ACL策略
2、getfacl命令
3、setfacl命令
-m : 修改acl策略
-x :去掉某個用戶或者某個組的權(quán)限
-b :刪除所有的acl策略
-R :遞歸,通常用在文件夾
mask:mask定義除other和所有人(擁有者)外的最大權(quán)限
setfacl -m u:用戶名:rwx /usr/local/shichangbu 給單個用戶單獨加權(quán)限
setfacl -m g:用戶組名:rwx /usr/local/shichangbu 給單個組單獨加權(quán)限
setfacl -x u:用戶 /usr/local/shichangbu 去掉某個用戶的權(quán)限
setfacl -x g:組名 /usr/local/shichangbu 去掉某個組的acl策略
setfacl -b -R /usr/local/shichangbu 刪除所有的acl策略,遞歸子文件
例如:
setfacl -m u:user01:rw file1 針對于單個用戶給可讀可寫權(quán)限
setfacl -m g:sysadmin:rw file1 針對于單個組給可讀可寫權(quán)限
示例代碼1:給newuser01用戶單獨在市場部文件夾上增加rx權(quán)限
#mkidr /shichangbu
#cd /shichangbu
驗證newuser01用戶對于file1文件只有讀權(quán)限
#touch file{1..5}.txt
#chown -R root:itheima shichangbu/
遞歸設(shè)置shichangbu文件夾的屬主是root,屬組是itheima
#getfacl shichangbu/
#useradd newuser01
#passwd newuser01
#setfacl -m u:newuser01:rx -R /usr/local/shichangbu/
單獨設(shè)置newuser01對于shichangbu文件夾的rx權(quán)限,并且遞歸包含所有子文件
#getfacl /usr/local/shichangbu
查看/usr/local/shichangbu文件夾的ACL權(quán)限
驗證newuser01用戶對于file1文件只有讀權(quán)限
示例代碼2:給newusergrp組在市場部文件夾上增加rx權(quán)限,遞歸所有子文件
#groupadd newusergrp
#setfacl -m g:newusergrp:rx -R /usr/local/shichangbu/
單獨設(shè)置newusergrp組對于shichangbu文件夾的rx權(quán)限,并且遞歸包含所有子文件
#getfacl /usr/local/shichangbu/
示例代碼3:刪除所有acl策略
1、什么是umask
umask表示創(chuàng)建文件時的默認(rèn)權(quán)限(即創(chuàng)建文件時不需要設(shè)置而天生的權(quán)限)
例如:
root用戶下,touch a ,文件a的默認(rèn)權(quán)限是644
普通用戶下,touch b ,文件b的默認(rèn)權(quán)限是664
644和664我們并沒有設(shè)置,其中的關(guān)鍵因素就是umask
最大默認(rèn)權(quán)限:
文件666
文件夾777
2、umask值
可以使用命令umask來查看umask的值:
基本語法:# umask
注:0022中第一位0代表特殊權(quán)限位,可以不設(shè)置。
分析:
結(jié)合上述的舉例得知:
默認(rèn)權(quán)限=最高權(quán)限-umask( 644=666-022 // 664=666-002 )
但是:
當(dāng)umask為011,創(chuàng)建文件的默認(rèn)權(quán)限應(yīng)該是655,但是實際運(yùn)行的時候默認(rèn)權(quán)限是 666
666 -> rw-rw-rw-
011 -> -----x--x
相減得:
666 -> -rw-rw-rw-
注:這個特殊情況僅出現(xiàn)在文件,因為文件[二進(jìn)制文件除外]沒有x執(zhí)行權(quán)限), 所以,查看文件的umask時我們要特別注意是否有奇數(shù)位(x表示1)
umask + 數(shù)值修改當(dāng)前用戶的umask 如: # umask 044
不過這樣設(shè)置的umask會在用戶重新登錄的時候恢復(fù)原來的值,我們可以把修改的umask保存在~/.bashrc
操作步驟:
#vim ~/.bashrc
① 在文件末尾添加umask 044
② 保存退出
③ 重新登錄用戶則保存成功
示例代碼:
猜你喜歡:
linux用戶組管理命令詳細(xì)介紹
linux文件管理圖文教程:linux文件管理命令詳解