当前位置: 首页 > news >正文

第2周第3课:chmod、chown、umask、lsattr/chattr

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

2.14 文件和目录权限chmod

文件类型和文件权限

见下图列表第1组的内容

Markdown

以“drwxr-xr-x”为例说明。这10个字符,由两部分组成:

  1. 第1列,表示文件类型(目录或文件夹)。
  2. 从第2列开始的剩余部分, 表示文件权限。权限每3位为一组,分别表示:
  • 文件所有者(user)的权限
  • 文件所属组((group)的权限
  • 其他非本群组用户(others)的权限。

1)第1列的文件类型,大体分为如下几类:

  • d:目录
  • -:普通文件(文本文档、二进位字符串)
  • l:链接文件(link file),重定向
  • s:socket,通信设备
  • p:named pipe
  • b:block device,块设备
  • c:字符串设备

2)文件权限:

  • r:Read,可读
  • w:Write,可写
  • x:eXecute,可执行
  • -:无权限

解读drwxr-xr-x,则拆分为4部分,各部分分别表示:

  • d:文件为目录
  • rwx:文件所有者(user)可读、可写、可执行
  • r-x:文件所属组(group)可读、不可写、可执行
  • r-x:其他非本群组用户(others)可读、不可写、可执行

chmod命令(change mode)

  • Linux中可以用数字代替rwx来更改权限,具体规则:r=4,w=2,x=1,-=0
  • e.g:‘-rwxrwxrw-’用数字表示就是776,计算规则:rwx=4+2+1=7,rwx=4+2+1=7,rw-=4+2+0=6。

Markdown

语法:chmod [-R] xyz [filename] (-R 参数用于级联更改。xyz代表数字)

  1. 在Linux系统中,root用户默认一个目录的权限为755,而一个文件的权限为644。

  2. chmod支持使用rwx的方式来设置权限。3组(3位1组)文件权限分别所属于user,group,others。可以使用u,g,o来代表各自属性。此外,a则代表all,即全部。

这个方式容易混淆,不及数字方式表示快速、准确。平时不建议使用此方式。

e.g1,在下图的例子中,chmod命令的另一种表现方式:

  • chmod u=rwx,g=rx,o=r 1.txt    && 各组分别赋予某类权限
  • chmod u-x,g-x 1.txt        && 各组分别去掉某类权限

Markdown

e.g2,chmod命令,-R参数的用法

Markdown

2.15 更改所有者和所属组chown

chown命令(change owner)

  • 更改目录或文件的所有者以及所属组。
  • 语法:
  1. chown [-R] 账户名 filename 更改文件的所有者
  2. chown [-R] 账户名:组名 filename 更改所属组(-R的作用是级联更改)

Markdown

Markdown

Markdown

Markdown

chgrp命令(change group)

  • 更改文件或目录的所属组。
  • 语法:chgrp [-R] [组名] filename (-R表示级联更改,只针对目录文件)

e.g1:更改文件的所属组

Markdown

e.g2:更改目录的所属组

Markdown

e.g3:更改目录及其目录下的文件的所属组

Markdown

注:由于chgrp命令仅限于修改所属组(group),而不更改所有者(user),因此,及chown命令效率高。建议用chown命令代替chgrp命令。

2.16 umask

  • 语法:umask xx(这里的xxx代表三个数字)

Markdown

  • 数值定义的规则:
  1. 用户建立普通文件,则预设没有可执行权限只有rw(可读、可写)两个权限。最大数值为666(-rw-rw-rw-)。
  2. 用户建立为目录,则预设所有权限均开放,最大为777(drwxrwxrwx)。
  • umask数值代表的含义为,上述两条规则中的默认值(文件为666,目录为777)需要减去的权限。

  • 目录权限:umask的实际数值=rwx rwx rwx ---- -w- -w- = rwx r-x r-x

Markdown

  • 普通文件:umask的实际数值=rw- rw- rw- ---- -w- -w- = rw- r-- r--

Markdown

umask的值是可以自定义的。如果自定义为某个数值,则将此值换算为rwx的表现方式,套用到上面的两个公式中,就可以计算出在umask重新赋值后,新建目录或新建的普通文件,系统所给予的权限值是多少。

