我的Linux笔记6--离不开的读权限
2012-11-15 06:19
246 查看
个人愚见,有些观点未经证实,注意!
大家都知道linux中的权限有 读写执行三种,也基本理解他们的意思,由于Window用久了,思维定式啊!
我的理解
读:从磁盘上读取数据(01串,你懂的)并尝试着解析成字符显示出来,即使不是纯字符型的文件。
写:编辑,新增,修改文件的内容,也就说将缓存中的数据从新写入到磁盘上去。
执行:从CPU 内存行为的角度讲,我真心不知道读和执行的区别在哪里,大概只能从系统的角度来区分了,读是尝试把数据解释成字符,而执行更近一步,尝试把这些字符当作命令,语句来看待,就像编译原理的编译器一样。
读权限的重要性
当你想查看文件的内容时,当然只需要读权限就可以了,可是当你需要写或者执行这个文件的时候呢?
先来实验下吧:
test.sh中的内容:
知道读权限的重要了吧,没有它w ,x都不能顺利实现。这是为什么呢?
(注意,这里个人想法居多,没有实际依据,因为我还没有找到相关资料)读是从磁盘加载数据到缓存中,并尽可能显示出来,所以,如果没有读权限,系统根本就找不到数据在磁盘上的位置(这与文件系统有关,当读取一个文件时,先读取它的dentry块,权限相关的信息就记录在它的里面,他会指向inode块,记录的有文件数据在磁盘上位置的信息,若权限判为无读权限,我想就不会去读inode了吧。相关资料参考毛德操的《Linux内核源代码情景分析》),也就无法显示出来,这也是为什么只有w,x的时候,vi看不到内容的原因。而强制写入的话,相当与让dentry 指向新的inode 和block。也就相当于新建了一个同名文件。
本文出自 “奋斗的菜鸟” 博客,谢绝转载!
大家都知道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。也就相当于新建了一个同名文件。
本文出自 “奋斗的菜鸟” 博客,谢绝转载!
相关文章推荐
- 【Linux】Linux用户、用户组、文件权限学习笔记
- LINUX笔记之二常用命令(权限管理命令)
- Linux笔记(更改权限chmod,更改所有组chown,umask,隐藏权限chattr)
- Linux用户管理及权限笔记(1)
- Linux 学习笔记_3_Linux常用命令_2_权限管理命令
- Linux系统使用笔记(文件权限与目录配置)--鸟哥的私房菜
- Linux默认权限的计算公式(个人理解性的笔记~)
- linux文件权限学习笔记
- linux笔记-特殊权限SUID等详解
- Linux学习笔记10 权限,/etc/passwd,/etc/shadow,useradd,userdel,id,finger
- Linux 第六周学习笔记 (2),特殊权限列表,at延时任务及定时机制,系统临时文件的管理
- Linux学习笔记——权限与指令
- LINUX初学笔记---用户组、权限管理
- Linux学习笔记--linux系统文件的存储及权限
- linux笔记 第七天 文件查找find命令、文件特殊权限、while和until循环
- Linux基础学习笔记(Linux权限管理之基本权限)
- Linux笔记(5)-文件权限
- linux-shell(1)文件安全与权限【自己的笔记】
- Linux命令之SSH客户端和用户权限(笔记)
- Linux笔记(38)——文件的基本权限