• Linux 中的权限


    Linux 中的权限

    普通权限

    Linux 的权限分为三部分,第一部分是所有者权限,第二部分是所属组权限,第三部分是其他人权限:

    主  组  他
    rwx rwx rwx
    
    • 1
    • 2

    其中 r 代表可读,w 代表可写,x 代表可执行(或搜索目录),它们都有对应的数字:

    r = 4
    w = 2
    x = 1
    
    • 1
    • 2
    • 3

    各部分的 rwx 权限可以用上面的数字相加来表示:

    rwx = 4+2+1 = 7
    rw- = 4+2   = 6
    r-x = 4+1   = 5
    -wx = 2+1   = 3
    
    • 1
    • 2
    • 3
    • 4

    所以三部分权限就可以用三个数字来表示:

    755 = rwx r-x r-x
    644 = rw- r-- r--
    
    • 1
    • 2

    特殊权限

    除了这些权限之外,还有三个特殊权限:

    setuid = 4
    setgid = 2
    sticky = 1
    
    • 1
    • 2
    • 3

    setuid 表示允许其它用户以文件所有者的身份执行该文件(如果所有者有可执行权限的话),比如普通用户以 root 用户的身份执行某个程序。对目录没有效果。

    setgid 表示允许其它用户以文件所属组的身份执行该文件(如果所属组有可执行权限的话),对于目录而言,则表示所有用户在该目录中创建的文件或目录,其所属组与该目录相同,主要用于在目录中共享资源,同一个组中的成员可以自由访问其中的数据。

    sticky 对于目录而言,只允许所有者或特权用户删除或重命名其中的文件,这称为目录的“受限删除标志”,通常用在 /tmp 目录上。对于某些旧系统上的普通文件,该标志将文件保存在交换设备上,以便在运行时更快地加载,这称为“粘滞位”,不过现代的系统本身就有缓存机制,不用粘滞位也会被缓存,所以粘滞位已经不再文件上使用,只在目录上使用。

    对于设置了 setuid(或 setgid)的文件或目录,如果其“所有者”(或“所属组”)有可执行权限,则会使用 s 标志代替 x 标志,如果没有可执行权限,则会使用大写的 S 标志代替。

    对于设置了 sticky 的文件或目录,如果“其他人”有可执行权限,则会用 t 标志代替 x 标志,如果没有可执行权限,则会使用大写的 T 标志代替。

    设置权限

    # u 代表用户,g 代表组,o 代表其他,a 代表全部
    # - 代表去掉,+ 代表增加,= 代表设置
    # r 代表读,w 代表写,x 代表执行
    # X 代表仅当文件是目录或已对某些用户具有执行权限时才设置 x
    # s 代表 setuid/setgid(看是设置个所有者还是所属组)
    # t 代表 sticky
    chmod [ugoa]*([-+=][rwxXst]*)+
    chmod [ugoa]*([-+=][ugo])+
    chmod [-+=][0-7]+
    
    chmod 00755  file  # 设置文件权限为 rwx r-x r-x,清除高级权限位
    chmod =755   file  # 设置文件权限为 rwx r-x r-x,清除高级权限位
    chmod 755    file  # 设置文件权限为 rwx r-x r-x,保留高级权限位
    chmod 1755   file  # 设置文件权限为 rwx r-x r-t
    chmod 7777   file  # 设置文件权限为 rws rws rwt
    chmod 7666   file  # 设置文件权限为 rwS rwS rwT
    chmod +007   file  # 为其他人添加 rwx 权限
    chmod -022   file  # 去掉所属组和其他人的 w 权限
    
    chmod u+rw   file  # 为所有者 rw 权限
    chmod ug+rw  file  # 为所有者和所属组添加 rw 权限
    chmod a+x-w  file  # 为所有人添加 x 权限,去掉 w 权限
    chmod a=rx   file  # 将所有人的权限设置为 rw
    chmod o=g    file  # 将其他人的权限设置为与所属组相同
    chmod +rwx   file  # 为所有者添加 rwx 权限,为所属组和其他人添加 r-x 权限
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    chmod 从不改变符号链接的权限,因为符号链接的权限从不使用。但是,对于“命令行”中给出的符号链接,chmod 会更改其所指向的文件的权限。而在遍历目录(通过 -R 选项)时遇到的符号链接,chmod 会忽略它。

    高级权限

    其它特殊权限:

    chattr +i file  # 忽略 w 权限设置,任何人不可修改
    chattr -i file  # 恢复 w 权限设置
    
    chattr +i file  # 忽略 w 权限设置,任何人只能追加数据
    chattr -i file  # 恢复 w 权限设置
    
    • 1
    • 2
    • 3
    • 4
    • 5

    更多 chattr 选项:

    chattr [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files...
    
    • 1
  • 相关阅读:
    1.吴恩达机器学习--线性回归
    设计模式-day02
    计算机视觉与深度学习-全连接神经网络-激活函数- [北邮鲁鹏]
    【机器学习】解决过拟合、ReLU激活函数
    批处理入门
    Redis数据类型与常用指令
    计算一个区间时间差值,时间保留剩下的差值
    RV1-Java:面向对象、集合、线程、JVM内存、类加载、GC
    六,使用stbimage库加载.hdr
    安装RabbitMQ及启动服务
  • 原文地址:https://blog.csdn.net/stevenldj/article/details/126931094