在本章前部,当你试图转换到根用户的登录目录时,你收到了以下消息:
cd /root
bash: /root: Permission denied
这是 Linux 安全功能的一个演示。Linux 和 UNIX 一样,是一个多用户系统。文件权限是系统防止故意篡改的一种方法。
当你被拒绝权限后要重获访问权的方法之一是使用你在前面学到的 su 命令登录为根用户。这是因为知道根口令的人有完全的访问权。
但是切换成超级用户并不总是很方便,我们也不建议你如此,因为使用超级用户身份太容易导致错误或改变重要的配置文件。
所有的文件和目录都被创建它们的人所“拥有”。你在你的登录目录中创建了文件 sneakers.txt (请参见第 13.9.1 节),因此 sneakers.txt 属于你。
这意味着你可以指定谁可以读取这个文件,谁可以写入这个文件,或者(如果它是程序而不是文本文件的话)谁可以执行这个文件。
读取、写入、和执行是许可权限中的三个主要设置。既然用户在他们的帐号创建之时就被编入一个组群,你还可以指定哪些组群可以读取、写入、或执行某一文件。
让我们用带有 -l(长)选项(请参阅图 13-11)的 ls 命令来仔细查看一下文件 sneakers.txt。
这里提供了许多细节。你可以看到谁能读取(r)和写入(w)文件,以及谁创建了这个文件(test),所有者所在的组群(test)。请记住,按照默认设置,你的组群名和你的登录名相同。
Permission denied - wangpuguo@126 - 我的博客
图 13-11. sneakers.txt 的许可权限
在组群右侧的信息包括文件大小、创建的日期和时间,以及文件名。
第一列显示了当前的权限;它有十位。第一位代表文件类型。其余九位实际上是用于三组不同用户的三组权限。
例如:
-rw-rw-r--
那三组是:文件的所有者,文件所属的组群,和“其他人”,这是前面没有包括的用户和组群。
-    (rw-)   (rw-)   (r--) 1 test test
|      |       |       | 
类型  所有者  组群   其他人
      
第一个项目指定文件类型,它可以显示以下几种:
d — 目录
-(短线)— 常规文件(而不是目录或链接)
l — 到系统上其它位置的另一个程序或文件的符号链接
在第一个项目之后的三组中,你可以看到下面几种类型:
r — 文件可以被读取
w — 文件可以被写入
x — 文件可以被执行(如果它是程序的话)
当你在所有者、组群、或其他人中看到一个短线(“-”),这意味着相应的权限还没有被授予。再看一看文件 sneakers.txt 的第一列,然后辩别它的许可权限。
ls -l sneakers.txt
-rw-rw-r--    1 test test     39 3月 11 12:04 sneakers.txt
文件的所有者(这个情况下是 test)有读取和写入该文件的权限。组群 test 也有读取和写入 sneakers.txt 的权限。它不是一个程序,因此所有者和组群都没有执行它的权限。
13.14.1. chmod 命令
使用 chmod 命令来改变权限。这个例子显示了如何使用 chmod 命令来改变 sneakers.txt 文件的权限。
带有初始权限设置的最初文件与下面相仿:
-rw-rw-r--    1 test test     39 3月 11 12:04 sneakers.txt
如果你是这个文件的所有者或者你登录为根用户身份,你可以改变所有者、组群、和其他人的权限。
此刻,所有者和组群可以读取和写入文件,组群之外的任何人只能读取文件(r--)。
小心 小心
 
