linux文件权限

快一周没有写博客了。今天终于有时间再翻出鸟哥的书看,接着上次的来看,我们这一次学习一下linux的权限管理。


1.几个概念

文件所有者(owner):linux是多用户系统,不同的用户对同一文件具有不同的读写权限。这里的文件所有者并不一定是指文件的创建者(PS:因为文件创建者可能修改文件的权限,使文件实际上归属其他用户。这里说起来比较抽象,一会我们用实际例子来看。)

用户组(group):这个概念就像不同的家庭都有一定的家庭成员,文件就相当于家中的公用物品,这个家中的家庭成员对这些文件具有一定的读写权限。而其他家庭的成员(其他用户组)可能对这些文件没有读写权限。在同一用户组中,假如A用户有一个文件,B用户可能只具有读权限,或者不具有访问权限。(PS:这就好像在你的房间里有一本情书,你肯定不会让你的爸妈进你的房间去看这本情书)。

**同一用户可以属于多个用户组。**(PS:这就很像你很好的朋友经常回去你家里玩,对你家里的有些东西能看到。同样,你也能进入他的家里看到他家里很多东西。从linux的角度来看,你们俩就同时属于两个用户组。)

其他(other):其他人不具有本组文件的访问权限。这就像你不会让一个对于你家里人来说都是陌生人的人进入家中查看一样,除了警察意外。(这里的警察就是linux中的root用户,具有系统的一切权限。后面我们会经常使用)


2.用户身份及组的记录文件

默认情况下,linux所有账号和一般用户以及root用户的相关信息都记录在/etc/password这个文件内。个人密码信息都记录在/etc/shadow(影子文件)中。所有组名信息都放在/etc/group这个文件中。



以上三个文件十分重要,删除或缺失都会造成无法登陆系统等问题。写入以上文件需要root权限。


3.文件权限

在linux中你读写文件时是否会遇到Permission deny的情况。例如上面的/etc/shadow文件,我用普通用户读取时会出现如下结果:


这在linux中是司空见惯的事。下面我们随意用ls命令来看一下home目录下的文件:


注意上图的第一列,看起来好头大,什么drwx-,这些符号代表什么含义?之后的第二列第三列第四列又是什么意思?

首先看后几列吧。从第五列开始,从字面上来猜测,是文件大小(单位默认为B)、日期(鸟哥书上写的是修改日期)、和文件名,这些比较容易理解。

再看第一列。第一列代表了文件的类型与权限。仔细看第一列的内容,包含了10个字符,下面一一解释这是个字符的取值与含义。

第一个字符表示文件或目录或链接文件:

如果为d则是目录文件,如果是 - 则为普通文件,如果为 l 则为连接文件,如果为 b 则为设备里文件里可供存储的接口设备,如果为 c 则为设备文件里的串口端口设备,如键盘、鼠标等。

接下来的九个字符分为三组,第一组代表文件所有者的权限,第二组代表同用户组权限,第三组代表其他非本组用户的权限。在每一组中,第一个字符如果为r,代表有读权限,为 - 则无读权限;第二个字符如果为 w,代表有写权限,为 - 则无写权限;第三个字符如果为 x,代表有执行权限,为 - 则无执行权限。

第二列表示有多少文件名连接到此节点(i-node)。每个文件都会把它的权限与属性记录到文件系统的i-node中,目录树是使用文件名来记录的,每个文件名都会连接到一个i-node。关于i-node可以参考这篇博客:点击打开链接

第三列表示这个文件的所属用户。

第四列表示这个文件的所属用户组。

说了这么多,linux把文件权限搞得这么复杂,到底有什么含义呢?

先说一个简单的例子。做程序员的人都知道,一个项目一般情况下需要多个人参加,有时一个文件可能需要能被多个人方访问或修改。如果在linux下,A、B、C同时参加一个项目,现在文件d由A创建,而B需要访问这个文件,C不需要访问这个文件。那么要如何实现这样的需求呢?这时文件权限的作用就表现出来了。当然,文件权限的作用远不止是这些。鸟哥书上归结为两点:

  • 系统保护功能。比如重要的系统文件(/etc/shadow等)一般用户不具有读写权限,只有root用户才有读写权限。
  • 团队开发软件或数据共享功能,以上的例子就很好的说明了这个功能。

4.文件权限的修改

权限设置不当可能会造成系统运行异常等问题,在软件开发过程中也可能会造成不必要的麻烦。

文件权限的修改主要有以下三个命令:

  • chgrp:改变文件所属用户组
  • chown:改变文件所有者
  • chmod:改变文件的权限
先使用man命令查看一下chgrp的用法:

主要参数:-R进行递归的持久更改,连同其下的子文件子目录。
我们以home目录下的abc为例:chgrp -R root abc

可以看到对比之前的图,abc的用户组由steven变成了root。


再看看chown命令:

重要参数: —R 递归持续更改,连同子目录下及子文件
同样以上面的abc为例:chown -R root abc

可以看到用户已从steven改为root。
最后同样以abc为例看一下chmod的用法:
chmod -R 777 abc

PS:文件的权限值对应二进制的值在命令参数中体现:
rwx对应11,即十进制的7,r-x即101,对应十进制的5
此外还可以单独设置u (owner)、g(group)、o(other)的权限:
chmod u= rwx,g=rx,o=rx abc

可以看到确是达到了自己的预期结果。
以上介绍的rwx权限的含义都是针对非目录文件的,那么对于目录文件rwx又有什么含义呢?
r(read contents in directory)具有读取目录结构列表的权限,即可以使用ls命令将文件列表显示出来
w(modify contents of directory )具有更改目录结构的权限,即新建文件与目录、删除文件与目录、将已存在的目录或文件重命名,转移目录内文件与子目录的位置。
x(access directory) 用户是否能进入该目录成为工作目录(work directory 即能否切换到该目录下,如home目录)

5.有、关于cp命令
cp命令即拷贝命令,格式如下:
cp sourcefile targetfile
以文件abc为例:cp abc abc1

可以看到复制命令会复制执行者的属性和权限。

6.文件扩展名问题
大家都知道window下扩展名代表了文件的类型,比如exe、bat等都代表不同类型的文件,但在linux下文件扩展名没有特殊的含义。文件的类型都以最开头的字符d、-、l、b、c等来区分。不过某些后缀名会有特殊的含义。
.sh: 执行脚本
.Z、.tar、.tar.gz、.zip、.tgz:经过打包的压缩文件
.html等通用的网络文件
以上文件是一种约定俗成的习惯用法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值