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.几个命令