以前在用ftp的时候一直懵懵懂懂,不知所以然。最近遇到ftp上传问题,文件无法上传。查了很多资料终于弄明白了。
要知道umask是什么,必须先要了解unix的权限是怎么设计的。了解这个对我们平时做业务系统的权限设计有很好的参考作用。
一、unix权限
一直崇拜uinx的权限设计
曾经有同事问我,用二进制到底怎么实现权限控制。我曾经回答过,似乎对方不是太明白。趁此总结一下。
unix按三类群体设计权限,分别是:
1、所有者权限
2、组权限
3、公共权限
Unix有组的概念,觉得设计的不错,WEB系统设计可以参考这种设计模式。
某个文件(或目录)的上面三种权限可以通过一个非常简洁的表达式来展现。例如:
rwxr-xr-x
它仅仅只有9个字符,每3个作为一组(rwx r-x r-x),依次分别表示所有者权限、组权限和公共权限。每组内r、w、x分别表示了文件在该用户群体中的读、写、执行权限(- 表示无权限)。
字符的运算速度远比数字慢,为了表达这种表达式,设计师用了二进制来表示。由于二进制只有两种状态:0和1,恰好能表示事物互斥的两种特性“有”和“无”,“开”和“关”等。(javascrit中就是用0和1来表示boolean型对象的值)
我们知道,计算机中表示数据量的最小单位是“bit”,中文名称叫“比特”,我习惯称“位”。8位组成一个“Byte”,即“字节”。1024个“Byte”就是一个K的“Byte”,通常所写成“KB”。因此有下面的表达式:
1Byte = 8bit
1KB = 1024Byte = 8 * 1024bit