您的位置:首页 > 运维架构 > Linux

我的Linux笔记6--离不开的读权限

2012-11-15 06:19 246 查看
个人愚见,有些观点未经证实,注意!

大家都知道linux中的权限有 读写执行三种,也基本理解他们的意思,由于Window用久了,思维定式啊!

我的理解

读:从磁盘上读取数据(01串,你懂的)并尝试着解析成字符显示出来,即使不是纯字符型的文件。

写:编辑,新增,修改文件的内容,也就说将缓存中的数据从新写入到磁盘上去。

执行:从CPU 内存行为的角度讲,我真心不知道读和执行的区别在哪里,大概只能从系统的角度来区分了,读是尝试把数据解释成字符,而执行更近一步,尝试把这些字符当作命令,语句来看待,就像编译原理的编译器一样。

读权限的重要性

当你想查看文件的内容时,当然只需要读权限就可以了,可是当你需要写或者执行这个文件的时候呢?

先来实验下吧:

[root@localhost ~]# su testuser//先切换到普通用户
[testuser@localhost root]$ cd
[testuser@localhost ~]$ ls
[testuser@localhost ~]$ touch test.sh//新建一个可执行的脚本文件
[testuser@localhost ~]$ ll        //查看权限
total 0
-rw-rw-r--. 1 testuser testuser 0 Nov 16 05:14 test.sh
[testuser@localhost ~]$ vi test.sh //先编辑下见内容1
[testuser@localhost ~]$ chmod 400 test.sh//修改权限为只有读权限
[testuser@localhost ~]$ ll
total 4
-r--------. 1 testuser testuser 33 Nov 16 05:15 test.sh
[testuser@localhost ~]$ vi test.sh //可以成功打开看到之前的内容,但是会提示是只读文件
当然,也可以编辑,退出时用wq!可以实现强行修改,这个原理现在还不清楚。
[testuser@localhost ~]$ chmod 200 test.sh//权限改为只有写的权限,看看有什么效果
[testuser@localhost ~]$ ll
total 4
--w-------. 1 testuser testuser 45 Nov 16 05:16 test.sh
[testuser@localhost ~]$ vi test.sh //也会提示是只读文件,并且看不打之前写入的内容,
若编辑会强行保存,效果相当于新建一个同名文件。
[testuser@localhost ~]$ chmod 100 test.sh //改为只有执行权限
[testuser@localhost ~]$ ll
total 4
---x------. 1 testuser testuser 19 Nov 16 05:24 test.sh
[testuser@localhost ~]$ vi test.sh //这里的效果与只有w权限时一样。
[testuser@localhost ~]$ /home/testuser/test.sh //执行这个脚本
bash: /home/testuser/test.sh: Permission denied //显示权限不够!!!重点
[testuser@localhost ~]$ chmod 600 test.sh
[testuser@localhost ~]$ ll
total 4
-rw-------. 1 testuser testuser 19 Nov 16 05:24 test.sh
[testuser@localhost ~]$ vi test.sh
[testuser@localhost ~]$ vi test.sh
[testuser@localhost ~]$ chmod 500 test.sh
[testuser@localhost ~]$ ll
total 4
-r-x------. 1 testuser testuser 43 Nov 16 05:29 test.sh
[testuser@localhost ~]$ /home/testuser/test.sh //这下就顺利执行了。
hello Linux

test.sh中的内容:

#test.sh

echo "hello linux"
~
~
~

知道读权限的重要了吧,没有它w ,x都不能顺利实现。这是为什么呢?

(注意,这里个人想法居多,没有实际依据,因为我还没有找到相关资料)读是从磁盘加载数据到缓存中,并尽可能显示出来,所以,如果没有读权限,系统根本就找不到数据在磁盘上的位置(这与文件系统有关,当读取一个文件时,先读取它的dentry块,权限相关的信息就记录在它的里面,他会指向inode块,记录的有文件数据在磁盘上位置的信息,若权限判为无读权限,我想就不会去读inode了吧。相关资料参考毛德操的《Linux内核源代码情景分析》),也就无法显示出来,这也是为什么只有w,x的时候,vi看不到内容的原因。而强制写入的话,相当与让dentry 指向新的inode 和block。也就相当于新建了一个同名文件。
本文出自 “奋斗的菜鸟” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: