1. 程式人生 > >12.29-linux r-w-x權限詳解

12.29-linux r-w-x權限詳解

添加 數字 family 可執行 執行權限 總結 modify process regular

12.29

linux r-w-x權限詳解

內容:

1. linux目錄權限體系

2. rwx權限的計算

3. rwx針對目錄或文件的具體含義

4. 更改權限---chmod命令

5. 一些關於權限類故障的排查過程與解決方法

第1章 linux權限體系梗概

1.1 基本權限(r w x -)

r 4 w 2 x 1 - 0

1.2 對於一個文件Linux用戶分類

[root@oldboy /]# ls -l /etc/hosts

-rw-r--r--. 2 root root 177 May 20 2017 /etc/hosts

所有者

屬於的家庭(用戶組) 其他人(陌生人)

主人 家人 陌生人

rw- r-- r--

1.3 如何知道oldboy用戶對/etc/hosts文件有什麽權限

1. 你誰 whoami

2. 你和他什麽關系

id oldboy 查看所屬用戶組

幾乎沒有和root同屬一個組

文件默認權限為644 目錄默認權限755

第2章 修改文件權限 chmod命令

2.1.1 三種用戶

u -userown

文件所有者--(主人)

g -group (用戶組)

o -other (其他用戶)

a 表示所有

2.1.2 字母形式表示

u+x 為所有者添加x權限

[root@oldboy oldboy]# ls -l test.sh

--w-r-xr-x. 1 oldboy oldboy 19 Dec 29 02:52 test.sh

[root@oldboy oldboy]# chmod u+x test.sh

[root@oldboy oldboy]# ls -l test.sh

--wxr-xr-x. 1 oldboy oldboy 19 Dec 29 02:52 test.sh

= 先去掉原來的權限

再增加相應權限

[root@oldboy oldboy]# chmod u=w test.sh

[root@oldboy oldboy]# ls -l test.sh

--w-r-xr-x. 1 oldboy oldboy 19 Dec 29 02:52 test.sh

給三種用戶都加上x權限1.

chmod ugo+x odlboy.sh

2.

chmod a+x test.sh

3. 適用 x r 權限

chmod +x test.sh

2.1.3 用數字表示

chmod 644 oldboy.txt

2.2 更改文件所有者 chown

: oldboy.sh文件的屬主變為oldboy用戶,屬組變為oldboy

chown oldboy.oldboy oldboy.sh

可以單獨修改文件的搜有這或屬組

權限用來限制普通用戶,root用戶會有特權

2.3 測試rwx具體權限

2.3.1 測試環境

mv /oldboy /tmp/oldboy_bak$(date +%F)
mkdir /oldboy -p
echo "echo oldboylinux" >/oldboy/test.sh 制作腳本文件,裏面存放命令
chmod +x /oldboy/test.sh
cat /oldboy/test.sh
ls -l /oldboy/test.sh

2.3.2 對於文件來說:x執行權限一般用於腳本文件等可執行文件

測試文件的r

#root修改權限
chmod u=r test.sh 只給oldboy用戶讀取權限
#oldboy用戶進行檢查
[oldboy@oldboyedu43-lnb ~]$ cd /oldboy/
[oldboy@oldboyedu43-lnb oldboy]$ ls -l test.sh
-r--r-xr-x 1 oldboy oldboy 17 Dec 28 14:39 test.sh
[oldboy@oldboyedu43-lnb oldboy]$ cat test.sh 可以查看
echo oldboylinux
[oldboy@oldboyedu43-lnb oldboy]$ echo 'hostname' >>test.sh
-bash: test.sh: Permission denied 沒有寫入權限
[oldboy@oldboyedu43-lnb oldboy]$ ls
test.sh
[oldboy@oldboyedu43-lnb oldboy]$ /oldboy/test.sh 沒有寫入權限
-bash: /oldboy/test.sh: Permission denied

測試文件的w

#root修改權限
chmod u=w test.sh 只給oldboy用戶寫入權限
#oldboy用戶進行檢查

