/images/hugo/avatar.png

5.4 Linux特殊权限及facl扩展

Linux特殊权限及facl扩展

/images/linux_mt/linux_mt.jpg

Linux 默认的访问控制模型是通过将用户划分为三类,每类用户都可设置读写执行权限实现的。但是某些特殊情况下,此模型可能不太适用,因为其控制的粒度不够。所谓特殊权限及facl 扩展就是用来扩展Linux 的访问控制模型的。本节内容包括:

Python风格对象

内容概要:

  • 如何使用特殊方法和约定的结构,定义行为良好且符合 Python 风格的类
  • 符合 Python 风格的对象应该正好符合所需,而不是堆砌语言特性

1. 对象表示形式

|特殊方法|调用函数|作用| |: —|: —|: —| |__str__|str()|以用户理解的方式返回对象的字符串表示形式| |__repr__|repr()|以开发者理解的方式返回对象的字符串表示形式| |__bytes__|bytes()|获取对象的字节序列表示形式| |__format__|format() str.format()|使用特殊的格式代码显示对象的字符串表示形式| |__int__ |int()|在某些情况下用于强制转换类型| |__float__|float()|在某些情况下用于强制转换类型| |__complex__|complex()|对象的复数形式|

5.3 用户权限管理

Linux 用户与组管理命令

/images/linux_mt/linux_mt.jpg

本节我们将学习用户权限以及权限管理。包括以下内容:

  1. Linux 的权限模型
  2. Linux 权限管理
  3. Linux 属主属组管理
  4. umask 文件权限的遮罩码设置

1. Linux权限模型

Linux 权限模型包括:

对象引用与垃圾回收

变量保存的是引用:

  • 简单的赋值不创建副本
  • 对 += 或 *= 所做的增量赋值来说,如果左边的变量绑定的是不可变对象,会创建新对象;如果是可变对象,会就地修改
  • 为现有的变量赋予新值,不会修改之前绑定的变量 – 重新绑定
  • 函数的参数以别名的形式传递,函数可能会修改通过参数传入的可变对象
  • 使用可变类型作为函数参数的默认值有危险,因为如果就地修改了参数,默认值也就变了,这会影响以后使用默认值的调用

1. 变量与对象

1.1 引用式变量

  • 理解: 引用式变量不是存储数据的盒子,而是附加在对象上的标注
  • a=[]:
    • Python 中赋值语句的右边先执行,对象在右边创建或获取,在此之后左边的变量才会绑定到对象上,就像为对象贴上标注
    • 说把变量分配给对象更合理,反过来说有问题,因为对象在赋值之前就创建了

/images/fluent_python/rubbish_var.png

函数装饰器和闭包

函数装饰器: 用于在源码中“标记”函数,以某种方式增强函数的行为 闭包: 函数装饰器,回调式异步编程,函数式编程风格的基础

1. 装饰器基础

1.1 装饰器简介

语法: