12.29-linux r-w-x權限詳解
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權限詳解