上一篇将一些使用者群組管理指令寫完,接下來是權限管理
權限管理:
每一個目錄或檔案都有相應的權限位來限制使用者是否有權限可以"使用"
程序安全上下文:
程序對檔案的通路權限應用模型:
程序的屬主與檔案的屬主是否相同;如果相同,則應用屬主權限;
否則,則檢查程序的屬主是否屬于檔案的屬組;如果是,則應用屬組權限;
否則,就隻能應用other的權限;
解:當某一個使用者通路檔案時,會判斷使用者是否屬于檔案屬主、屬組、其它人;依次進行判斷,對應某個權限位時,則使用其權限。
首先看一下檔案權限位對應的意義:
[[email protected]_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...
示例:
[[email protected]_1 sh]# chmod u+w test.txt
[[email protected]_1 sh]# chmod a-w test.txt
(2)chmod [OPTION]... OCTAL-MODE FILE...
[[email protected] ~]# chmod 777 anaconda-ks.cfg
(3)chmod [OPTION]... --reference=RFILE FILE..(參考anaconda-ks.cfg權限,授權到hello檔案上)
[[email protected] ~]# chmod --reference=anaconda-ks.cfg hello
注意:使用者僅能修改屬主為自己的那些檔案的權限;
從屬關系管理指令:chown, chgrp
chown指令:修改所有者群組
chown [OPTION]... [OWNER][:[GROUP]] FILE...
兩種方式:
[[email protected] ~]# chown kwang:kwang hello
[[email protected] ~]# chown kwang.kwang hello
chown [OPTION]... --reference=RFILE FILE...
參考一個檔案所有者群組的屬性,授權到指定檔案上
選項:
-R:遞歸修改
chgrp指令:修改組屬性
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
示例:
[[email protected]_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
[[email protected] ~]# 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,:建立目錄
示例:
[[email protected] ~]# install -d /sh/install
drwxr-xr-x 2 root root 6 Mar 20 18:03 /sh/install/
[[email protected] ~]# install -m 640 -o kwang -g kwang /etc/issue /sh/
-rw-r----- 1 kwang kwang 23 Mar 20 18:02 issue
注:/etc/issue是要複制檔案 /sh是複制目标路徑
轉載于:https://blog.51cto.com/waldenkk/1931329