教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

linux教程:Linux的權限管理【linux云計算+運維開發(fā)】

更新時間:2020年03月16日10時58分 來源:傳智播客 瀏覽次數(shù):

學習目標

1、知道為什么要設置權限

2、linux中的權限類別和身份類別

3、掌握文件和文件夾權限的設置方法(字母和數(shù)字)

4、掌握文件和文件夾的屬主屬組設置方法

5、了解粘滯位

6、知道為什么要使用ACL

7、掌握ACL的使用方法


在多用戶計算機系統(tǒng)的管理中,權限是指某個特定的用戶具有特定的系統(tǒng)資源使用權利。

在Linux 中分別有讀、寫、執(zhí)行權限:
linux權限管理01
注:一般給予目錄讀權限時,也將會給其執(zhí)行權限,屬于“套餐”組合
假設目錄叫做 boxuegu
cd boxuegu
ls
ls /boxuegu
A 給boxuegu文件夾的權限
B root

1)服務器中的數(shù)據(jù)價值
2)員工的工作職責和分工不同
3)應對自外部的攻擊
4)內部管理的需要

Linux 系統(tǒng)一般將文件權限分為3 類:
read(讀)
write(寫)
execute(執(zhí)行)
誰對文件有讀,寫,執(zhí)行的權限呢?


1)所有者分類(誰)
對于文件的所有者,又分為3類:
user(屬主)
group(屬組)
other(其他用戶)
user(屬主):文件的創(chuàng)建者或擁有者,換句話說,某個賬戶對這個文件有的權限。
A 一個人
B 多個人
group(屬組):文件所屬的用戶組,換句話或,某個用戶組對這個文件有的權限。
A 一個人
B 多個人
other(其他用戶):除了上面提到的屬主和屬組之外的所有用戶,對這個文件有的權限
A 一個人
B 多個人
舉例:
愛情公寓拆遷,拆遷款按照政策,分配如下:一半給張偉,另一半由愛情公寓3601和3602室的其余的伙伴平分。如果把拆遷款看做一個文件,那么這個文件的權限是:
屬主:張偉
屬組:3601和3602的其他伙伴,他們是一個組
其他用戶:沒有