注意

  1. umask的计算,不建议转换成数字的方式。有时候会出现问题。用rwx的方式即可。
  2. umask可以在/etc/bashrc里面更改。预设情况下,root的umask为022,而一般使用者则为002。因为可写的权限非常重要,因此,预设会去掉写权限。
  3. 系统里的umask是4位数的,最前面还有一个0。这个0加与不加没有影响,它表示umask数值是八进制的。

2.17 隐藏权限lsattr/chattr

只有超级权限的用户才具有使用该命令的权限,这项指令可改变存放在ext2、ext3、ext4、xfs、ubifs、reiserfs、jfs等文件系统上的文件或目录属性。

chattr命令(change attribute)

  • 语法:chattr [+ - =][选项] [文件或者目录名],其中,+、-、=:分别表示增加、减少、设定 -选项:
  • [ ] A:增加该属性后,文件或目录的atime将不可修改
  • [ ] s:增加该属性后,会将数据同步写入磁盘中
  • [ ] a:增加该属性后,只能追加不能删除,非root用户不能设定该属性。

e.g1:针对文件,增加(+a)选项的实验:

Markdown

结果显示:该文件不能被删除、重命名、修改原内容。但可以新增(追加)内容、可以通过touch修改文件的编辑时间。

e.g2:针对目录,增加(+a)选项的实验:

Markdown

结果显示:该目录中所有已生成的文件或目录,均不能被删除、重命名,但可以生成新文件和新目录。也可以对其目录中存在的文件,编辑内容或追加内容。

  • [ ] c:自动压缩该文件,读取时会自动解压
  • [ ] i:增加该属性后,使文件不能被删除、重命名、设定链接、写入、新增数据

e.g1:针对文件,增加(+i)选项的实验:

Markdown

结果显示:不能对该文件进行删除、重命名、新增数据的操作。

e.g2:针对目录,增加(+i)选项的实验:

Markdown

结果显示:不能对该目录进行删除、重命名、新增文件的操作。但可以对目录下原有的文件的内容,进行追加(如用head命令)操作。

lsattr命令(list attribute)

该命令用来读取文件或者目录的特殊权限。

  • 语法:lsattr [-aR] [文件/目录名]
  • 选项:
  • [ ] -a:all,连同隐藏文件一同列出
  • [ ] -R:连同子目录的数据一同列出
  • [ ] -d:仅列出目录自身的数据

Markdown

转载于:https://my.oschina.net/greenfinch/blog/1592904

相关文章:

  • 罗森伯格成功部署印度某著名港口光纤基础设施
  • 【css】设置div位于浏览器的最底层,离用户最远
  • 经济金融领域简单数学建模和分析:MATLAB成本曲线方程和销售收入直线方程
  • 码子杂记
  • RequireJS源码分析(上)
  • 第 21 章 MySQL
  • KAFKA日志管理
  • 华为交换机常用命令
  • webmagic使用手册
  • 8.4. FAQ
  • 【R语言 评分模型】R语言建立信用评分模型
  • grails查询指定列的数据
  • day12:usermod及用户密码管理
  • mysql管理
  • js面向对象设计之function类
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • Docker下部署自己的LNMP工作环境
  • express + mock 让前后台并行开发
  • iOS编译提示和导航提示
  • LeetCode29.两数相除 JavaScript
  • Mocha测试初探
  • orm2 中文文档 3.1 模型属性
  • win10下安装mysql5.7
  • 规范化安全开发 KOA 手脚架
  • 爬虫模拟登陆 SegmentFault
  • 双管齐下,VMware的容器新战略
  • 仓管云——企业云erp功能有哪些?
  • ​Python 3 新特性:类型注解
  • (1)虚拟机的安装与使用,linux系统安装
  • (9)STL算法之逆转旋转
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (接口自动化)Python3操作MySQL数据库
  • (一)VirtualBox安装增强功能
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • ***利用Ms05002溢出找“肉鸡
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .apk 成为历史!
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET MVC 验证码
  • .NET 服务 ServiceController
  • .net 使用ajax控件后如何调用前端脚本
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • /var/spool/postfix/maildrop 下有大量文件
  • @Bean, @Component, @Configuration简析
  • [1] 平面(Plane)图形的生成算法
  • [ACTF2020 新生赛]Upload 1
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现
  • [BZOJ2850]巧克力王国
  • [CUDA手搓]从零开始用C++ CUDA搭建一个卷积神经网络(LeNet),了解神经网络各个层背后算法原理
  • [Erlang 0129] Erlang 杂记 VI 2014年10月28日