请记住,文件权限是一种安全措施。无论何时你允许其他人读取、写入或执行文件,你都在增加文件被篡改或删除的危险。作为一种基本原则,你应该只给那些真正需要这些文件的人以读写权限。
在下面的例子中,你想给每个人以写入文件的权限,因此他们可以读取文件,在其中加注,并保存文件。这意味着你非得改变文件权限中的“其他人”部分不可了。
让我们先来看一看这个文件。在 shell 提示下,键入:
ls -l sneakers.txt
前面的命令显示了这个文件信息:
-rw-rw-r--    1 test test     39 3月 11 12:04 sneakers.txt
现在,键入下面的命令:
chmod o+w sneakers.txt
o+w 命令告诉系统你想给其它人写入文件 sneakers.txt 的权限。要查看结果,再次列出文件的细节。现在,这个文件看起来与下面的输出相仿:
-rw-rw-rw-    1 test test     39 3月 11 12:04 sneakers.txt
现在,每个人都可以读取和写入这个文件。
要从 sneakers.txt 中删除读写权限,使用 chmod 命令来取消读取和写入这两个的权限。
chmod go-rw sneakers.txt
通过键入 go-rw,你在告诉系统删除文件 sneakers.txt 中组群和其它人的读取和写入权限。
结果与下面的输出相似:
-rw-------    1 test test    39 3月 11 12:04 sneakers.txt
当你想用 chmod 命令来改变权限时,把它们当做速记符号来记忆,因为你实际要做的只是记住几个符号而已。
下面是一个速记符号含义的列表:
身份
u — 拥有文件的用户(所有者)
g — 所有者所在的组群
o — 其他人(不是所有者或所有者的组群)
a — 每个人或全部(u、g、和 o)
权限
r — 读取权
w — 写入权
x — 执行权
行动
+ — 添加权限
- — 删除权限
= — 使它成为唯一权限
想测试一下你的许可权限技巧么?从文件 sneakers.txt 中删除所有权限 — 包括每个人的权限。
chmod a-rwx sneakers.txt
现在,让我们来看看你是否还能够使用 cat sneakers.txt 来读取这个文件,它所返回的输出应如下所示:
cat: sneakers.txt: Permission denied
删除所有的权限,包括你自己的,会成功地锁住这个文件。但是由于这个文件属于你,你可以随时使用以下命令把它的权限改回来:
chmod u+rw sneakers.txt
使用命令 cat sneakers.txt 来试试看你作为文件所有者是否还能够读取该文件。
这里是几个可以用在 chmod 命令设置上的常用例子:
g+w — 为组群添加写入权
o-rwx — 删除其它人的所有权限
u+x — 允许文件所有者执行这个文件
a+rw — 允许每个人读取并写入文件
ug+r — 允许所有者和组群读取文件
g=rx — 只允许组群读取和执行(不能写入)
通过添加 -R 选项,你可以为整个目录树改变权限。
因为你不能象执行程序一样地“执行”目录,当你为目录添加或删除执行权限时,你实际上是在允许(或拒绝)在目录中搜索的权限。
如果你不想给其它人对目录 tigger 的执行权限,那么谁有读取或写入权限便无关紧要了。除非他们知道他们想要的确切文件名,没人能够进入那个目录。
譬如,键入:
chmod a-x tigger
来删除每个人的执行权限。
下面是当你试图使用 cd 命令来进入 tigger 目录时会发生的情况:
bash: tigger: Permission denied
下一步,恢复你自己和你的组群的权限:
chmod ug+x tigger
现在,如果你用 ls -dl 命令来检查一下,你会发现只有其它人(others)被拒绝了到目录 tigger 的访问权。
13.14.2. 使用数字来改变权限
还记得关于 chmod 的速记符号的方法吗?这里向你介绍另一个改变权限的方法,一开始,它可能会显得有点复杂。
回到 sneakers.txt 文件的原始权限:
-rw-rw-r--    1 test test     39 3月 11 12:04 sneakers.txt
每种权限设置都可以用一个数值来代表:
r = 4
w = 2
x = 1
- = 0
当这些值被加在一起,它的总和便用来设立特定的权限。譬如,如果你想有读取和写入的权限,你会得到一个值为 6 的总和;4(读取)+ 2(写入)= 6。
sneakers.txt 文件的数字权限设置如下:
 -  (rw-)   (rw-)  (r--)
      |       |      |
    4+2+0   4+2+0  4+0+0
所有者的总和为六,组群的总和为六,其他人的总和为四。这个权限设置读作 664。
如果你想改变 sneakers.txt 文件的权限,因此你的组群中的人没有写入权,但是仍旧能够读取文件的话,从这组数字中减掉二(2)就可以删除写入权限了。
然后,这组数值就变成六四四(644)。
要实现这些新设置,键入:
chmod 644 sneakers.txt
现在,列举这个文件来校验改变。键入:
ls -l sneakers.txt
输出应为:
-rw-r--r--    1 test test     39 3月 11 12:04 sneakers.txt
现在,组群和其他人都没有了到文件 sneakers.txt 的写入权。要归还组群到文件的写入权,在第二组权限中加上 w (2) 的值就可以了。
chmod 664 sneakers.txt
警告 警告
 
把权限设为 666 会允许每个人对文件或目录都有读取和写入的权限。把权限设为 777 允许每个人都有读取、写入和执行的权利。这些权限可能会允许对机密文件的篡改,因此,一般来说,使用这类设置是不明智的。
这里是一个某些常用设置、数值、以及它们的含义的列表:
-rw------- (600) — 只有所有者才有读取和写入的权限。
-rw-r--r-- (644) — 只有所有者才有读取和写入的权限;组群和其他人只有读取的权限。
-rwx------ (700) — 只有所有者才有读取、写入、和执行的权限。
-rwxr-xr-x (755) — 所有者有读取、写入、和执行的权限;组群和其他人只有读取和执行的权限。
-rwx--x--x (711) — 所有者有读取、写入、和执行权限;组群和其他人只有执行权限。
-rw-rw-rw- (666) — 每个人都能够读取和写入文件。(请谨慎使用这些权限。)
-rwxrwxrwx (777) — 每个人都能够读取、写入、和执行。(再重申一次,这种权限设置可能会很危险。)
下面列举了一些对目录的常见设置:
drwx------ (700) — 只有所有者能在目录中读取、写入。
drwxr-xr-x (755) — 每个人都能够读取目录,但是其中的内容却只能被所有者改变。

