zoukankan      html  css  js  c++  java
  • Linux的文件权限设置为什么能够使用421

    近期做项目碰到个数据库的设计:

    要求某个物品属于三种类别中的一种或者几种,因为这三个类别是固定不变的,故不再搞很多其它麻烦的配置项,直接在数据库中添加一个字段,标志类别。因为可能是三个类别中的随意组合。

    所以一般的设计是这种:添加一个字段type标志类别,1代表类别1,2代表类别2。3代表类别3。若是多个用逗号隔开,字段类型设为varchar,存入的数据大致是这种。"1"。"1,2"。"1,2,3"等组合。

    这样设计比較简单易懂,可是对于读取或者写入时比較麻烦一点,且easy出错;

    在Linux系统中的文件权限有这种设计:用4代表读,2代表写,1代表执行,组合的权限则求和;改动文件权限仅仅要例如以下:

    chmod  754 test
    7 = 1 + 2 + 4      代表读写执行权限

    5 = 1 + 4             代表读和执行权限

    4 = 4                    代表读权限

    这条命令是将test文件的读写执行权限赋给文件全部者,将读执行权限赋给群组,将读权限赋给其它人

    为什么这些数字仅仅能这样求和呢?原因非常easy。将4。2,1表示为二进制就恍然大悟了:

    4: 0000 0100

    2: 0000 0010

    1: 0000 0001

    看到没,相加后彼此对应位上不影响,所以能够这样表示;

    于是乎上面的分类也能够採取这样的办法:

    4代表类别1

    2代表类别2

    1代表类别3

    组合的类别则求和;

    要是类别多了怎么办?

    那就将上述的二进制往后扩展:

    0000 1000 :8

    0001 0000 : 32

    ......

    当然这个方式仅仅适合类别比較少的时候,多了的话数字非常大。

  • 相关阅读:
    工作中遇到的令人头疼的bug
    Cookie的简单用法
    C#之#if #endif的简单用法
    我们一起学习WCF 第十篇Wcf中实现事务
    一次性搞定Session
    设计模式-观察者模式
    类的扩展之 DataReader的扩展
    C#之Ref,Out以及TryParse()的用法
    C#之Lambda不得不说的用法
    C#之Action和Func的用法
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/6953684.html
Copyright © 2011-2022 走看看