6.6 2.14-2.17
[root@hyc-01-01 ~]# ls -l
總用量 8
-rw-r--r--. 1 root root 0 6月 5 21:14 2.txt
-rw-------. 1 root root 6716 6月 5 22:49 anaconda-ks.cfg.1
-rw-r--r--. 1 root root 0 6月 5 21:17 ls2
從左到右第一位為文件類型,後面9位為文件權限位;
r代表可讀,w表示可寫,x為可執行;
第一個3位組表示所有者權限,第二個3位組表示所屬組,第三個3位組表示其他用戶;
用數字表示權限:
r=4,w=2,x=1;用戶權限即為這三個值之和;
r--=4,rw-=6,rwx=7
[root@hyc-01-01 ~]# ls -l
總用量 8
-rw-r--r--. 1 root root 0 6月 5 21:14 2.txt
-rw-------. 1 root root 6716 6月 5 22:49 anaconda-ks.cfg.1
-rw-r--r--. 1 root root 0 6月 5 21:17 ls2
[root@hyc-01-01 ~]# ls -l 2.txt
-rwx------. 1 root root 0 6月 5 21:14 2.txt
當開啟selinux時,創建的每個文件第一組的最後一位會出現.
Selinux
三種狀態:
Enforce:對於不符合策略的訪問行為進行徹底的限制
Permissive:當訪問行為不符合策略時會生成信息,但不會真正限制訪問
Disable:此時selinux處於關閉狀態
[root@hyc-01-01 ~]# getenforce 獲得selinux狀態信息
Enforcing
[root@hyc-01-01 ~]# setenforce 0 不徹底的關閉,仍會出現告警,系統重啟後失效
[root@hyc-01-01 ~]# getenforce
Permissive
徹底關閉selinux:
[root@hyc-01-01 ~]# vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disable 修改為disable會徹底關閉selinux
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
-R 一次性統一修改目錄及目錄下文件及子目錄的權限
[root@hyc-01-01 tmp]# ls -l hyc2
總用量 0
drwxr-xr-x. 3 root root 19 6月 3 17:36 1
drwx------. 4 root root 82 6月 5 08:04 hyc1
[root@hyc-01-01 tmp]# chmod -R 770 hyc2
[root@hyc-01-01 tmp]# ls -l hyc2 目錄及其子目錄擁有相同的權限
總用量 0
drwxrwx---. 3 root root 19 6月 3 17:36 1
drwxrwx---. 4 root root 82 6月 5 08:04 hyc1
[root@hyc-01-01 tmp]# ls -ld hyc2
drwxrwx---. 4 root root 27 6月 5 21:26 hyc2
用字母表示修改的權限:
[root@hyc-01-01 tmp]# ls -ld hyc1 修改前的權限
drwxr-xr-x. 2 root root 6 6月 5 21:31 hyc1
[root@hyc-01-01 tmp]# chmod u=rwx,g=,o= hyc1 修改權限,等號後面不能加-號
[root@hyc-01-01 tmp]# ls -ld hyc1
drwx------. 2 root root 6 6月 5 21:31 hyc1 修改後
[root@hyc-01-01 tmp]#
u表示所有者,g表示所有組,o表示其他用戶,a表示所有用戶;
僅針對部分權限進行增刪:
[root@hyc-01-01 tmp]# chmod a-x hyc1
[root@hyc-01-01 tmp]# ls -ld hyc1
drw-------. 2 root root 6 6月 5 21:31 hyc1
2.15 更改所有者和所屬組chown
修改文件的所有者
[root@hyc-01-01 tmp]# chown hyc /tmp/1.txt
[root@hyc-01-01 tmp]# ls -l 1.txt
-rw-r--r--. 1 hyc root 883 6月 5 07:44 1.txt
修改文件的所屬組
[root@hyc-01-01 tmp]# ls -l 1.txt
-rw-r--r--. 1 hyc root 883 6月 5 07:44 1.txt
[root@hyc-01-01 tmp]# chgrp hyc 1.txt
[root@hyc-01-01 tmp]# ls -l 1.txt
-rw-r--r--. 1 hyc hyc 883 6月 5 07:44 1.txt
修改所有者及所屬組
[root@hyc-01-01 tmp]# chown root:root 1.txt
[root@hyc-01-01 tmp]# ls -l 1.txt
-rw-r--r--. 1 root root 883 6月 5 07:44 1.txt
chown僅修改屬組
[root@hyc-01-01 tmp]# chown :hyc 1.txt
[root@hyc-01-01 tmp]# ls -l 1.txt
-rw-r--r--. 1 root hyc 883 6月 5 07:44 1.txt
更改當前目錄及其子目錄和文件的所有者和所屬組
[root@hyc-01-01 tmp]# chown -R hyc:hyc hyc2
[root@hyc-01-01 tmp]# ls -l hyc2
總用量 0
drwxrwx---. 3 hyc hyc 19 6月 3 17:36 1
drwxrwx---. 4 hyc hyc 82 6月 5 08:04 hyc1
[root@hyc-01-01 tmp]# ls -ld hyc2
drwxrwx---. 4 hyc hyc 27 6月 5 21:26 hyc2
2.16 umask
所有文件或目錄產生的初始權限均與umask有關
[root@hyc-01-01 tmp]# touch 1.txt
[root@hyc-01-01 tmp]# ls -l 1.txt
-rw-r--r--. 1 root hyc 883 6月 6 23:24 1.txt 文件默認權限為644
[root@hyc-01-01 tmp]# mkdir 1
[root@hyc-01-01 tmp]# ls -ld 1
drwxr-xr-x. 2 root root 6 6月 6 23:24 1 目錄默認權限為755
[root@hyc-01-01 tmp]# umask 查看umask值
0022
[root@hyc-01-01 tmp]# umask 0002 修改umask
[root@hyc-01-01 tmp]# umask
0002
[root@hyc-01-01 tmp]# touch 2.txt
[root@hyc-01-01 tmp]# ls -l 2.txt
-rw-rw-r--. 1 root root 0 6月 6 23:25 2.txt 修改umask值後的默認文件權限664
[root@hyc-01-01 tmp]# mkdir 2
[root@hyc-01-01 tmp]# ls -ld 2
drwxrwxr-x. 2 root root 6 6月 6 23:25 2 變更後的目錄權限775
文件的初始權限為666-umask的後3位;
目錄的初始權限為777-umask後3位;
x權限對於目錄表示是否可以進入目錄,對於文件x權限表示是否可以執行;
基於umask獲得的初始權限計算方法:
當umask=0003時
666-003=(rw-rw-rw-)-(-------wx)=rw-rw-r--=664
777-003=(rwxrwxrwx)-(-------wx)=rwxrwxr--=774
2.17 隱藏權限lsattr_chattr
ls –l無法查看隱藏權限
i權限
[root@hyc-01-01 tmp]# chattr +i 1.txt 為文件1.txt增加隱藏權限i
增加該權限後文件無法被執行寫操作、刪除、改名、修改文件時間
[root@hyc-01-01 tmp]# lsattr 1.txt 查看隱藏權限
----i----------- 1.txt
出現2.txt~的原因
[root@hyc-01-01 ~]# ls
2.txt anaconda-ks.cfg.1 ls2
[root@hyc-01-01 ~]# chattr +i 2.txt
[root@hyc-01-01 ~]# lsattr 2.txt
----i----------- 2.txt
[root@hyc-01-01 ~]# vi 2.txt 無法寫入
[root@hyc-01-01 ~]# ls
2.txt 2.txt~ anaconda-ks.cfg.1 ls2
[root@hyc-01-01 ~]# touch 2.txt 已經存在2.txt時再touch會修改文件的創建時間,i權限不允許
touch: 無法創建"2.txt": 權限不夠
[root@hyc-01-01 ~]#
通常用戶寫入數據到文件時會創建一個與該文件一樣的緩存文件,將要修改和新增的內容寫入緩存文件,再在保存退出時用緩存文件將原文件覆蓋以向原文件寫數據,然後會將緩存文件刪除;
當文件有隱藏權限i時,由於緩存文件無法向文件寫數據,導致保存不成功,所以系統也不會刪除緩存文件,ls命令看到的帶~的2.txt文件即2.txt產生的緩存文件;
[root@hyc-01-01 ~]# chattr -i 2.txt
[root@hyc-01-01 ~]# rm -f 2.txt 去掉i權限後,可以正常刪除
a權限 只能追加,不能刪除和更改,類似log日誌
[root@hyc-01-01 ~]# chattr +a 3.txt
[root@hyc-01-01 ~]# lsattr 3.txt
-----a---------- 3.txt
[root@hyc-01-01 ~]# rm -f 3.txt
rm: 無法刪除"3.txt": 不允許的操作
[root@hyc-01-01 ~]# vi 3.txt 無法寫入
[root@hyc-01-01 ~]# mv 3.txt 4.txt 無法重命名
mv: 無法將"3.txt" 移動至"4.txt": 不允許的操作
[root@hyc-01-01 ~]# head -3 /etc/passwd >> 3.txt 可以追加
[root@hyc-01-01 ~]# touch 3.txt 可以更改時間信息
查看目錄的隱藏權限
[root@hyc-01-01 ~]# mkdir 111
[root@hyc-01-01 ~]# mkdir 111/222
[root@hyc-01-01 ~]# lsattr 111 此時查看的是111目錄下的子目錄的隱藏權限
---------------- 111/222
[root@hyc-01-01 ~]# lsattr -d 111 查看111本身的權限
---------------- 111
給目錄添加i權限
[root@hyc-01-01 ~]# chattr +i 111
[root@hyc-01-01 ~]# rm -rf 111 無法刪除目錄本身及其中的子目錄和文件
rm: 無法刪除"111/222": 權限不夠
[root@hyc-01-01 ~]# mv 111 1222 無法改名
mv: 無法將"111" 移動至"1222": 不允許的操作
[root@hyc-01-01 ~]# touch 111/222.txt 無法在目錄中添加新文件和目錄
touch: 無法創建"111/222.txt": 權限不夠
給目錄添加a權限
[root@hyc-01-01 ~]# lsattr -d 111
-----a---------- 111
[root@hyc-01-01 ~]# vi 111/12.txt
[root@hyc-01-01 ~]# cat 111/12.txt
Dddddddddddddddddddddd 給目錄加a權限,目錄下的文件依然可以寫入
[root@hyc-01-01 ~]# cd 111
[root@hyc-01-01 111]# lsattr -d .
-----a---------- .
[root@hyc-01-01 111]# mkdir 2
[root@hyc-01-01 111]# ls
12.txt 12_txt.swp 2 22 222
[root@hyc-01-01 111]# rm -rf 2
rm: 無法刪除"2": 不允許的操作
[root@hyc-01-01 111]# mv 2 2a
mv: 無法將"2" 移動至"2a": 不允許的操作
[root@hyc-01-01 111]# touch 12.txt 可以修改目錄下子文件的時間
[root@hyc-01-01 ~]# chattr +i 111
[root@hyc-01-01 ~]# lsattr -d 111
----i----------- 111
[root@hyc-01-01 ~]# ls
111 222 3.txt anaconda-ks.cfg.1 ls2
[root@hyc-01-01 ~]# vi 111/12.txt
[root@hyc-01-01 ~]# cat !$
cat 111/12.txt
dddddddddddddddddddddd 給目錄加i或a權限不會影響目錄下文件內容的改寫
dsfafdg
lsattr –R
[root@hyc-01-01 ~]# lsattr 111 默認只會查看第一層目錄的子目錄和文件的隱藏權限
---------------- 111/222
---------------- 111/22
---------------- 111/12_txt.swp
---------------- 111/12.txt
[root@hyc-01-01 ~]# lsattr -R 111 使用-R參數後會查看該目錄下所有目錄及文件
---------------- 111/222
111/222:
---------------- 111/222/aaa
---------------- 111/22
---------------- 111/12_txt.swp
---------------- 111/12.txt
-a
[root@hyc-01-01 ~]# lsattr -a 111 查看包括隱藏文件在內的文件的隱藏權限
----i----------- 111/.
---------------- 111/..
---------------- 111/222
---------------- 111/22
---------------- 111/.12.txt.swp
---------------- 111/.12.txt.swx
---------------- 111/12_txt.swp
---------------- 111/12.txt
i權限:
文件:無法被執行寫操作、刪除、改名、修改時間信息
目錄:無法增刪目錄中的文件和子目錄,無法改名,可以修改子文件的時間信息
a權限:
文件:無法寫入、刪除、重命名,可以追加內容及更改時間信息
目錄:可以創建新的子目錄或文件,不能修改原文件或子目錄的名稱,無法刪除原來的文件或目錄,可以修改子文件時間信息
6.6 2.14-2.17