linux 文件权限详细说明的更多相关文章

  1. 修改linux文件权限

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...

  2. Linux 文件权限于目录配置

    用户与用户组 我們以王三毛為例,王三毛這個『檔案』的擁有者為王三毛,他屬於王大毛這個群組, 而張小豬相對於王三毛,則只是一個『其他人(others)』而已. 不過,這裡有個特殊的人物要來介紹的,那就是 ...

  3. Linux文件权限与属性详解 之 SUID、SGID & SBIT

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  4. Linux文件权限与属性详解 之 一般权限

    目录 一般属性 1. iNode: 3152621 2. 文件类型 3.文件访问权限 4. 链接数目: 5. 文件所有者 6. 文件所属组 7. 文件大小 8. 修改时间 9. 文件名称 Linux文 ...

  5. Linux文件权限与属性详解 之 su & sudo

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  6. 修改linux文件权限命令

    修改linux文件权限命令:chmod Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文 ...

  7. 一、Linux文件权限与目录配置

    行文结构如下: 用户和用户组 Linux文件权限概念 Linux目录配置 重点回顾 1.用户与用户组 Linux是个多用户.多任务的系统,可能有多人同时使用这台机器进行工作,为了考虑每个人的隐私和工作 ...

  8. Linux 文件权限、系统优化

    目录 Linux 文件权限.系统优化 1.文件权限的详细操作 1.简介: 2.命令及归属: 3.权限对于用户和目录的意义 权限对于用户的意义: 权限对于目录的意义: 4.创建文件/文件夹的默认权限来源 ...

  9. 【转】Linux文件权限

    转载一篇写得非常详细的linux文件权限,方便自己查阅! 转载来源:https://www.cnblogs.com/keyi/p/8124841.html ---------------------- ...

随机推荐

  1. js的 style.width 取不到元素的宽度值

    以前一直用jquery的.width()方法来获取一个元素的当前的宽度.不管该元素是否设置了宽度,CSS样式是内联.外联or内嵌,都可用此方式获得元素当前的宽度. 今天想用原生JS想获取一个元素宽度时 ...

  2. SCRF的简介及防护手段

    CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造. CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求. 包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购 ...

  3. Xss测试

    <Script>alert(“XSS attack available!”);</Script>

  4. zookeeper数据一致性与paxos算法

    数据一致性与paxos算法 据说Paxos算法的难理解与算法的知名度一样令人敬仰,所以我们先看如何保持数据的一致性,这里有个原则就是: 在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执 ...

  5. Composer 扩展包安装方法

    问题说明 我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文档 的: composer update 这个命令在我们现在的逻辑中,可能会对项目造成巨大伤害. 因为 com ...

  6. Xcode Server (Xcode9)搭建CI

    Xcode 9将Xcode Server集成进来了,这是Xcode一个新特性,不用去单独下载server了,server可以用来做CI.自动化Test等等.这里主要介绍搭建CI,相当简单 打开开关,新 ...

  7. ElasticSearchRepository和ElasticSearchTemplate的使用

    Spring-data-elasticsearch是Spring提供的操作ElasticSearch的数据层,封装了大量的基础操作,通过它可以很方便的操作ElasticSearch的数据. 版本说明 ...

  8. Android常见问题——找不到HttpClient和okHttp的包

    今天再用Android Studio进行网络编程的时候遇到了一个问题,就是怎么也找不到HttpClient的包,上网搜了一下也没什么结果,但最后偶然解决问题,下面总结了一下方法: 首先打开File-& ...

  9. 程序设计入门-C语言基础知识-翁恺-期中测试

    一.试题 程序设计入门—C 语言期中测评 试题下载地址: http://nos.netease.com/edu-lesson-pdfsrc/217E194E46A6595A3F554380337490 ...

  10. bzoj 4811 由乃的OJ

    bzoj 4811 由乃的OJ 考虑树链剖分. 树剖后用一颗线段树维护一段连续区间,类似于一个函数,各位上进入 \(0/1\) ,输出的数字分别是什么.注意到最多只有 \(64\) 位,可以用一个 \ ...