[oldboy@oldboyedu43-lnb oldboy]$ ls -l test.sh
w-r-xr-x 1 oldboy oldboy 17 Dec 28 14:39 test.sh
[oldboy@oldboyedu43-lnb oldboy]$ cat test.sh 不能查看內容
cat: test.sh: Permission denied
[oldboy@oldboyedu43-lnb oldboy]$ echo 'hostname' >>test.sh 可以寫入

[oldboy@oldboyedu43-lnb oldboy]$ echo 'hostname' >>test.sh
[oldboy@oldboyedu43-lnb oldboy]$ /oldboy/test.sh 不能執行
-bash: /oldboy/test.sh: Permission denied
[oldboy@oldboyedu43-lnb oldboy]$ vim test.sh
echo www.oldboyedu.com
echo www.oldboyedu.com
[oldboy@oldboyedu43-lnb oldboy]$ cat test.sh
cat: test.sh: Permission denied

測試文件的x

#root修改權限
chmod u=x test.sh 只給oldboy用戶執行權限
#oldboy用戶進行檢查
[oldboy@oldboyedu43-lnb oldboy]$ cat test.sh 不可查看
cat: test.sh: Permission denied
[oldboy@oldboyedu43-lnb oldboy]$ echo 'pwd'>>test.sh 不可寫入
-bash: test.sh: Permission denied
[oldboy@oldboyedu43-lnb oldboy]$ /oldboy/test.sh 不可執行
bash: /oldboy/test.sh: Permission denied
增加了 r權限之後
[oldboy@oldboyedu43-lnb oldboy]$ cat /oldboy/test.sh
hostname
[oldboy@oldboyedu43-lnb oldboy]$ /oldboy/test.sh 可執行
oldboyedu43-lnb
[oldboy@oldboyedu43-lnb oldboy]$ ./test.sh
oldboyedu43-lnb

2.3.3 總結:(根據實驗環境測試)

用r權限 用vim添加強制退出 覆蓋 echo不可用

用w權限 用vim添加強制退出 覆蓋 echo可用

2.3.4 錯誤:

1.這種情況為什麽被拒絕 屬主沒有權限 屬組不還是有麽

[root@oldboy oldboy]# ll test.sh

---xrw-r--. 1 oldboy oldboy 19 Dec 29 02:52 test.sh

[oldboy@oldboy oldboy]$ echo 123 >>test.sh

-bash: test.sh: Permission denied

所有者沒有權限,不會找屬組的權限

2.超級大坑:即使文件沒有任何權限也可以用vim來強制寫入內容。但是原內容會被清除,只會顯示用vim寫入的內容。這樣的話,豈不是文件的權限對vim來說就是個擺設了,可以隨意清除原內容、。

文件的所有者默認可以強制修改該文件,對這個文件沒有任何權限的時候,原內容清空

root默認對所有文件具有讀寫權限,但默認沒有執行權限

2.3.5 對於目錄來說:(重點)

r 查看目錄中內容 ls oldboyedu

w 可以在目錄中 創建文件 刪除文件 重命名文件

x 表示是否可以進入到目錄中 是否能查看/修改目錄文件的屬性信息

環境

mkdir /oldboy/oldboyedu

touch /oldboy/oldboyedu/{1..10}.txt

chown oldboy.oldboy /oldboy/oldboyedu

測試目錄的r

#root修改權限

chmod u=r oldboydir/ 給oldboy用戶查看內容權限

#oldboy用戶進行檢查

[oldboy@oldboyedu43-lnb oldboy]$ ls -ld oldboydir/

dr--r-xr-x 2 oldboy oldboy 4096 Dec 28 15:42 oldboydir/

[oldboy@oldboyedu43-lnb oldboy]$ ls oldboydir/

ls: cannot access oldboydir/04.txt: Permission denied 只能看到文件名,無法看到詳細信息

ls: cannot access oldboydir/01.txt: Permission denied

01.txt 02.txt 03.txt 04.txt 05.txt 06.txt 07.txt 08.txt 09.txt 10.txt

[oldboy@oldboyedu43-lnb oldboy]$ ls -l oldboydir/

ls: cannot access oldboydir/10.txt: Permission denied

total 0

