一、權限概述
㈠ 什么是權限
權限:在計算機系統中,權限是指某個計算機用戶具有使用軟件資源的權利。
思考:計算機資源分為哪兩部分?
硬件資源 硬盤、CPU、內存、網卡等物理硬件資源
軟件資源
軟件:操作系統(特殊的軟件)、應用程序。只要不啟動,這些軟件就是一堆靜態的文件,并且靜靜的躺在我們計算機的磁盤中。
軟件資源:Linux系統中,一切皆文件!SO,這里的軟件資源就是文件資源。
總結:
我們今天所講的權限,指的就是:文件資源所擁有的相關權限,即文件權限。
㈡ 權限設置目的
文件權限的設置目的:是想讓某個用戶有權利操作文件
㈢ 文件權限的分類
普通權限
用戶正常情況去操作文件所具有的權限
高級權限
用戶對某個文件操作有特殊需求,而普通權限不能滿足,需要給文件設置高級權限
默認權限
用戶在系統中創建一個文件,該文件默認都會有一個權限,該權限是默認有的
注意:
權限是設置在文件上的,而不是用戶
二、普通權限(重點)
㈠ 理解普通權限rwx含義
1、讀權限—r(read)
針對目錄
一個目錄擁有r權限,說明可以查看該目錄里的內容(ls命令列出)
針對普通文件
一個普通文件擁有r權限,說明可以查看該文件的內容(cat/head/tail/less/more等命令查看)
讀權限r(read)用數字表示是4
2、寫權限—w(write)
針對目錄
一個目錄擁有w權限,說明可以在該目錄里創建、刪除、重命名等操作(mkdir/touch/mv/rm等)
針對普通文件
一個普通文件擁有w權限,說明可以修改該文件的內容(vi/vim編輯器編輯文件)
寫權限w(write)用數字表示是2
3、執行權限—x(execute)
針對目錄
一個目錄擁有x權限,說明可以進入或切換到該目錄里(cd命令)
針對普通文件
一個普通文件擁有x權限,說明可以執行該文件(一般程序文件、腳本文件、命令都需要執行權限)
執行權限x(execute)用數字表示是1
4、沒有權限—橫杠-
沒有任何權限用橫杠
-
表示,數字表示是
0
㈡ 理解UGO的含義
1、UGO指的是什么
UGO,指的是用戶身份,每個字母代表不同的用戶身份。
U(the user who owns it)
文件的擁有者(owner)或者創建者
G(other users in the file’sgroup)
在文件的所屬組(默認是創建文件的用戶的主組)里的用戶
O(other usersnot inthe file’s group)
既不是文件的創建者,也不在文件屬組里的用戶,稱為其他人
注意:
除了上面ugo以外,還有一個字母a(all users),表示所有用戶,包含ugo
2、如何判斷不同身份的用戶對文件的權限
查看文件詳細信息,包含權限信息: [root@localhost ~]# ls -l total 144 -rw-r--r--. 1 root root 9 Mar 2 20:38 1.sh -rw-------. 1 root root 1651 Feb 28 11:00 anaconda-ks.cfg drwxr-xr-x. 2 root root 4096 Mar 6 18:34 Desktop drwxr-xr-x. 2 root root 4096 Feb 28 14:12 dir1
㈢ 修改文件普通權限(chmod)
1、chmod命令用法
chmod [選項] 文件名 常見選項: -R, --recursive遞歸更改目錄和目錄里文件的權限
2、舉例說明
① 通過字母形式更改文件權限
u:表示文件擁有者 g:表示文件屬組用戶 o:表示其他人,即不是文件的創建者,也不在文件屬組里 a:表示所有人
環境準備
[root@localhost ~]# mkdir /tmp/dir1 [root@localhost ~]# touch /tmp/dir1/file{1..5} [root@localhost ~]# touch /tmp/test{1..3} [root@localhost ~]# ll /tmp/ -R
使用字母形式修改文件權限
[root@localhost tmp]# pwd /tmp [root@localhost tmp]# ll test1 -rw-r--r--. 1 root root 0 Mar 6 20:45 test1 [root@localhost tmp]# chmod u+x test1 [root@localhost tmp]# ll test1 -rwxr--r--. 1 root root 0 Mar 6 20:45 test1 [root@localhost tmp]# chmod g+w test1 [root@localhost tmp]# ll test1 -rwxrw-r--. 1 root root 0 Mar 6 20:45 test1 [root@localhost tmp]# chmod o-r test1 [root@localhost tmp]# ll test1 -rwxrw----. 1 root root 0 Mar 6 20:45 test1 [root@localhost tmp]# ll test2 -rw-r--r--. 1 root root 0 Mar 6 20:45 test2 [root@localhost tmp]# chmod a+x test2 [root@localhost tmp]# ll test2 -rwxr-xr-x. 1 root root 0 Mar 6 20:45 test2 [root@localhost tmp]# ll test3 -rw-r--r--. 1 root root 0 Mar 6 20:45 test3 [root@localhost tmp]# chmod u+x,g+w,o-r test3 [root@localhost tmp]# ll test3 -rwxrw----. 1 root root 0 Mar 6 20:45 test3 [root@localhost tmp]# chmod u=rw,g=rx,o+r test3 [root@localhost tmp]# ll test3 -rw-r-xr--. 1 root root 0 Mar 6 20:45 test3 修改目錄的權限: [root@localhost tmp]# ll -d dir1/ drwxr-xr-x. 2 root root 4096 Mar 6 20:45 dir1/ [root@localhost tmp]# ll dir1/ total 0 -rw-r--r--. 1 root root 0 Mar 6 20:45 file1 -rw-r--r--. 1 root root 0 Mar 6 20:45 file2 -rw-r--r--. 1 root root 0 Mar 6 20:45 file3 -rw-r--r--. 1 root root 0 Mar 6 20:45 file4 -rw-r--r--. 1 root root 0 Mar 6 20:45 file5 1.只修改目錄本身的權限 [root@localhost tmp]# chmod g+w dir1/ [root@localhost tmp]# ll -d dir1/ drwxrwxr-x. 2 root root 4096 Mar 6 20:45 dir1/ [root@localhost tmp]# ll dir1/ total 0 -rw-r--r--. 1 root root 0 Mar 6 20:45 file1 -rw-r--r--. 1 root root 0 Mar 6 20:45 file2 -rw-r--r--. 1 root root 0 Mar 6 20:45 file3 -rw-r--r--. 1 root root 0 Mar 6 20:45 file4 -rw-r--r--. 1 root root 0 Mar 6 20:45 file5 說明:目錄下面文件的權限并沒有修改 2.修改目錄以及目錄里所有文件的權限(遞歸修改),使用-R參數 [root@localhost tmp]# chmod -R o+w dir1/ [root@localhost tmp]# ll -d dir1/ drwxrwxrwx. 2 root root 4096 Mar 6 20:45 dir1/ [root@localhost tmp]# ll dir1/ total 0 -rw-r--rw-. 1 root root 0 Mar 6 20:45 file1 -rw-r--rw-. 1 root root 0 Mar 6 20:45 file2 -rw-r--rw-. 1 root root 0 Mar 6 20:45 file3 -rw-r--rw-. 1 root root 0 Mar 6 20:45 file4 -rw-r--rw-. 1 root root 0 Mar 6 20:45 file5
② 通過數字形式更改文件權限
學會用數字表示權限
字母和數字對應關系: r——4 w——2 x——1 -——0 rw- r-x r--用數字表示就是654 rwx rw- ---用數字表示就是760 755用字母表示就是rwx r-x r-x 644用字母表示就是rw- r-- r--
使用數字形式修改文件權限
# chmod 644 file1 # chmod 700 file2 # chmod -R 755 dir1
總結:
用戶是否可以刪除目錄里的文件,看的是目錄的權限!!!
對于正常能夠操作的目錄來說,應該默認具備r-x
3、課堂練習
創建5個用戶user01~user05和一個admin組
將user01~user03用戶加入到admin組里
user01用戶在其家目錄里創建file1~file3三個文件
user02用戶編輯/home/user01/file1文件的內容:good good study,day day up!
user05用戶往/home/user01/file1文件里追加內容:I known
user04用刪除/home/user01家目錄的所有文件
三、高級權限(了解)
㈠ 高級權限有哪些
1、冒險位(SETUID)
冒險位,指文件操作者(用戶)
臨時擁有
文件
擁有者
的權限
冒險位,一般針對的是
命令
或者
腳本文件
冒險位,用字母表示是
s或S
;數字表示是
4
冒險位的設置:chmod u+s 文件名或者chmod 4xxx 文件名
2、強制位(SETGID)
強制位,一般針對的是目錄
如果一個目錄擁有強制位,那么任何用戶在該目錄里所創建的任何文件的屬組都會繼承該目錄的屬組。
強制位,用字母表示是s或S;數字表示是2
強制位的設置:chmod g+s 文件名或者chmod 2xxx 文件名
3、粘滯位(STICKY)
粘滯位,一般針對的是公共目錄
如果一個公共目錄擁有粘滯位,那么該目錄下的文件,只有root和文件的創建者可以刪除,其他人只能自己管理自己。(A用戶不能刪除B用戶創建的文件)
粘滯位,用字母表示是t或T;數字表示是1
粘滯位的設置:chmod o+t 文件名或者chmod 1xxx 文件名
㈡ 高級權限設置
1、冒險位舉例
需求: 給一個vim命令設置冒險位,目的是任何人拿vim去修改文件可以臨時獲得文件擁有者的權限 [root@localhost tmp]# which vim /usr/bin/vim [root@localhost tmp]# ll /usr/bin/vim -rwxr-xr-x. 1 root root 2324712 Dec 22 2016 /usr/bin/vim [root@localhost tmp]# chmod u+s /usr/bin/vim 或者 [root@localhost tmp]# chmod 4755 /usr/bin/vim [root@localhost tmp]# ll /usr/bin/vim -rwsr-xr-x. 1 root root 2324712 Dec 22 2016 /usr/bin/vim 測試驗證,普通用戶使用vim修改一個本沒有權限修改的文件: [root@localhost tmp]# ll /etc/passwd -rw-r--r--. 1 root root 1650 Mar 5 20:39 /etc/passwd [root@localhost tmp]# su - user01 [user01@localhost ~]$ vim /etc/passwd 驗證是否可以修改成功,如果可以,說明user01用戶臨時擁有了/etc/passwd文件擁有者的權限
2、強制位舉例
需求: 給目錄dir2設置一個強制位,測試是否任何人在該目錄里創建的文件屬組都是該目錄的屬組 [root@localhost tmp]# ll -d dir2 drwxr-xr-x. 2 root root 4096 Mar 6 13:42 dir2 給dir2增加強制位: [root@localhost tmp]# chmod g+s dir2 給dir2目錄設置權限,讓其他人可以寫 [root@localhost tmp]# chmod o+w dir2 [root@localhost tmp]# ll -d dir2 drwxr-srwx. 2 root root 4096 Mar 6 13:42 dir2 測試普通用戶user01在dir2目錄里創建文件的屬組是否是dir2的屬組 [root@localhost tmp]# su - user01 [user01@localhost ~]$ touch /tmp/dir2/file1 [user01@localhost ~]$ ll /tmp/dir2/file1 -rw-rw-r--. 1 user01 root 0 Mar 6 13:44 /tmp/dir2/file1
3、粘滯位舉例
需求: 在創建一個公共目錄/tmp/dir3,要求所有人都可以在該公共目錄里創建、刪除文件;但是只能自己管理自己,不能刪除別人的文件 [root@localhost ~]# mkdir /tmp/dir3 [root@localhost ~]# chmod 777 /tmp/dir3 [root@localhost ~]# chmod o+t /tmp/dir3 或者一步到位: [root@localhost ~]# chmod 1777 /tmp/dir3 [root@localhost ~]# ll -d /tmp/dir3 drwxrwxrwt. 2 root root 4096 Mar 6 13:52 /tmp/dir3 測試驗證: 自己完成
㈢ 總結
高級權限分類
冒險位——>針對命令 s/S 4 chmod u+s 命令文件
強制位——>針對目錄 s/S 2 chmod g+s 目錄
粘滯位
——>針對公共目錄 t/T 1 chmod o+t 公共目錄
高級權限設置
chmod 4xxx 文件名 chmod 2xxx 目錄名 chmod 1777 公共目錄
四、默認權限(了解)
㈠ 什么是文件的默認權限
所謂文件的默認權限(遮罩權限),是指用戶創建文件后,文件天生就有的權限,不需要設置。
㈡ 文件默認權限由誰控制
文件默認權限由一個叫做umask的東西來控制。
㈢ umask如何控制文件默認權限
1、臨時控制
什么是臨時控制?
臨時控制,指的是用命令umask臨時設置,只在當前終端當前進程中生效。
查看當前用戶的umask: [root@localhost ~]# umask 0022 [root@localhost ~]# su - user01 [user01@localhost ~]$ umask 0002 注意: 1. 管理員和普通用戶的umask不同,就表示管理員和普通用戶創建的文件的默認權限不同! 2. 第1位數字表示高級權限;后面3位數字表示普通權限
如何臨時設置用戶的umask?
寫在前面:
Linux系統中,默認創建目錄的最大權限是0777;文件的最大權限是0666
777
666 rw-rw-rw-
[root@localhost ~]# umask 0007臨時設置root用戶的umask為0007 問:umask=0007,那么在當前終端上root用戶所創建目錄和普通文件的權限分別是什么呢? 計算過程如下: umask=文件的最大權限-文件的默認權限 目錄: 0007=0777-目錄的默認權限 目錄的默認權限=0777-0007=0770=rwxrwx--- 770 普通文件: 0007=0666-普通文件的默認權限 普通文件的默認權限=0666-0007=0660=rw-rw---- 說明: 1.權限用數字表示時沒有負數,所以最小就是0 2.默認權限規則遵循Linux系統中權限最小化原則 $ stu1 umask 0003 dir: 默認權限=目錄最大權限-umask=777-003=774rwxrwxr-- file: 默認權限=文件最大權限-umask=666-003=663 rw- rw- -wx 實際: 664 rw-rw-r--
2、永久控制
什么是永久設置?
永久設置,指的是通過修改配置文件設置,對用戶的所有終端所有進程生效
修改哪個配置文件呢?
相關配置文件介紹
全局配置文件(針對所有用戶所有進程) /etc/profile 系統和用戶的環境變量信息,當用戶第一次登錄時,該文件被讀取 /etc/bashrc 每個運行的bash信息(系統別名、函數及默認權限的定義),當bash被打開時,該文件被讀取 局部配置文件(針對某個特定用戶以及用戶的所有進程) ~/.bashrc 當前用戶的bash信息,當用戶登錄和每次打開新的shell時該文件被讀取 ~/.bash_profile 當前用戶的環境變量,當用戶登錄時,該文件被讀取 ~/.bash_history 保存當前用戶歷史命令的文件 ~/.bash_logout 當用戶退出bash或者終端時,會首先執行該文件里的代碼,然后再退出
2. 如何永久設置用戶的umask?
1.針對所有用戶生效 # vim /etc/bashrc 在該文件的最后增加以下內容: umask 0007 重新讀取該配置文件讓其立馬生效 # source /etc/bashrc 或者 # . /etc/bashrc 2.針對某個用戶生效 比如,只針對user01用戶生效 [user01@localhost ~]$ vim ~/.bashrc 在該文件的最后增加以下內容: umask 0007
五、文件的屬主和屬
如何修改文件的屬主和屬組
1、chown命令修改
chown命令既可以修改文件的屬主,也可以修改文件的屬組。
只修改文件的屬主 # chown 用戶名 文件名 修改文件的屬主和屬組 # chown 用戶名.組名 文件名 # chown 用戶名:組名 文件名 # chown 用戶名.文件名//沒有指定組名,默認是用戶的主組 只修改文件的屬組 # chown .組名文件名 # chown :組名 文件名 可以加-R選項,表示遞歸修改
2、chgrp命令修改
chgrp命令只能修改文件的屬組。
# chgrp 組名 文件名
六、ACL訪問控制策略(擴展)
㈠ ACL能做什么
ACL訪問控制策略可以作為前面所講
權限的補充
,
更加細
的來控制文件的權限
ACL策略可以
只針對某個用戶
在文件上有相應權限
ACL策略也可以
只針對多個用戶或者一個組
里的所有用戶在文件上有相應權限
㈡ 如何設置文件的ACL策略
1、設置ACL策略(setfacl)
常用選項: -m修改或者設置ACL策略 -R 遞歸授權,對目錄下已存在的目錄或文件有acl策略,但新建的文件沒有 -x 去掉某個用戶或者某個組的權限 -b 刪除所有的acl策略 -d 默認ACL策略,只針對目錄,該目錄下新建的目錄和文件都會繼承acl策略 mask: 定義除其他人和所有者外的最大權限
重點掌握:
setfacl -m u:用戶:rwx /home/redhat/file1 給單個用戶單獨加權限 setfacl -m g:組名:rwx /home/redhat/file1 給單個組單獨加權限 setfacl -x u:用戶 /home/redhat/file1 去掉某個用戶的權限 setfacl -x g:組名 /home/redhat/file1 去掉某個組的acl策略 setfacl -b /home/redhat/file1 刪除文件上所有的acl策略 # setfacl -m urw file1 針對于單個用戶給可讀可寫權限 # setfacl -m grw file1 針對于單個組給可讀可寫權限
2、查看ACL策略(getfacl)
# getfacl 文件名
鏈接:https://www.cnblogs.com/rallina/p/17931072.html
-
Linux
+關注
關注
87文章
11304瀏覽量
209476 -
計算機
+關注
關注
19文章
7494瀏覽量
87947 -
權限管理
+關注
關注
0文章
12瀏覽量
9057
原文標題:六、ACL訪問控制策略(擴展)
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論