Linux学习之文件权限

前言

之前没系统学习Linux文件权限,经常在安装软件的时候,面对教程上写的以下一类的命令一脸懵逼

chmod 755 start.sh
chmod a+w start.sh
chgrp guest start.sh
chown guest start.sh

虽然知道以上都是用于调整文件权限的,755 权限是什么权限?a+w有代表什么?chmod、chgrp、chown有分别代表什么?什么时候使用?经过以上四个命令操作,我们最终start.sh文件的权限到底是怎么样的?这一期我们要学习的就是解决这些疑问的。

 

一、权限身份

Linux将文件可存取的身份分为三个类别,分别是:

  • owner 文件拥有者,即文件归属谁,比如谁创建的
  • group 群组,即文件针对一类人权限的描述
  • others 其他人 除了拥有者和群组以外的人就是其他人

每一种身份都会有read/write/excute三种权限的描述。

在Linux中,默认情况下,系统中所有的账号和一般身份使用者,以及root账号的相关信息都是记录在/etc/passwd文件内的,个人密码记录在/etc/shadow文件内,而群组信息记录在/etc/group文件内,所以这三个文件是描述了Linux系统中的账号、密码和群组,是非常重要的。

 

二、权限描述

我们利用ls命令查看一下文件的权限

[root@bugdongdong ~]# ls -al
total 148
dr-xr-x---. 14 root root     4096 Jun  2 23:06 .
dr-xr-xr-x. 32 root root     4096 May 15 09:43 ..
drwxr-xr-x   3   18 dialout  4096 Aug  6  2019 admin
-rw-------   1 root root    19896 Jun  1 23:18 .bash_history
-rw-r--r--.  1 root root       18 Dec 29  2013 .bash_logout
-rw-r--r--.  1 root root      176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root      176 Dec 29  2013 .bashrc
drwx------   3 root root     4096 Aug 18  2017 .cache
-rw-r--r--.  1 root root      100 Dec 29  2013 .cshrc
drwxr-xr-x   3 root root     4096 Feb 22  2019 .groovy

以上每一行,以空格为界,每一部分代表的含义如下:

[权限][连结][拥有者][群组][文件大小][修改时间][文档名称]

我们来看一下第一部分的权限描述

-rw-r--r--

可以看到是由10个字符组成的,均为rwx 的三个参数的组合。其中,r代表可读(read)、w代表可写(write)、x代表可执行(execute),-代表无权限. 10位描述符具体含义如下:

  • 第1位: 代表文档类型,如d代表目录,-代表普通文件,还有其他字符(见下方)

  • 第2-4位:代表拥有者权限

  • 第5-7位:代表群组权限,其他同上

  • 第8-10位:代表其他人权限

特别注意

root 基本上是不受系统的权限所限制的, 无论文件权限为何,预设 root 都可以存取喔!所以针对特别关键的文件,权限可以设置为----------

文档类型划分

  • 当为d则是目录

  • 当为-则是文件

  • 若是l则表示为连结档(link file),类似于windows的快捷方式

  • 若是b则表示为装置文件里面的可供储存的接口设备(可随机存取装置); block区块设备

  • 若是c则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。 字符设备文件(character)

  • 若是s则表示为资料接口文件(sockets)。既然被称为数据接口文件, 想当然尔,这种类型的文件通常被用在网络上的数据承接了。我们可以启动一个程序来监听客户端的要求, 而客户端就可以透过这个 socket 来进行数据的沟通了。第一个属性为 s,最常在/run 或/tmp 这些个目录中看到这种文件类型了。

  • 若是p则表示为数据输送文件(FIFO, pipe):FIFO 也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。FIFO是 first-in-first-out 的缩写。第一个属性为[p] 。

 

三、文件权限修改

(1)三个命令
  • chown 改变文件拥有者
  • chgrp 改变文件所属群组
  • chmod 改变文件的权限

其中以上命令,在执行修改的时候是只针对单文件或者单目录生效,如果要连目录下的所有子目录或文件同时更改的话,我们可以加上-R选项,递归执行操作

(2)权限修改

拥有者和群组变更

chown -R user:group test/
chown user:group test.txt
chown user test.txt

这里我们有看到另外一种写法,就是user:group 就代表同时变更拥有者和群组,以:分隔,当然也可以用.号分隔,常用冒号,因为.号容易在用户名中存在,造成歧义误判。

权限变更:

权限的变更/设定有两种支持的方式:数字方式符号方式

  1. 数字方式

    r :4

    w:2

    x:1

读、写、执行三种权限的数字分别为上面这三种,那么在我们的文件的9位三组权限中,每一组权限都是有这三个权限的数字累加的,最终得到一个三位数的权限数字。

以权限-rwxr-xr-x为例

  • owner rwx 4+2+1 = 7
  • group r-x 4+0+1 = 5
  • other r-x 4+0+1 = 5

所以要描述上面这个权限的数字就是755了。

  1. 符号方式

我们知道9位字符描述的分别是user/group/other三种身份的权限的,于是:

  • u 代表user,即前面我们提到的owner
  • g 代表 group
  • o 代表other
  • a代表all,表示以上三种身份

 

  • + 代表添加权限
  • -代表删除权限
  • =代表设定权限

示例:

chmod u=rwx,g+w,o=rx test.txt
# 下面这个代表给所有人加写入权限
chmod a+w test.txt
(3) rwx权限对于文件和目录的含义不同
  1. 对于文件
  • r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;

  • w (write):可以编辑、新增或者是修改该文件的内容**(但不含删除该文件);**

  • x (execute):该文件具有可以被系统执行的权限。

  1. 对于目录
  • r (read contents in directory)

    表示具有读取目录结构列表的权限,所以当你具有读取r一个目录的权限时,表示你可以查询该目录下的文件名数据。可以利用 ls 这个指令将该目录的内容列表显示出来;

  • w (modify contents of directory)

写入的权限对目录来说很关键的权限, 因为它表示你具有改动该目录结构列表的权限,即这些权限:

  • 建立新的文件与目录;

  • 删除已经存在的文件与目录(不论该文件的权限为何!)

  • 将已存在的文件或目录进行更名;

  • 搬移该目录内的文件、目录位置。

  • x (access directory)

    目录的执行权限有啥用呢?目录按说是不会用来执行的。所以、目录的 x 代表的是用户能否进入该目录成为工作目录的用途。所谓的工作目录(work directory)就是你目前所在的目录啦!举例来说,当你登入 Linux 时, 你所在的家目录就是你当下的工作目录,而变换目录的指令是cd(change directory)!

    另外,Linux 的文件是没有所谓的扩展名的,linux的文件能否被执行是看它有没有x权限。虽然如此,不过我们仍然希望可以藉由扩展名来了解该文件是什么东西,所以, 通常我们还是会以适当的扩展名来表示该文件是什么种类的。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值