umask补习班
说起来umask是个很常见的命令,用于创建文件或目录时设置权限掩码,通常是0022:
shell> umask0022
注: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
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操作bar.tar
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)。
顺便再介绍一下如何方便的修改目录或文件的权限:
shell> find /path -type d | xargs chmod 755shell> find /path -type f | xargs chmod 644
收工!有兴趣的可以继续阅读All About the umask and Permissions。
建议继续学习:
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:老王 来源: 火丁笔记
- 标签: umask 掩码
- 发布时间:2010-12-12 22:30:00
- [47] IOS安全–浅谈关于IOS加固的几种方法
- [46] 图书馆的世界纪录
- [46] 如何拿下简短的域名
- [46] Oracle MTS模式下 进程地址与会话信
- [43] 【社会化设计】自我(self)部分――欢迎区
- [42] 读书笔记-壹百度:百度十年千倍的29条法则
- [41] android 开发入门
- [41] 界面设计速成
- [39] 视觉调整-设计师 vs. 逻辑
- [36] Go Reflect 性能