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 (其他用户)

表示所有

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.   适用  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

 

测试文件的

#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

所以删除一个文件需要对其所在目录有相应权限---删除文件名相当于删除包含它的目录的一些内容 (重点)

           文件或目录权限错误排查过程

12.29-linux r-w-x权限详解_第1张图片

排查报错原因(用户查看文件原理)

12.29-linux r-w-x权限详解_第2张图片

 

总结:

1.你对某个文件拥有什么权限

2.报错:permission denied错误 排查报错原因

3.绘制图片 排错图片

4.对于文件或目录 rwx含义

5.几个命令