1. 程式人生 > >6.6 2.14-2.17

6.6 2.14-2.17

chmod chown 隱藏權限 umask

2.14 文件或目錄權限chmod

[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-umask3位;

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 給目錄加ia權限不會影響目錄下文件內容的改寫

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