上一篇將一些用戶和組管理命令寫完,接下來是權限管理
權限管理:
每一個目錄或文件都有相應的權限位來限制用戶是否有權限可以"使用"
進程安全上下文:
進程對文件的訪問權限應用模型:
進程的屬主與文件的屬主是否相同;如果相同,則應用屬主權限;
否則,則檢查進程的屬主是否屬於文件的屬組;如果是,則應用屬組權限;
否則,就只能應用other的權限;
解:當某一個用戶訪問文件時,會判斷用戶是否屬於文件屬主、屬組、其它人;依次進行判斷,對應某個權限位時,則使用其權限。
首先看一下文件權限位對應的意義:
[root@test7_1 sh]# ll test.txt
-rwxrwxrwx 1 root root 1186 Apr 16 15:22 test.txt
rwxrwxrwx:
左三位:定義user的權限,UID
中三位:定義group的權限;GID
右三位:定義other的權限
權限:
r:readable, 讀
w:writable, 寫
x:excutable,執行
目錄:
r:可使用ls命令獲取其下的所有文件列表;
w: 可修改此目錄下的文件列表;即創建或刪除文件;
x: 可cd至此目錄中,且可使用ls -l來獲取所有文件的詳細屬性信息;
文件:
r:可獲取文件的數據;
w: 可修改文件的數據;
x:可將此文件運行爲進程;
注:目錄權限與文件權限是兩碼事。不是有目錄權限後,裏面的文件就可以讀、改等操作
權限組合機制:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
簡單的來說:r=4、w=2、x=1,‘-’=0
權限管理命令:
chmod命令:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
三類用戶:
u:代表屬主
g:代表屬組
o:代表其它
a: 代表所有
(1)chmod [OPTION]... MODE[,MODE]... FILE...
MODE表示法:
賦權表示法:直接操作一類用戶的所有權限位rwx;
u=rwx
g=rwx
o=rwx
a=rwx
授權表示法:直接操作一類用戶的一個權限位r,w,x;
u+, u-:u+r、u+w、u+x,u-r...
g+, g-:g+r...,u-r...
o+, o-:o+r...,o-r...
a+, a-:a+r...,a-r...
示例:
[root@test7_1 sh]# chmod u+w test.txt
[root@test7_1 sh]# chmod a-w test.txt
(2)chmod [OPTION]... OCTAL-MODE FILE...
[root@centos7 ~]# chmod 777 anaconda-ks.cfg
(3)chmod [OPTION]... --reference=RFILE FILE..(參考anaconda-ks.cfg權限,授權到hello文件上)
[root@centos7 ~]# chmod --reference=anaconda-ks.cfg hello
注意:用戶僅能修改屬主爲自己的那些文件的權限;
從屬關係管理命令:chown, chgrp
chown命令:修改所有者和組
chown [OPTION]... [OWNER][:[GROUP]] FILE...
兩種方式:
[root@centos7 ~]# chown kwang:kwang hello
[root@centos7 ~]# chown kwang.kwang hello
chown [OPTION]... --reference=RFILE FILE...
參考一個文件所有者和組的屬性,授權到指定文件上
選項:
-R:遞歸修改
chgrp命令:修改組屬性
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
示例:
[root@test7_1 sh]# chgrp test2 test.txt
注意:僅管理員可修改文件的屬主和屬組;
umask:文件的權限反向掩碼
當創建文件和目錄時,都將有反向掩碼和權限位相減爲初始權限
文件:
666-umask
目錄:
777-umask
注意:之所以文件用666去減,表示文件默認不能擁有執行權限;如果減得的結果中有執行權限,則需要將其加1,只能用在文件上;
umask: 022
666-022=644
777-022=755
umask命令:
umask:查看當前umask
umask MASK: 設置umask
[root@centos7 ~]# umask 022
注意:此類設定僅對當前shell進程有效;
練習:
1、新建系統組mariadb, 新建系統用戶mariadb, 屬於mariadb組,要求其沒有家目錄,且shell爲/sbin/nologin;嘗試root切換至用戶,查看其命令提示符;
2、新建GID爲5000的組mageedu,新建用戶gentoo,要求其家目錄爲/users/gentoo,密碼同用戶名;
3、新建用戶fedora,其家目錄爲/users/fedora,密碼同用戶名;
4、新建用戶www, 其家目錄爲/users/www;刪除www用戶,但保留其家目錄;
5、爲用戶gentoo和fedora新增附加組mageedu;
6、複製目錄/var/log至/tmp/目錄,修改/tmp/log及其內部的所有文件的屬組爲mageedu,並讓屬組對目錄本身擁有寫權限;
額外一個命令,可在複製文件同時設置其權限及屬主等
install命令:
install - copy files and set attributes(複製文件和設置文件屬性)
單源複製:
install [OPTION]... [-T] SOURCE DEST
多源複製:
install [OPTION]... SOURCE... DIRECTORY
install [OPTION]... -t DIRECTORY SOURCE...
創建目錄:
install [OPTION]... -d DIRECTORY...
常用選項:
-m, --mode=MODE:設定目標文件權限,默認爲755;
-o, --owner=OWNER:設定目標文件屬主;
-g, --group=GROUP:設定目標文件屬組;
-d,:創建目錄
示例:
[root@centos7 ~]# install -d /sh/install
drwxr-xr-x 2 root root 6 Mar 20 18:03 /sh/install/
[root@centos7 ~]# install -m 640 -o kwang -g kwang /etc/issue /sh/
-rw-r----- 1 kwang kwang 23 Mar 20 18:02 issue
注:/etc/issue是要複製文件 /sh是複製目標路徑