2)所有者的表示方法
① u(the user who owns it)(屬主權限)
用u表示,文件所有者,默認為文檔的創(chuàng)建者
② g(other users in the file's group)(屬組權限)
用g表示,在文件所屬組(默認是創(chuàng)建文件的用戶的主組)里的用戶
③ o(other user not in the file's group)(其他權限)
用o表示,既不是文件的創(chuàng)建者,也不在文件屬組里的用戶,稱為其他人
注意:某些資料上會提到linux ugo權限,所謂ugo,就是User,
Group,Other三個單詞的首字母。就指屬主,主組,其他三種權限。
ugo等于u+g+o
a (all)等于u+g+o
我們后面設置文件權限的時候,會用到
④ root用戶(超級管理員)
在Linux 中,還有一個神一樣的用戶,這就是root 用戶,因為在所有用戶中它擁有最大的權限 ,可以管理著普通用戶。因此以后在設置文檔的
權限的時候不必考慮root 用戶。推薦了解linux云計算+運維開發(fā)培訓課程。

要設置權限,就需要知道文件的一些基本屬性和權限的分配規(guī)則。在Linux 中,ls 命令常用來查看文檔的屬性,用于顯示文件的文件名和相關
屬性。
ls命令我們之前學過,用于查看文件信息,這里我們使用之前提到過的一個用法,ll

用法一:ll

示例代碼:

#ll

含義:查看當前文件夾下的所有目錄和文件的詳細信息

linux權限管理01

2、文件權限詳解

Linux 中存在三類身份:

屬主(owner擁有者)

屬組(group用戶組)

其他用戶(others)

各自有不同的權限,對于一個文檔來說,其權限具體分配如下:

linux權限管理01.1

linux一共有7種文件類型,分別如下:
-:普通文件
d:目錄文件
l: 軟鏈接(類似Windows的快捷方式)
(下面四種是特殊文件)
b:塊設備文件(例如硬盤、光驅等)
p:管道文件
c:字符設備文件(例如貓等串口設備)
s:套接口文件/數(shù)據(jù)接口文件(例如啟動一個MySql服務器時會產(chǎn)生一個mysql.sock文件)
文件權限對應關系(對應數(shù)字后面有用)
linux權限管理02

前10位字符表示含義:
第1位:表示文件類型
第2-4位:表示文件所有者的權限情況,第2位r表示讀權限,第3位w表示寫
權限,第4位x表示執(zhí)行權限。
第5-7位:表示與文件所有者同組的用戶的權限情況,第5位r表示讀權限,
第6位-表示不可寫,第7位x表示執(zhí)行權限。
第8-10位:表示除了組外的其他用戶權限情況,第8位r表示讀權限,第9
位-表示不可寫,第10位x表示執(zhí)行權限。

前10位字符表示含義:
第1位:表示文件類型
第2-4位:表示文件屬主(所有者)的權限情況
第5-7位:表示與文件屬組(用戶組)的用戶的權限情況
第8-10位:表示其他(除了屬主和屬組之外的其他用戶)權限情況


命令:chmod
語法:# chmod [選項] 權限模式 文檔
作用:增加或者減少當前文件所有者的權限(注意,不能改變所有者,只能改變現(xiàn)有所有者的權限)
常用選項:-R:遞歸設置權限 (當文檔類型為文件夾的時候)
權限模式:就是該文檔需要設置的權限信息
前10位字符表示含義:
第1位:表示文件類型
第2-4位:表示文件所有者的權限情況,第2位r表示讀權限,第3位w表示寫權限,第4位x表示執(zhí)行權限。
第5-7位:表示與文件所有者同組的用戶的權限情況,第5位r表示讀權限,
第6位-表示不可寫,第7位x表示執(zhí)行權限。
第8-10位:表示除了組外的其他用戶權限情況,第8位r表示讀權限,第9位-表示不可寫,第10位x表示執(zhí)行權限。
文檔:可以是文件,也可以是文件夾,可以是相對路徑也可以是絕對路徑。
注意點:如果想要給文檔設置權限,操作者要么是root 用戶,要么就是文檔的所有者。

① 字母形式(對應前面提到的u g o,r w x的表示方法)
使用root用戶登錄

用法一:chmod -R 要增加的權限 文件名
示例代碼:
#chmod -R u+x quanxian.txt
含義:對于quanxian.txt文件,給 屬主 增加 執(zhí)行 權限
linux權限管理05

用法二:chmod -R 多個要增加的權限 文件名
示例代碼:
#chmod -R g+x,o+x quanxian.txt
含義:對于quanxian.txt文件,給 屬組 增加 執(zhí)行 權限,給其他增加 執(zhí)行權限。
注意:同時改變多個對象的權限,中間使用“逗號“分割。
linux權限管理04

用法三:chmod -R 要減少的權限 文件名
示例代碼:
#chmod -R o-x quanxian.txt
含義:對于quanxian.txt文件,給 其他 減少 執(zhí)行權限。
linux權限管理05

用法四:chmod -R 要賦予的權限 文件名
示例代碼:
#chmod -R u=rwx,g=rwx,o=rwx quanxian.txt
含義:對于quanxian.txt文件,給屬主,屬組,其他,都 賦予 讀,寫,執(zhí)行權限
linux權限管理06

用法五:chmod -R 要賦予的權限 文件夾
示例代碼:
#chmod -R a=rwx quanxianfolder
含義:對于quanxianfolder文件夾,給所有用戶(屬主,屬組,其他),都 賦予 讀,寫,執(zhí)行權限

linux權限管理07

如果只想給屬主和屬組賦予讀寫權限,要怎么寫?
答:u+rw,g+rw
如果同時去掉屬組和其他的寫權限,要怎么寫?
答:g-w,o-w

總結:
權限設置要考慮的因素:
首先:
給誰設置?
u   可以給屬主設置權限
g    可以給屬組設置權限
o    可以給其他用戶設置權限
ugo    給所有用戶設置權限(主+組+其他)
a    給所有用戶設置權限
第二:
怎么設置?
+    添加權限
-    減少權限
=   賦予權限
第三:
增加減少或者賦予什么權限?
r    讀
w    寫
x    執(zhí)行
相關參數(shù)總結:
linux權限管理08

注:
1)如果同時設置多個身份的權限時候,每個身份之間需要通過英文逗號分開。
例如:
#chmod -R u=rwx,g=rwx,o=rwx quanxian.txt

2)在權限設置中,如果有兩部分權限一樣則可以合在一起寫

