通過本週的學習讓我對權限的認識有進了一步
用戶的權限管理:
普通權限:
特殊權限:
文件的特殊屬性:
FACL:
普通權限:
進程安全上下文:
1.判斷進程的所有者是否爲想要操作的文件的屬主,如果是,就按照屬主的權限進行授權;如果不是,就轉到第2條;
2.判斷進程的所有者是否爲想要操作的文件的屬組中的成員,如果是,就按照屬組的權限進行授權;如果不是,就轉到第三條;
3.按照其他用戶的權限進行授權;
權限的構成:
MODE(Permission):使用權
r:Readable,可讀
w:Writable,可寫
x:eXecutable,可執行
目錄:
r:可以使用ls命令獲得其中所有的文件名的列表;ls -l命令來獲取目錄中文件的詳細的屬性信息,也不能使用cd命令進入其中,也不能在路徑中引用該目錄;
w:可以修改此目錄中的文件名或文件名列表,即:可以在此目錄中創建、修改或刪除文件名;
x:可以使用ls -l命令來獲取其中的文件的詳細屬性信息;也可以在路徑中引用該目錄;也可以使用cd命令來進入其中;
注意:x權限是目錄的最基本權限,任何目錄都必須多任何用戶開放x權限,否則,用戶將無法進行任何操作;
文件:
r:可以查看或獲取該文件中存放的數據;
w:可以修改文件中存放的數據;
x:可以將此文件發起運行爲進程;
ls -l <--> ll
rw-r--r--:三個權限位——屬主、屬組、其他用戶
屬主權限:rw-
屬組權限:r--
其他用戶權限:r--
權限標識三元組:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
rw-r--r--
110100100
644
755 --> rwxr-xr-x
注意:只有某個文件的屬主才能修改文件的使用權(root除外);
修改文件的使用權限:
chmod --> change mode: chmod - change file mode bits
chmod [OPTION]... MODE[,MODE]... FILE...
MODE:符號權限標識法
u,g,o,a表示所有權;
+,-,=表示授權方式;
+:在原有的權限基礎上添加新的權限;
-:在原有的權限基礎上去除某些權限;
=:不考慮原有權限,直接將權限設置爲目標權限;
r,w,x表示具體權限內容;
例子:
chmod u+w file
chmod g+rw file
chmod u+x,g-wx,o-x file
chmod u=rw,g=r,o=r file
chmod ug-x file
chmod +x file 默認的爲a添加執行權限;
chmod +w file 默認的只爲屬主添加寫權限;
注意:文件的執行權限:Linux的文件系統來說,非常重要的安全的標識;
因爲一旦文件具備的執行權限,意味着該文件可以被髮起執行爲進程;
所以,默認情況下,文件都不具備執行權限;
chmod [OPTION]... OCTAL-MODE FILE...
如果使用八進制數字標識法,則每次必須給足所有的權限位;
如果給的權限位不完整,文件系統會自動補足,將給定的權限放置在右側,左側使用0來補;
chmod 640 file
chmod [OPTION]... --reference=RFILE FILE...
chmod --reference=/PATH/TO/SOMEFILE DES_FILE
chmod --reference=a b
選項:
-R, --Recursive:將目標目錄中的文件及子目錄和子目錄中的文件統一的設置爲指定的權限標識;
OWNERSHIP:所有權
屬主:資源掌控的某個特定用戶;owner(user),u
屬組:資源掌控的某些特定用戶;group,g
其他用戶:未曾掌控資源的那些用戶;other,o
全部用戶:all,a
chown:可以修改文件的屬主和屬組;
change file owner and group
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown OWNER FILE
chown :GROUP FILE
chown OWNER: FILE //將目標文件的屬主改爲OWNER,同時將屬組修改爲OWNER的基本組;
chown OWNER:GROUP FILE //將目標文件的屬主和主組修改爲OWNER和GROUP;
chown [OPTION]... --reference=RFILE FILE...
-R, --Recursive:將目標目錄中的文件及子目錄和子目錄中的文件統一的設置爲指定的所有權;
注意:修改OWNERSHIP操作只有超級用戶(root)可以完成;
chgrp:只能修改文件的屬組;
chgrp - change group ownership
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
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:設定目標文件的屬主;只能是root可用;
-g, --group=GROUP:設定目標文件的屬組;僅root可用;
注意:install命令不能複製目錄,即其源不能爲目錄;如果其源爲目錄,則install經歷了會進入目錄,依次複製其中的所有非目錄文件到目標位置;
mktemp命令:
一般來講,臨時文件都會創建在/tmp或/var/tmp目錄中;無需手動刪除,系統會定期自動清除這兩個目錄中的文件;
選項:
-d, --directory:可以創建臨時目錄;
例子:mktemp [-d] /PATH/TO/TMP.XXXXXXXX
回顧:
普通權限:
MODE:資源的使用權限
屬主:u
屬組:g
其他用戶:o
所有用戶:a
三元組:rwx
字符標識:
rwx-
八進制數字標識:
0-7
chmod
OWNERSHIP:資源的所有權
chown:
chown OWNER | :GROUP | OWNER: | OWNER:GROUP FILE -R
chgrp
chgrp GROUP FILE -R
install
mktemp
特殊權限:
SUID、SGID、STICKY
默認情況下,用戶發起執行一個進程,該進程的屬主是其發起者;也就是說,該進程是以其發起者的身份在運行;
SUID:
功能作用:用戶發起執行一個進程時,該程序文件如果擁有SUID權限的話,那麼此程序發起的進程其屬主爲改程序文件的屬主,而不是其發起者;
SUID權限所顯示的位置:文件的屬主權限中的執行權限位;如果屬主本來就有執行權限,顯示爲s;否則,顯示爲S;
管理文件的SUID權限:
chmod u+|-s FILE...
SGID:
如果某個目錄的對於一些用戶有寫權限並且設置了SGID權限時,則所有對此目錄有寫權限的用戶在創建新的文件或目錄以後,新文件的屬組不再是創建用戶的基本組,而是繼承了該目錄的屬組;
SGID權限顯示的位置:文件的屬組權限中的執行權限位;如果屬組本來就執行權限,顯示爲s;否則顯示爲S;
管理文件的SGID權限:
chmod g+|-s FILE...
STICKY:sticky(粘性的) :粘滯位
如果某個目錄中,有超過一個用戶可以有寫權限,則這多個用戶都可以在該目錄中隨意創建、修改和刪除文件名;
STICKY的功能作用:
如果爲上述類似的目錄設置了STICKY權限,則每個用戶仍舊能夠創建和修改文件名,但每個用戶只能刪除那些屬主爲其自身的文件名;
STICKY權限的顯示位置:在文件權限的其他用戶的執行權限位;如果原來就有執行權限,則顯示爲t;否則,顯示爲T;
管理文件的STICKY權限:
chmod o+|-t FILE...
suid sgid sticky
--- 000 0
--t 001 1
-s- 010 2
-st 011 3
s-- 100 4
s-t 101 5
ss- 110 6
sst 111 7
特殊權限的另一種修改方式:
將特殊權限對應的八進制數字放置於普通權限八進制數字的前面即可;
例如:想要給某個目錄加上粘滯位:
chmod 1755 DIRECTORY...
umask
權限遮罩碼:在創建文件或目錄時默認的權限生成標準;
root:0022
不考慮特殊權限位
對於新創建的文件或目錄,不遮擋屬主的任何權限;遮住了屬組的寫權限和其他用戶的寫權限;
[root@localhost ~]# mkdir test --> rwxr-xr-x
[root@localhost ~]# touch test.txt --> rw-r--r--
文件的默認權限是:666-umask
目錄的默認權限時:777-umask
理解遮罩碼:
將遮罩碼的值變爲二進制,凡是有1的位置,其權限在創建文件時,就不設置;
033 000011011 --- 110100100 644
--- 111100100 744
默認情況下,文件的遮罩碼已經有了一個0111,在此基礎之上再次應用umask來遮罩權限
文件的特殊屬性:
查看文件的特殊屬性:
lsattr:list file attributes on a Linux second extended file system
lsattr [ -RVadv ] [ files... ]
修改設置文件的特殊屬性:
chattr:change file attributes on a Linux file system
chattr [ -RVf ] [ -v version ] [ mode ] files...
mode:會使用+-=的方式來設置;
整個chattr命令最關鍵最核心的設置就是[mode]部分;
[aAcCdDeijsStTu]都是所需要的屬性;
+:在原有屬性設定的基礎上,添加新屬性;
-:從原有屬性設置中移除指定的屬性;
=:不考慮原有的屬性設置,直接將文件的屬性更新爲指定的屬性內容;
a:append,設置這個屬性的文件,其內容不能被更改和刪除,只能以追加的方式向文件中寫數據;多數的服務器日誌類文件會設置爲此屬性;
A:atime,文件的訪問時間戳;IO瓶頸;設置A屬性,可以使得文件在被訪問時不更改文件的訪問時間戳,從而可以有效的防止IO瓶頸的發生;
c:設置文件是否自動壓縮後再行存儲;
C:設置文件是否開啓"寫時複製"屬性;
d:設置文件在使用dump進行備份的時候,不會稱爲備份目標;
D:設置文件在文件系統中的異步寫操作;
i:設置文件不能被刪除、修改、設定鏈接關係;
s:設置文件的保密性刪除,一旦設置s屬性的文件被刪除,其對應存儲設備中的使用空間會被一併收回;
u:跟s屬性相反,如果這樣的文件被刪除,則其存儲於存儲設備中的數據會被留存;
最常用的屬性:i和a
chattr +i FILE
常用選項:
-R:遞歸的設置指定目錄中的所有文件和子目錄的屬性;
爲文件賦予額外的權限機制:FACL:File Access Control List,文件訪問控制列表
文件的額外賦權機制;
在原有的u,g,o權限位之外,讓普通用戶能夠控制權限賦予另外的用戶和組的一種賦權機制:
一般在CentOS或RHEL7版本以後的發行版中,才逐漸成熟;
注意:如果設置了FACL之後再修改目標文件的使用權限,那麼FACL中設置的條目就可能收到影響而導致與要求不符;因此,如果真的需要設置FACL,就要在已經確定目標文件的使用權限以後再行設置;
bash的腳本初步
shell腳本:另外一種歷史命令的保持形式;
# wget https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
# rpm -ivh epel-release-7-8.noarch.rpm
# yum repolist
cat exclude_epel.list
debug/
repoview/
# cat yum_rsync.sh
#!/bin/sh
https://mirrors.tuna.tsinghua.edu.cn/epel/6Server/x86_64/
#EPEL 6 Repository
/usr/bin/rsync -avrt https://mirrors.tuna.tsinghua.edu.cn/epel/6/x86_64/ --exclude-from=/home/repository/exclude_epel.list /home/repository/epel/6/x86_64
#EPEL 6Server Repository
/usr/bin/rsync -avrt https://mirrors.tuna.tsinghua.edu.cn/epel/6Server/x86_64/ --exclude-from=/home/repository/exclude_epel.list /home/repository/epel/6Server/x86_64