-????????? ? ? ? ? ? 09.txt

-????????? ? ? ? ? ? 10.txt

[oldboy@oldboyedu43-lnb oldboy]$ stat oldboydir/01.txt stat也不能用

stat: cannot stat `oldboydir/01.txt': Permission denied

目錄的r權限 需要有其他權限的配合
#
修改目錄的權限為rx之後 問題解決
[oldboy@oldboyedu43-lnb oldboy]$ ls -ld oldboydir/
dr-xr-xr-x 2 oldboy oldboy 4096 Dec 28 15:42 oldboydir/
[oldboy@oldboyedu43-lnb oldboy]$ ls oldboydir/
01.txt 02.txt 03.txt 04.txt 05.txt 06.txt 07.txt

[oldboy@oldboyedu43-lnb oldboy]$ ls -l oldboydir/
total 0
-rw-r--r-- 1 root root 0 Dec 28 15:42 01.txt
-rw-r--r-- 1 root root 0 Dec 28 15:42 02.txt
[oldboy@oldboyedu43-lnb oldboy]$
stat oldboydir/01.txt
File: `oldboydir/01.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 151129 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-12-28 15:42:11.901743051 +0800
Modify: 2017-12-28 15:42:11.901743051 +0800
Change: 2017-12-28 15:42:11.901743051 +0800

小結
目錄的r權限 可以查看目錄裏面的內容
目錄的r權限 需要x權限的配合

測試目錄的w

root修改權限
chmod u=w oldboydir/ 給用戶w權限
oldboy用戶進行檢查
[oldboy@oldboyedu43-lnb oldboy]$ ls -ld oldboydir/
d-w-r-xr-x 2 oldboy oldboy 4096 Dec 28 15:42 oldboydir/
[oldboy@oldboyedu43-lnb oldboy]$ ls oldboydir/ 不可以查看
ls: cannot open directory oldboydir/: Permission denied
[oldboy@oldboyedu43-lnb oldboy]$ touch oldboydir/oldboy.txt 不可創建文件
touch: cannot touch `oldboydir/oldboy.txt': Permission denied
[oldboy@oldboyedu43-lnb oldboy]$ \rm oldboydir/01.txt -f 不可刪除文件
rm: cannot remove `oldboydir/01.txt': Permission denied
目錄的w權限 需要有其他權限的配合
修改目錄的權限為wx之後 問題解決

[oldboy@oldboyedu43-lnb oldboy]$ ls -ld oldboydir/
d-wxr-xr-x 2 oldboy oldboy 4096 Dec 28 15:42 oldboydir/
[oldboy@oldboyedu43-lnb oldboy]$ touch oldboydir/oldboy.txt
[oldboy@oldboyedu43-lnb oldboy]$ \rm oldboydir/01.txt -f

小結:

w 在目錄中 創建 刪除 文件

w權限需要x權限配合

測試x

單獨的x權限沒有用

第3章 故障(重點)

[oldboy@oldboyedu43-lnb oldboydir]$ ls -l oldboy.txt

-rwxrwxrwx 1 oldboy oldboy 0 Dec 28 16:01 oldboy.txt 文件權限777

[oldboy@oldboyedu43-lnb oldboydir]$ \rm -f oldboy.txt 屬主沒有刪除文件的權限

rm: cannot remove `oldboy.txt': Permission denied

!!!!刪除一個文件,你需要對文件所在目錄擁有wx權限。

inode 文件屬性 block存放的是數據

文件名 存放在文件所在目錄的block裏面

inode 文件屬性 block存放的是數據

文件名 存放在文件所在目錄的block

所以刪除一個文件需要對其所在目錄有相應權限---刪除文件名相當於刪除包含它的目錄的一些內容 (重點)

文件或目錄權限錯誤排查過程

技術分享圖片

排查報錯原因(用戶查看文件原理)

技術分享圖片

總結:

1.你對某個文件擁有什麽權限

2.報錯:permission denied錯誤 排查報錯原因

3.繪制圖片 排錯圖片

4.對於文件或目錄 rwx含義

5.幾個命令


12.29-linux r-w-x權限詳解