【Linux】目录权限与文件权限
现在我们知道了Linux系统内文件的三种身份(拥有者、群组与其他人),知道每种身份都有三种权限(rwx),已知道能够使用chown, chgrp, chmod去修改这些权限与属性,当然,利用ls -l去查看文件也没问题。那么,这些文件权限对于一般文件与目录文件有何不同呢?
1)权限对文件的重要性
文件是实际含有数据的地方,包括一般文本文件、数据库内容文件、二进制可执行文件(binary program)等等。 因此,权限对于文件来说,他的意义是这样的:
- r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
- w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
- x (execute):该文件具有可以被系统执行的权限。
那个可读(r)代表读取文件内容是还好了解,那么可执行(x)呢?这里你就必须要小心啦!因为在Windows底下一个文件是否具有执行的能力是藉由『 扩展名 』来判断的,例如:.exe, .bat, .com等等,但是在Linux底下,我们的文件是否能被执行,则是藉由是否具有『x』这个权限来决定的,跟档名是没有绝对的关系的!
至于最后一个w这个权限呢?当你对一个文件具有w权限时,你可以具有写入/编辑/新增/修改文件的内容的权限, 但并不具备有删除该文件本身的权限!对于文件的rwx来说,主要都是针对『文件的内容』而言,与文件档名的存在与否没有关系!因为文件记录的是实际的数据嘛!
2)权限对目录的重要性
文件是存放实际数据的地方,那么目录主要是储存什么呢?目录主要的内容在于记录文件名列表,所以文件名与目录有强烈的关连! 那么在针对目录时,r, w, x 对目录是什么意义呢?
- r (read contents in directory):
表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。所以你就可以利用ls这个指令将该目录的内容列表显示出来!
- w (modify contents of directory):
这个可写入的权限对目录来说,是很了不起的! 因为他表示你具有异动该目录结构列表的权限,也就是底下这些权限:
- 建立新的文件与目录;
- 删除已经存在的文件与目录(不论该文件的权限为何!)
- 将已存在的文件或目录进行更名;
- 搬移该目录内的文件、目录位置。
总之,目录的w权限就与该目录底下的文件名异动有关就对了!
- x (access directory):
目录只是记录文件名而已,总不能拿来执行吧?没错!目录不可以被执行,目录的x代表的是用户能否进入该目录成为工作目录!所谓的工作目录(work directory)就是你目前所在的目录!举例来说,当你登入Linux时,你所在的家目录就是你当下的工作目录。而变换目录的指令是『cd』(change directory)!
假设某个用户对某一目录具有r的权限,乍看之下好像就具有可以进入此目录的权限,其实那是错的。能不能进入某一个目录,只与该目录的x权限有关!此外, 工作目录对于指令的执行是非常重要的,如果你在某目录下不具有x的权限, 那么你就无法切换到该目录下,也就无法执行该目录下的任何指令,即使你具有该目录的r的权限。
要注意:要开放目录给任何人浏览时,应该至少也要给予r及x的权限,但w权限不可随便给! 为什么w不能随便给,我们来看下一个例子:
|
例题: 假设有个账号名称为knife,他的家目录在/home/knife/,knife对此目录具有[rwx]的权限。 若在此目录下有个名为the_root.data的文件,该文件的权限如下: -rwx------ 1 root root 4365 Sep 19 23:20 the_root.data 请问knife对此文件的权限为何?可否删除此文件? 答: 如上所示,由于knife对此文件来说是『others』的身份,因此这个文件他无法读、无法编辑也无法执行, 也就是说,他无法变动这个文件的内容就是了。 但是由于这个文件在他的家目录下,他在此目录下具有rwx的完整权限,因此对于the_root.data这个『档名』来说,他是能够『删除』的! 结论就是,knife这个用户能够删除the_root.data这个文件! |
还是看不太懂?我们再来一个例子吧:
- 先用root的身份建立所需要的文件与目录环境
用root的身份在所有人都可以工作的/tmp目录中建立一个名为testing的目录, 该目录的权限为744且目录拥有者为root。另外,在testing目录下在建立一个空的文件, 档名亦为testing。建立目录可用mkdir(make directory),建立空文件可用touch来处理。所以过程如下所示:
[root@www ~]# cd /tmp <==切换工作目录到/tmp [root@www tmp]# mkdir testing <==建立新目录 [root@www tmp]# chmod 744 testing <==变更权限 [root@www tmp]# touch testing/testing <==建立空的文件 [root@www tmp]# chmod 600 testing/testing <==变更权限 [root@www tmp]# ls -ald testing testing/testing drwxr--r-- 2 root root 4096 Sep 19 16:01 testing -rw------- 1 root root 0 Sep 19 16:01 testing/testing # 仔细看一下,目录的权限是744,且所属群组与使用者均是root! # 那么在这样的情况底下,一般身份用户对这个目录/文件的权限为何?
- 一般用户的读写权限为何?
在上面的例子中,虽然目录是744的权限设定,一般用户应该能有r的权限,但这样的权限使用者能做啥事呢?假设系统中含有一个账号名为knife,我们可以透过『 su - knife 』这个指令来变换身份。
[root@www tmp]# su - knife <==切换身份! [knife@www ~]$ cd /tmp <==看一下,身份变了喔!提示字符也变成 $ 了! [knife @www tmp]$ ls -l testing/ ?--------- ? ? ? ? ? testing # 因为具有 r 的权限可以查询档名。不过权限不足(没有x),所以会有一堆问号。 [knife @www tmp]$ cd testing/ -bash: cd: testing/: Permission denied # 因为不具有 x ,所以当然没有进入的权限啦!有没有呼应前面的权限说明啊!
- 如果该目录属于用户本身,会有什么状况?
上面的练习我们知道了只有r确实可以让用户读取目录的文件名列表,不过详细的信息却还是读不到的,同时也不能将该目录变成工作目录。那如果我们让该目录变成knife用户的,那么用户在这个目录底下是否能够删除文件呢?底下的练习做看看:
[knife@www tmp]$ exit <==变回原本的 root 身份喔! [root@www tmp]# chown knife testing <==修改权限,让knife拥有此目录 [root@www tmp]# su - knife <==再次变成knife来操作 [knife @www ~]$ cd /tmp/testing <==可以进入目录了呢! [knife @www testing]$ ls -l -rw------- 1 root root 0 Sep 19 16:01 testing <==文件不是knife的! [knife @www testing]$ rm testing <==尝试刪除这个文件看看! rm: remove write-protected regular empty file `testing'? y # 竟然可以删除!这样理解了吗?!
透过上面这个简单的步骤,你就可以清楚的知道,x在目录当中是与『能否进入该目录』有关,至于那个w则具有相当重要的权限,因为他可以让使用者删除、更新、新建文件或目录,是个很重要的参数!
参考资料:http://vbird.dic.ksu.edu.tw/linux_basic/0210filepermission.php
【Linux】目录权限与文件权限的更多相关文章
- Linux目录结构与文件权限——(五)
1.目录结构
- linux目录结构及文件权限
安装banner用到的指令: 第一步: sudo apt-get update 第二步: sudo apt-get install sysvbanner 成功了 创建新用户指令: sudo addus ...
- linux学习之(四)-用户、组的操作,给文件文件夹设置组,更改目录权限、文件权限
命令帮助查看: man 命令(查看一个命令的详细帮助信息) 例:man useradd 或者用 -h 格式 命令 -h(查看一个命令的简要帮助) 例:useradd -h 用户: 在user ...
- 【Linux学习】Linux下用户组、文件权限详解
原文地址:http://www.cnblogs.com/123-/p/4189072.html Linux下用户组.文件权限详解 用户组 在linux中的每个用户必须属于一个组,不能独立于组外.在li ...
- linux用户管理和文件权限
linux用户管理和文件权限 新建用户:useradd ftpuser useradd -g gxx userxx修改密码:passwd ftpuser新增用户组:# groupadd gr ...
- (转)Mysql数据库之Binlog日志使用总结Linux下用户组、文件权限详解
Linux下用户组.文件权限详解 原文:http://blog.csdn.net/sdulibh/article/details/51566772 用户组 在linux中的每个用户必须属于一个组,不能 ...
- Linux - 用户管理与文件权限
目录 Linux - 用户管理与文件权限 创建普通用户 切换用户 userdel删除用户 sudo 命令 文件与目录权限 Linux权限的解读 目录权限 查看用户权限的命令 文件权限 修改权限的命令 ...
- Linux用户和权限——管理文件权限的命令
Linux用户和权限——管理文件权限的命令 摘要:本文主要学习了Linux中修改文件权限的命令. chown命令 chown命令,主要用于修改文件(或目录)的所有者,除此之外,这个命令也可以修改文件( ...
- Linux 用户管理 与 文件权限
Linux 用户管理 与 文件权限 用户组操作 1.groupadd命令 groupadd [-g -o] gid group 各个选项具体含义如下: -g:指定新建用户组的GID号,该GID号必须唯 ...
- 【转】linux查看及修改文件权限以及相关
linux查看及修改文件权限以及相关 查看文件权限的语句: 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些: -rw-rw-r-- 一共有 ...
随机推荐
- Informatica 常用组件Lookup之五 转换属性
查找转换的属性标识数据库源.PowerCenter 如何处理转换,以及它如何处理高速缓存和多项匹配. 创建映射时,为每个查找转换指定属性.创建会话时,您可在会话属性中覆盖某些属性,如每个转换的索引和数 ...
- SQL查询今天、昨天、7天内、30天【转】
SQL查询今天.昨天.7天内.30天 今天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=0 昨天的所有数据:sele ...
- VMware vCenter中, 如何辩认虚机上Raw Device Mapping过了的一块物理磁盘?
比如说, 我们有一套VMware的环境, 其中有一台运行者ESXi的主机, 其上有十块SAS盘. 这十块盘中的五块盘被RDM到一台虚机上了. 假设你发现有添加多了一块盘, 你想移除掉, 但是5块盘其中 ...
- Android完全退出程序、线程
1.先添加权限 <uses-permission android:name="android.permission.RESTART_PACKAGES" /> 2.添加A ...
- CSS结构和层叠
每个合法的文档都会生成一个文档树,从而能根据元素的祖先,属性,兄弟元素等创建选择器来选择元素.有了这个结构树,选择器才能起作用,这也是CSS继承的核心.继承是从一个元素向其后代元素传递属性值所采用的机 ...
- EasyUI-Tooltip(提示框)学习
引子: if($("#BLUETOOTH_a")){ $("#BLUETOOTH_a").tooltip({ position: 'right', conten ...
- python 抓取alexa数据
要抓取http://www.alexa.cn/rank/baidu.com网站的排名信息:例如抓取以下信息: 需要微信扫描登录 因为这个网站抓取数据是收费,所以就利用网站提供API服务获取json信息 ...
- Linux经常使用命令(三) - pwd
Linux中用 pwd 命令来查看"当前工作文件夹"的完整路径. 简单得说,每当你在终端进行操作时.你都会有一个当前工作文件夹. 在不太确定当前位置时.就会使用pwd来判定当前文件 ...
- IIS-网站发布之后访问HTTP 错误 403.14 - Forbidden
这种问题一般是因为页面本身发生了错误的原因导致的,这个时候先开启[目录浏览]功能 开通目录浏览之后再重新访问,就能看到相应的错误了,再去进行相应的解决就可以了.
- CommonCode升级:把不常用的Sqlite独立出去
CommonCode大概一年多没有更新了,今天碰到一件闹心的事情,结果用一行代码解决了京东购物车信息提取工具.一不小心,把一贯以来的一个念头又给惹起来了:就是把程序做成又给独立的exe,不要这么多dl ...