例如:
# chmod u=rwx,g=rwx
等價于:
# chmod ug=rwx


作業(yè):如果想給屬主,屬組,其他同時設置權限讀寫執(zhí)行,有幾種寫法,分別是?

② 數(shù)字形式
經(jīng)常會在技術網(wǎng)站上看到類似于# chmod 777 a.txt 這樣的命令,這種形式稱之為數(shù)字形式權限。
文件權限與數(shù)字的對應關系,我們會發(fā)現(xiàn)沒有7這個數(shù)字
linux權限管理09

權限與數(shù)字對應詳解
linux權限管理10

linux權限管理11

技巧:不要背上面的表格,只要記住R,W,X對應4,2,1,之后做10以內加法

用法六:chmod -R 要賦予的權限(數(shù)字形式) 文件名
示例代碼:
#chmod -R 765 quanxian.txt
含義:對于quanxian.txt文件,給屬主所有權限,屬組讀寫權限,其他讀和執(zhí)行權限
注意:
全部權限:7 = r+w+x = 4 + 2 + 1
讀寫權限:6 = r+w = 4 + 2
讀和執(zhí)行:5 = r+x = 4 + 1
綜上所述,u=7,g=6,o=5

linux權限管理12



問題:用超級管理員設置文檔的權限命令是# chmod -R 731 shop,請問這個命令有沒有什么不合理的地方?

分析:

所有者權限:7 = 4 + 2 + 1 = 讀 + 寫 + 執(zhí)行
同組用戶權限:3 = 2 + 1 = 寫 + 執(zhí)行
其他用戶權限:1 = 執(zhí)行
問題在權限731中的3權限,3表示寫+執(zhí)行權限,但是寫又必須需要能打開
之后才可以寫,因此必須需要具備可讀權限,因此此權限設置不合理。
注:實際工作中,各位小伙伴在設置權限時一定不要設置這種"奇葩權限",一般情況下,單獨出現(xiàn)2、3的權限數(shù)字一般都是有問題的權限。

一般linux系統(tǒng)中,不允許出現(xiàn)777的權限。

755

③ 練習題
1)使用root 用戶設置文件夾/root/shop 的權限為:屬主全部權限,屬組擁有讀和執(zhí)行權限,其他用戶沒有權限,請使用數(shù)字權限的形式設置
750
2)請置文件/root/readme.txt 的權限,權限要求為:
屬主擁有全部權限,屬組要求可以讀寫,其他用戶只讀,要求使用數(shù)字形式;
3)請設置/root/email.doc權限,權限要求只有屬主可以讀寫,除此之外任何人沒有權限;


在Linux 中,如果要刪除一個文件,不是看文件有沒有對應的權限,而是看文件所在的目錄是否有寫權限,如果有才可以刪除(同時必須具備執(zhí)行權限)。
linux權限管理13


設置
屬主:所屬的用戶,文檔所有者,這是一個賬戶,這是一個人
屬組:所屬的用戶組,這是一個組
基本語法: # ls -l 查看文檔屬主與屬組
linux權限管理操作14

這兩項信息在文檔創(chuàng)建的時候會使用創(chuàng)建者的信息(用戶名、用戶所屬的主組名稱)。

linux權限管理操作15


問題:為什么itheima.txt 的屬主和屬組默認都是itheima


2、為什么要修改屬主與屬組?

舉例:

一個財務表格,以前由胡一菲進行更新,她有讀寫權限,現(xiàn)在胡一菲去阿拉善沙漠找曾老師了,改權限沒用,需要把屬主改成諸葛大力,由諸葛大力更新。

3、chown修改文件的屬主

基本語法: # chown [-R] 新文檔擁有者名稱 文檔路徑

作用:更改文檔的所屬用戶(change owner)

選項:-R 代表遞歸修改文件的屬主

示例代碼1:將readme.txt文檔屬主更改為itheima

#touch readme.txt

#ll readme.txt

#chown itheima readme.txt

將readme.txt文件的屬主設置為itheima

#ll readme.txt

linux權限管理20


示例代碼2:將shop文件夾的擁有者更改為itheima

