博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入理解Linux的权限
阅读量:2242 次
发布时间:2019-05-09

本文共 2611 字,大约阅读时间需要 8 分钟。

文章目录

引言

当我们使用ls -al 查看文件内容的时候,会出现:

在这里插入图片描述
可以看到,最后面蓝色的字体是我们访问目录下的文件名字,那前面的那些毫无疑问就是该文件的一些信息。我们可以看懂一些,比如创建的时间,剩余的部分是什么?
在这里插入图片描述
最前面的一串字母:例drwxr-xr-x.表示的权限,那表示的又是谁的权限?所有人吗?还是仅仅root用户的?

首先,最前面的字符d表示文件类型;

  • 当为[ d ]则是目录
  • 当为[ - ]则是文件
  • 当为[ p ] 则是管道文件
  • 若为[ s ] 则是socket设备文件
  • 若是[ l ]则表示为连结档(link file);(符号链接文件)
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);(块设备文件)
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。(字符设备文件)

紧接着的九个字符表示的都是权限

用户和用户组

Linux操作系统是多任务(Multi-tasks)多用户(Multi-users)分时操作系统,linux操作系统的用户就是让我们登录到linux的权限

1. 所有者

  • 由于Linux是多用户、多任务的操作系统,因此可能常常有多人同时在某台主机上工作,但每个人均可在主机上设置文件的权限,让其成为个人的“私密文件”,即个人所有者。
  • 通俗的说,一般情况下,谁创建了文件,谁就是该文件的所有者
  • ls ‐al命令可以看到文件的所有者

2.所有组

  • 在Linux中,每个账户支持多个用户组
  • 当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组

3.其他组

  • 除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

我们在上面的图中可以看到,权限所涉及的字符有三个:r w x

  • r : 读
  • w :写
  • x : 执行

权限对文件的作用:

  • r:可获取文件的数据
  • w:可修改文件的数据
  • x:可将此文件运行为进程

权限对目录的作用:

  • r:可使用ls命令获取其下的所有文件列表
  • w:可修改此目录下的文件列表;即创建或删除文件,包括子目录
  • x:可cd至此目录中;且可使用ls -l来获取所有文件的详细属性信息

前面rwx一共有三组,代表了分别代表了所属用户、所属组、其他组三者对文件的权限

权限组合 二进制数 十进制数
000 0
–x 001 1
-w- 010 2
-wx 011 3
r– 100 4
r-x 101 5
rw- 110 6
rwx 111 7
例如:rwxr-xr-x     755 所有者拥有读写执行的权限,所属组拥有读、执行的权限,其他组拥有读、执行的权限   rw-------     600 所有者拥有读、写的权限r--r---w-     442 所有者拥有读的权限,所属组拥有读的权限,其他组拥有写的权限

如何修改文件的权限

Linux中有几个常用于用户组、所有者和其他组的权限的修改的命令:

  • chgrp 改变文件所属组
  • chown 改变文件所有者
  • chmod 改变文件的权限

改变文件所属组 chgrp

  • chgrp实际上就是change gruop的缩写
  • 要被改变的群组名必须要在/etc/gruop文件中才行,否则会出错。
    在这里插入图片描述
    这样就把test文件的所属组改为了lhz

改变文件所有者 chown

  • chown 实际上就是 change owner 的缩写
  • 改变的用户必须是系统上已经存在的用户,也就是在/etc/passwd 这个文件中有纪录的用户名称才能改变。

在这里插入图片描述

这样就把test.c的所有者改变为了lhz


改变文件权限 chmod

数字类型改变权限

在Linux中,改变文件的权限要用chmod命令。

命令格式:chmod xyz 文件或目录
在这里插入图片描述
上边将Makefile的权限从775改为664。
符号类型改变权限

  • u 所有者
  • g 所属组
  • o 其他
  • a 全部

格式:

在这里插入图片描述

在这里插入图片描述

上述将test文件的所属组的可读权限删除

在这里插入图片描述

上述将所有者,所属组,其他组都加上了可读权限。

权限的作用

权限对文件的作用

  • r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
  • w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
  • x (execute):该文件具有可以被系统执行的权限

那个可读 r 代表读取文件内容是还好了解,那么可执行(x)呢?这里你就必须要小心啦! 因为在Windows底下一个文件是否具有执行的能力是藉由『 扩展名 』来判断的, 例如:.exe, .bat, .com 等等,但是在Linux底下,我们的文件是否能被执行,则是藉由是否具有『x』这个权限来决定的!跟档名是没有绝对的关系的!

至于最后一个w这个权限呢?当你对一个文件具有w权限时,你可以具有写入/编辑/新增/修改文件的内容的权限, 但并不具备有删除该文件本身的权限!对于文件的rwx来说, 主要都是针对『文件的内容』而言,与文件档名的存在与否没有关系喔!

权限对目录的作用

  • r (read contents in directory):

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

  • w (modify contents of directory):

这个可写入的权限对目录来说,是很了不起的! 因为他表示你具有异动该目录结构列表的权限,也就是底下这些权限:

  • 建立新的文件与目录;
  • 删除已经存在的文件与目录(不论该文件的权限为何!)
  • 将已存在的文件或目录进行更名;
  • 搬移该目录内的文件、目录位置。

总之,目录的w权限就与该目录底下的文件名异动有关就对了啦!

  • x (access directory):

咦!目录的执行权限有啥用途啊?目录只是记录文件名而已,总不能拿来执行吧?没错!目录不可以被执行,目录的x代表的是用户能否进入该目录成为工作目录的用途! 所谓的工作目录(work directory)就是你目前所在的目录啦!举例来说,当你登入Linux时, 你所在的家目录就是你当下的工作目录。而变换目录的指令是『cd』(change directory)啰!

简单的说,就是你可以指定你自己的文件可以让谁查看,谁可以修改,谁可以删除,要不然,你的秘密岂不都被大家知道了

转载地址:http://rdwdb.baihongyu.com/

你可能感兴趣的文章
面试题 —— 关于main方法的十个面试题
查看>>
集成测试(一)—— 使用PHP页面请求Spring项目的Java接口数据
查看>>
使用Maven构建的简单的单模块SSM项目
查看>>
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题
查看>>
FastDFS集群架构配置搭建(转载)
查看>>
HTM+CSS实现立方体图片旋转展示效果
查看>>
FFmpeg 命令操作音视频
查看>>
问题:Opencv(3.1.0/3.4)找不到 /opencv2/gpu/gpu.hpp 问题
查看>>
目的:使用CUDA环境变量CUDA_VISIBLE_DEVICES来限定CUDA程序所能使用的GPU设备
查看>>
问题:Mysql中字段类型为text的值, java使用selectByExample查询为null
查看>>
程序员--学习之路--技巧
查看>>
解决问题之 MySQL慢查询日志设置
查看>>
contOS6 部署 lnmp、FTP、composer、ThinkPHP5、docker详细步骤
查看>>
TP5.1模板布局中遇到的坑,配置完不生效解决办法
查看>>
PHPstudy中遇到的坑No input file specified,以及传到linux环境下遇到的坑,模板文件不存在
查看>>
TP5.1事务操作和TP5事务回滚操作多表
查看>>
composer install或composer update 或 composer require phpoffice/phpexcel 失败解决办法
查看>>
TP5.1项目从windows的Apache服务迁移到linux的Nginx服务需要注意几点。
查看>>
win10安装软件 打开时报错 找不到 msvcp120.dll
查看>>
PHPunit+Xdebug代码覆盖率以及遇到的问题汇总
查看>>