前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Umask补习班

Umask补习班

作者头像
LA0WAN9
发布2021-12-14 08:00:02
4840
发布2021-12-14 08:00:02
举报
文章被收录于专栏:火丁笔记

说起来umask是个很常见的命令,但很多人其实并不完全理解它。

umask用在创建文件或目录时设置权限掩码,通常是0022:

代码语言:javascript
复制
shell> umask
0022

注:0022等价于022,0022中第一个0用于sticky-bit,本文不做讨论,有兴趣的请自查。

为了稍后演示的方便性,先在Windows上用7-zip创建两个文件:

  • foo.zip(包括:目录foo_dir,文件foo_file)
  • bar.tar(包括:目录bar_dir,文件bar_file)

当然,你可以不用Windows,我之所以这样做,只是为了稍后抖个包袱而已。

把这两个文件上传到Linux上,然后让我学着导演的口吻喊一嗓子:Action!

操作foo.zip

代码语言:javascript
复制
shell> unzip foo.zip

此时查看目录和文件的权限,分别是:

  • foo_dir:755(drwxr-xr-x)
  • foo_file:644(-rw-r–r–)

这是因为目录的基准权限是777,文件的基准权限是666,由于umask缺省是022,所以:

  • 目录:777 – 022 = 755
  • 文件:666 – 022 = 644

注:权限计算实际上是二进制位的与操作,参考All About the umask and Permissions

操作bar.tar

代码语言:javascript
复制
shell> tar xf bar.tar

这次有点不同,我们要运行两次tar命令。

第一次:以root身份运行tar命令,然后查看目录和文件的权限,分别是:

  • bar_dir:777(drwxrwxrwx)
  • bar_file:777(-rwxrwxrwx)

第二次:以非root身份运行tar命令,然后查看目录和文件的权限,分别是:

  • bar_dir:755(drwxr-xr-x)
  • bar_file:755(-rwxr-xr-x)

注意:每次运行tar命令前,记得删除上次运行tar命令产生的目录及文件,以免受影响。

两次的结果有些差异,在man tar中能查到一些有用的描述信息:

-p, –same-permissions, –preserve-permissions extract all protection information –no-same-permissions apply user’s umask when extracting files instead of recorded permissions

使用tar命令时,对于root而言,缺省:extract all protection information,对于非root而言,缺省:apply user’s umask when extracting files instead of recorded permissions。

我们先前使用Windows创建文件,然后上传到了Linux上,所以文件和目录的初始权限即为777,当我们使用root身份运行tar命令时,就保留了这个权限。而当我们以非root身份运行tar命令时,虽然会应用umask,但tar有点特殊,它使用目录和文件本身的权限作为基准权限,而不是777(目录)和666(文件),所以最终的权限变成了755(777 – 022)。

顺便再介绍一下如何方便的修改目录或文件的权限:

代码语言:javascript
复制
shell> find /path -type d -print0 | xargs -0 chmod 755
shell> find /path -type f -print0 | xargs -0 chmod 644

本次补习班下课!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2010-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 操作foo.zip
  • 操作bar.tar
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档