#mkdir shop
#ll
#chown itheima shop
將shop文件夾的屬主設置為itheima
#ll
linux權限管理21
基本語法: # chgrp [-R] 新文檔組名稱 文檔的路徑
作用:更改文檔的所屬用戶組(change group)
示例代碼1:將readme.txt文檔所屬組修改為itcast
linux權限管理20.2
錯誤信息:invalid user: ‘itheima’
不可用的賬戶"itheima"
原因:檢查是否有這個賬戶,如果沒有,需要新建
示例代碼2:將shop文檔所屬組修改為itcast
linux權限管理20.4
問題:如何通過一個命令實現(xiàn)既可以更改所屬的用戶,也可以修改所屬的
用戶組呢?
答:使用 chown 命令
基本語法: 語法:# chown [-R] username:groupname 文檔路徑
示例代碼:將readme.txt文件的擁有者與所屬組都更改為root


#ll readme.txt
#chown root:root readme.txt
將readme.txt文件的屬主和屬組同時設置為root
#ll readme.txt

特別注意:
一般來說,這個指令(chown)只有是由系統(tǒng)管理者(root)所使用,普通用戶沒有權限可以改變別人的檔案擁有者,也沒有權限可以將自己的檔案擁有者改設為別人。只有系統(tǒng)管理者(root)才有這樣的權限。


四、特殊權限(擴展)

1、設置位S(SetUid)

作用:為了讓一般使用者臨時具有該文件所屬主/組的執(zhí)行權限。

例如:/usr/bin/passwd在執(zhí)行它的時候需要去修改/etc/passwd和/etc/shadow等文件,這些文件除了root外,其他用戶都沒有寫權限,但是又為了能讓普通用戶修改自己的密碼,該怎么辦呢?

答:可以臨時讓他們具有root的權限,而這個s權限就是用來完成這個特殊任務的。s權限只能應用在二進制的可執(zhí)行文件上。
linux權限管理21

示例代碼:不想讓普通用戶修改自己的密碼

注:which命令可以用于查看二進制可執(zhí)行文件所在位置

去除s權限,基本語法:

#which passwd
#ll /usr/bin/passwd
#chmod u-s /usr/bin/passwd
或者
#chmod 0755 /usr/bin/passwd
去除passwd程序的s權限
#ll /usr/bin/passwd
linux權限管理22


測試普通用戶:

linux權限管理23


注:0755最前面的0表示不使用任何特殊權限,如果想使用數(shù)字設置特殊權限,可以使用4表示設置S位。

2、沾滯位T (sticky bit)
命令:chmod
語法:# chmod [選項] 文件夾
作用:只允許文件的創(chuàng)建者和root用戶刪除文件
常用選項:
        o+t 添加粘滯位
        o-t 去掉粘滯位


用法:chmod o+t 目錄名
示例代碼:
#chmod o+t
含義:給目錄增加粘滯位權限。

舉例:

公司多個部門公用一個文件夾work,為了讓所有人都能訪問,work文件夾賦予了777權限,用戶root新建了一個文件root.txt,發(fā)現(xiàn)被別人刪除了。我們希望root建立的文件,只有root自己可以刪。

步驟1:root用戶下操作

root用戶新建文件夾/work,并且新建兩個文件root.txt和root1.txt,賦予/work文件夾和下面的文件777權限

#mkdir /work

#cd /work

#touch root.txt
#touch root1.txt
#chmod -R 777 /work
#ll -d /work
linux權限管理24

步驟2: wangwu用戶下操作

在沒有設置粘滯位的時候,wangwu可以刪除root創(chuàng)建的文件。

cd /work
ll -d /work
ll
rm -rf root.txt
ll
linux權限管理25

步驟3:root用戶下操作:給/work文件夾添加粘滯位

#ll -d /work/
#chmod o+t /work
#ll -d /work/
linux權限管理28

步驟4:wangwu用戶下操作
發(fā)現(xiàn)添加粘滯位后,無法刪除root2.txt文件

#ll -d /work/
#chmod o+t /work
#ll -d /work/
linux權限管理29
步驟5:root用戶下操作
去掉/work文件夾的取消粘滯位

#ll -d /work/
#chmod o-t /work
#ll -d /work/
linux權限管理28
步驟6:wangwu用戶下操作
wangwu用戶下,發(fā)現(xiàn)又可以刪除了

#cd /work/
#rm -rf root1.txt
#ll
linux權限管理29

