• Linux之权限


    1.1,什么是权限?

    权限是用来约束用户能对系统所作的操作。或者说权限是指某个特定的用户具有特定的系统资源的使用权力。

    1.2权限的作用

    linux是一个多用户系统,对于每一个用户来说,个人隐私的保护十分重要,所有需要进行权限划分。

    • 1,安全性:降低误删除风险,减少人为造成故障以及数据泄露等风险。
    • 2,数据隔离:不同的权限能看到,以及操作不同的数据。
    • 3,职责明确划分。

    1.3 权限与用户的关系

    • linux系统中,权限是用户来定义用户能做什么,不能做什么。
    • 1,针对文件定义了三种身份,分别是属主owner、属组gruop、其他他人others
    • 2.每种身份又对应三种权限,读read、写write、执行execute

    • 当一个用户访问文件流程
    • 先判断用户是否为文件属主,如果是则按属主权限进行访问。否则判断用户是否为文件属组,如果是则按属组权限进行访问。如果访问者既不是文件属主也不是文件属组,则按其他人权限访问。

    1.4 权限中rwx的含义

    • linux中权限是由rwxr-xr-x这9为字符来表示的。主要控制文件的属主User,属组Group,其他用户Other
    字母 含义 二进制 八进制权限表示法
    r-- 读取权限 100 4
    -w- 写入权限 010 2
    --x 执行权限 001 1
    --- 没有权限 000 0

    2,修改文件权限

    • 命令:chmod(change mode) ps:root用户可以修改任何人的文件权限,普通用户只能变更属于自己的文件权限

    2.1,UGO方式

    • 给文件所有人添加读写执行权限
    [root@Linux.net: ~]##chmod a=rwx file
    
    
    • 取消文件的所有权限
    [root@Linux.net: ~]##chmod a=-rwx file
    
    
    • 属主读写执行,属组读写,其他人无权限
    [root@Linux.net: ~]##chmod u=rwx,g=rw,0=- file
    
    • 属主属组读写执行,其他人读权限
    [root@Linux.net: ~]##chmod ug=rwx,o=r file
    

    2.2,NUM方式

    • 设定文件权限644,rw-r--r--
    [root@Linux.net: ~]##chmod 644 file
    
    • 设定文件权限600,rw-------
    [root@Linux.net: ~]##chmod 600 file
    
    • 设定目录权限为755,递归授权rwxr-xr-x
    [root@Linux.net: ~]##chmod -R 755 dir
    

    2.3权限对文件的影响
    linux中去权限设定读文件和目录的影响是有区别的。

    权限 对文件的影响 对目录的影响
    r 浏览目录内容
    w 增加,删除,修改
    x 执行 进入目录

    3,修改文件所属关系

    • 可以使用chown(change owner)、chagrp(change group)命令实现
    • chown 可以变更文件的属主和属组
    • chgrp仅能变更文件的属组

    3.1 chown(change owner)

    # 1,创建文件和目录
    [root@Linux.net: ~]#mkdir /data
    #2,修改所属主为`bin`
    [root@Linux.net: ~]#mkdir bin /data
    
    [root@Linux.net: ~]#chown -R root.root dir
    

    3.2 chgrp(change group)

    # 1,创建文件和目录
    [root@Linux.net: ~]#mkdir /data2
    #2,修改所属组为`adm`
    [root@Linux.net: ~]#mkdir ,adm /data
    #3,修改目录所属主为`root`,所属组为`root`,并进行递归授权
    
    • 进程能够以一种什么样的方式去访问一个文件,取决与这个进程所运行的身份对这个文件或者目录有什么样的权限。

    4,文件特殊权限
    linux中,每个普通用户都可以更改自己的密码,这是合理的设置;但是用户的密码信息存储在/etc/shadow文件中,也就是说,普通用户在更改自己的面膜时会跟新/etc/shadow文件的内容。
    /etc/shadow文件是不允许任何人修改的,那为什么普通用户可以修改自己的权限呢?

    [root@Linux.net: ~]#ll /etc/shadow
    ----------. 1 root root 1158 Jul 18 15:01 /etc/shadow
    
    

    其实,普通用户可以修改自己的密码在于passwd命令本身,该命令拥有特殊权限SetUID也就是在属主的权限位的执行权限上是s。我们可以这样理解特殊权限SetUID:当一个执行文件设置SetUID后,用户在执行这个文件时将以文件所有者的身份来执行。

    4,1,SUID配置语法

    [root@Linux.net: ~]#chmod u+s /usr/bin/cat
    [root@Linux.net: ~]#chmod 4755/usr/bin/cat
    
    

    SUID作用总结

    • 1,让普通用户对可执行的二进制文件,临时拥有二级制文件的所属主权限
    • 2,如果设置的二进制文件没执行权限,那么SUID的权限就大S
    • 3,特殊权限suid仅对二进制可执行程序有效,其他文件或目录无效
    • 4,suid 相对危险,不建议对vim和rm进行suid设定操作

    4.2特殊权限SGID

    • SGID:
    • 1,设置二进制可执行文件,命令在执行的过程中,会以命令的属组身份运行命令。
    • 2,设置在目录上,这时候在该目录下新建的文件/目录自动继承父目录属组

    4.2.1 SGID配置语法

    [root@Linux.net: ~]chmod g+s  /dir
    [root@Linux.net: ~]chmod 2755  /dir
    
    

    4.2.2SGID场景模拟

    • 需求:

    系统用户有两个用户,分别位ex1,ex2,这两个用户都拥有example
    1,这两个用户需要共同拥有/data/code目录的开发权;
    2,互相之间能修改彼此的文件,且该目录不允许其他人进入查阅

    [root@Linux.net: ~]#groupadd example
    [root@Linux.net: ~]#useradd ex1 -G example
    [root@Linux.net: ~]#useradd ex2 -G example
    
    
    [root@Linux.net: ~]#mkdir /data/code
    [root@Linux.net: ~]#chgrp project /data/code/
    [root@Linux.net: ~]#chmod 770 /data/code/ #可省略
    [root@Linux.net: ~]#chmod 2770 /data/code/
    
    

    4.3特殊权限SBIT

    • 什么是SBIT

    一旦目录被赋予了粘滞位sticky(SI TI KI),普通用户对该文件拥有w权限,也只能删除自己创建的文件,不可以删除别人创建的文件。root可以删除目录中的所有文件

    4.3.1SBIT配置示例

    • 需求:默认情况下/mnt不是粘滞位,如何将此目录设置为粘滞位;
    [root@Linux.net: ~]#chmod o+t /mnt
    [root@Linux.net: ~]#chmod 1755 /mnt
    
    

    4.3.1 SBIT作用总结

    • 1,让所有普通用户对该目录具有写入权限,并且能实现每个用户只能删自己的我文件

    • 2,粘滞位目录表现在othersx位,用t表示,如果没有执行权限则表示为T

    • 3,粘滞位目录的属主以及root用户有权限删除目录中的内容,其他用户无权限删除。

    5,特殊属性

    • 什么是特殊属性:这类文件属性凌驾于rwx基础权限之上,是一种高级属性

    5.1 特殊属性的作用

    • 1,创建一个文件,不允许被修改、移动、删除、包括root也不行--->适合/etc/passwd
    • 2,创建一个文件,仅允许往文件里追加数据,不允许修改、移动、删除、--->适合sudo审计日志。

    5.2 特殊属性如何配置

    • linux系统通过chattr来实现特殊属性的配置
    • 命令格式: chattr[+-=] [选项] 文件或者目录名
    • a:可对文件进行追加内容;
    • i:锁定文件,不允许其他操作;
    
    #配置`/etc/passwd`文件,不可改,不可追加,不可删除
    
    [root@Linux.net: ~]# chattr +i /etc/passwd
    [root@Linux.net: ~]#rm -f /etc/passwd
    rm: cannot remove ‘/etc/passwd’: Operation not permitted
    
    #配置`/var/log/secure`文件,只能追加写入日志,不允许手动修改,也不允许删除
    [root@Linux.net: ~]#chattr +a /var/log/secure
    [root@Linux.net: ~]#lsattr /var/log/secure
    -----a---------- /var/log/secure
    
    #追加试试
    [root@Linux.net: ~]#echo "test" >> /var/log/secure
    [root@Linux.net: ~]#echo "test" >> /var/log/secure
    #删除,修改操作都不可以
    [root@Linux.net: ~]#rm -f /var/log/secure
    rm: cannot remove ‘/var/log/secure’: Operation not permitted
    
    
    • 5.3取消特殊属性
    [root@Linux.net: ~]#chattr -i /etc/passwd
    [root@Linux.net: ~]#chattr -a /var/log/secure
    
    

    6,文件默认权限

    • 默认权限: 指用户在创建文件或目录时,默认分配给文件或目录的访问权限;
    • 默认权限有什么用

    6.1系统默认权限配置文件

    • 为什么默认root用户的UMASK022

    1,当用户登录系统时,会加载/etc/profile环境变量文件;
    2.在该配置文件中有一条UMASK的判断语句;如果用户UID小于199,将UMASK初始化为022
    如果用户UID大于199并且组名称和用户名称一致,那么就将UMASK初始化为002

    • UMASK判断语句如下:
    
    [root@Linux.net: ~]vim /etc/profile
    
    
    if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
        umask 002
    else
        umask 022
    fi
    
    
    

    6.2 默认权限的计算公式

    #1,假设umask值为:022(所有位为偶数)
    #文件的起始权限值
     666 - 022 = 644
     777 - 022 = 755
    
    
    #2.假设umask值为:045(其他用户组位为奇数)
    #计算出来的权限。由于umask的最后一位数字是5,所以。在其他用户组位再加1.
    666 - 045 = 621 + 1 = 622
    777 - 045 = 732
    
    #umask所有位全位偶数
    #umask 044
    #mkdir d044 目录权限为 777 -044 =733
    #touch f044 文件权限为 666 - 044 = 622
    
    
    
    #umask所有位全位奇数
    #umask 023
    #mkdir d023  目录权限为 777 -023 =754
    #touch f023文件权限为 666 - 023 = 643+001 = 644
    
    
    #umask部分位全位为偶数时
    
    #umask 032
    #mkdir d032  目录权限为 777 -023 =745
    #touch f032  文件权限为 666 - 023 = 634+010 = 644
    
    #umask所有位全位为奇数时
    
    #umask 035
    #mkdir d035  目录权限为 777 -035 =742
    #touch f035 文件权限为 666 - 035 =631 + 011 =642
    
    
  • 相关阅读:
    winform+c#之窗体之间的传值 Virus
    ASP.NET 2.0 利用 checkbox获得选中行的行号, 在footer中显示 Virus
    .NET中的winform的listview控件 Virus
    我的书橱
    Expert .NET 2.0 IL Assembler·译者序一 写在一稿完成之即
    Verbal Description of Custom Attribute Value
    AddressOfCallBacks in TLS
    下一阶段Schedule
    2008 Oct MVP OpenDay 第二天 博客园聚会
    2008 Oct MVP OpenDay 第二天 颁奖·讲座·晚会
  • 原文地址:https://www.cnblogs.com/qinghuani/p/15026411.html
Copyright © 2020-2023  润新知