上一篇將一些用戶和組管理命令寫完,接下來是權限管理shell
權限管理:
centos
每個目錄或文件都有相應的權限位來限制用戶是否有權限能夠"使用"安全
進程安全上下文:
ide
進程對文件的訪問權限應用模型:centos7
進程的屬主與文件的屬主是否相同;若是相同,則應用屬主權限;spa
不然,則檢查進程的屬主是否屬於文件的屬組;若是是,則應用屬組權限;orm
不然,就只能應用other的權限;遞歸
解:當某一個用戶訪問文件時,會判斷用戶是否屬於文件屬主、屬組、其它人;依次進行判斷,對應某個權限位時,則使用其權限。進程
首先看一下文件權限位對應的意義:it
[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=四、w=二、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進程有效;
練習:
一、新建系統組mariadb, 新建系統用戶mariadb, 屬於mariadb組,要求其沒有家目錄,且shell爲/sbin/nologin;嘗試root切換至用戶,查看其命令提示符;
二、新建GID爲5000的組mageedu,新建用戶gentoo,要求其家目錄爲/users/gentoo,密碼同用戶名;
三、新建用戶fedora,其家目錄爲/users/fedora,密碼同用戶名;
四、新建用戶www, 其家目錄爲/users/www;刪除www用戶,但保留其家目錄;
五、爲用戶gentoo和fedora新增附加組mageedu;
六、複製目錄/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是複製目標路徑