問題:我們學過的所有者身份包含哪些?
答案:ugo,屬主,屬組,其他。
問題:我們學過的文件權限包含哪些?
答案:rwx,讀寫執(zhí)行,特殊s,t
linux權限管理30

ACL,是 Access Control List(訪問控制列表)的縮寫,在 Linux 系統(tǒng)中, ACL 可實現(xiàn)對單一用戶設定訪問文件的權限。

1、基本命令

getfacl命令:查看文件的ACL策略及權限

setfacl命令: 給文件針對某個用戶或者某個組來增加(設置)ACL策略



2、getfacl命令
linux權限管理31

3、setfacl命令

-m : 修改acl策略

-x :去掉某個用戶或者某個組的權限

-b :刪除所有的acl策略

-R :遞歸,通常用在文件夾

mask:mask定義除other和所有人(擁有者)外的最大權限

setfacl -m u:用戶名:rwx /usr/local/shichangbu 給單個用戶單獨加權限

setfacl -m g:用戶組名:rwx /usr/local/shichangbu 給單個組單獨加權限

setfacl -x u:用戶 /usr/local/shichangbu 去掉某個用戶的權限

setfacl -x g:組名 /usr/local/shichangbu 去掉某個組的acl策略

setfacl -b -R /usr/local/shichangbu 刪除所有的acl策略,遞歸子文件

例如:

setfacl -m u:user01:rw file1 針對于單個用戶給可讀可寫權限

setfacl -m g:sysadmin:rw file1 針對于單個組給可讀可寫權限

示例代碼1:給newuser01用戶單獨在市場部文件夾上增加rx權限

#mkidr /shichangbu

#cd /shichangbu

驗證newuser01用戶對于file1文件只有讀權限

#touch file{1..5}.txt

#chown -R root:itheima shichangbu/

遞歸設置shichangbu文件夾的屬主是root,屬組是itheima

#getfacl shichangbu/

#useradd newuser01

#passwd newuser01

#setfacl -m u:newuser01:rx -R /usr/local/shichangbu/

單獨設置newuser01對于shichangbu文件夾的rx權限,并且遞歸包含所有子文件

#getfacl /usr/local/shichangbu

查看/usr/local/shichangbu文件夾的ACL權限

linux權限管理34

驗證newuser01用戶對于file1文件只有讀權限

linux權限管理33

示例代碼2:給newusergrp組在市場部文件夾上增加rx權限,遞歸所有子文件

#groupadd newusergrp

#setfacl -m g:newusergrp:rx -R /usr/local/shichangbu/

單獨設置newusergrp組對于shichangbu文件夾的rx權限,并且遞歸包含所有子文件

#getfacl /usr/local/shichangbu/

linux權限管理35


示例代碼3:刪除所有acl策略

linux權限管理


1、什么是umask

umask表示創(chuàng)建文件時的默認權限(即創(chuàng)建文件時不需要設置而天生的權限)
例如:
root用戶下,touch a ,文件a的默認權限是644
普通用戶下,touch b ,文件b的默認權限是664
644和664我們并沒有設置,其中的關鍵因素就是umask
最大默認權限:
文件666
文件夾777

2、umask值

可以使用命令umask來查看umask的值:

基本語法:# umask

linux權限管理37


注:0022中第一位0代表特殊權限位,可以不設置。
分析:
linux權限管理38


結合上述的舉例得知:

默認權限=最高權限-umask( 644=666-022 // 664=666-002 )


但是:

當umask為011,創(chuàng)建文件的默認權限應該是655,但是實際運行的時候默認權限是 666

666 -> rw-rw-rw-

011 -> -----x--x

相減得:

666 -> -rw-rw-rw-

注:這個特殊情況僅出現(xiàn)在文件,因為文件[二進制文件除外]沒有x執(zhí)行權限), 所以,查看文件的umask時我們要特別注意是否有奇數(shù)位(x表示1)

umask + 數(shù)值修改當前用戶的umask 如: # umask 044
不過這樣設置的umask會在用戶重新登錄的時候恢復原來的值,我們可以把修改的umask保存在~/.bashrc
操作步驟:

#vim ~/.bashrc
① 在文件末尾添加umask 044
② 保存退出
③ 重新登錄用戶則保存成功

示例代碼:
linux權限管理39
猜你喜歡:

linux用戶組管理命令詳細介紹

linux文件管理圖文教程:linux文件管理命令詳解
0 分享到:
和我們在線交談!