zoukankan      html  css  js  c++  java
  • Linux权限管理---特殊权限

    Linux权限管理---特殊权限

    一、Linux系统特殊权限概述

    除了r(读)、 w(写)、 x(执行)这三种普通权限外,在查询系统文件权限时会发现还有其他的权限字母。

    例如:
    [root@centos7 ~]# ll /usr/bin/passwd
    -rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd
    [root@centos7 ~]# ll /usr/bin/write
    -rwxr-sr-x. 1 root tty 19624 Oct 31  2018 /usr/bin/write
    [root@centos7 ~]# ll /tmp/ -d
    drwxrwxrwt. 7 root root 145 Jul  2 20:18 /tmp/
    
    

    二、特殊权限suid介绍

    1.SUID权限(4000)

    在Linux系统中,每个普通用户都可以更改自己的密码,这是合理的设置,问题是,普通用户的信息保存在 /etc/passwd文件中,用户的密码在 /etc/shadow 文件中,也就是说,普通用户在更改自己密码时,修改了 /etc/shadow 文件中的加密密码,但是文件权限显示。普通用户对这两个文件都没有写权限。

    [root@centos7 ~]# ll /etc/passwd /etc/shadow
    -rw-r--r--. 1 root root  997 Jul  2 10:28 /etc/passwd
    ----------. 1 root root 1084 Jul  2 10:28 /etc/shadow
    

    因为passwd命令有SetUID权限,所以不能查看/etc/shadow文件内容,因为查看文件的命令,例如,cat,没有SetUID权限:

    示例:
    #创建lamp用户
    [root@centos7 ~]# useradd lamp
    #给密码1
    [root@centos7 ~]# echo 1 |passwd --stdin lamp
    Changing password for user lamp.   #更改用户lamp的密码
    passwd: all authentication tokens updated successfully.       #所有的身份验证令牌已经成功更新。
    
    #切换lamp用户
    [root@centos7 ~]# su - lamp
    
    #修改密码,至少8位
    [lamp@centos7 ~]$ passwd
    
    #查看/etc/shadow
    [lamp@centos7 ~]$ cat /etc/shadow
    cat: /etc/shadow: Permission denied    #没有权限
    
    
    #给cat命令授权 SetUID 权限
    [root@centos7 ~]# chmod 4755 /bin/cat
    #查看cat权限
    [root@centos7 ~]# ll /bin/cat
    -rwsr-xr-x. 1 root root 48568 11月 22 2013 /bin/cat
    #切换用户
    [root@centos7 ~]# su - lamp
    
    #再次查看/etc/shadow
    [lamp@centos7 ~]$ cat /etc/shadow
    root:$6$TBgaEEzA$TZLUb9QLtM26nvQwjfALLeubnlg1Y1TJLiwcfYxzsZthSmTZmCkg3osOJn1rAAmTVuWsI0H.OTLVanAej2Jdl0:18067:0:99999:7:::
    

    2.授权SUID

    SUID(4000):会在属主权限位的执行权限上写个s
    如果该属主权限位上有执行权限,则:s
    如果该属主权限位上没有执行权限,则:S
    
    授权方式:
    chmod u+s filename
    chmod 4755 filename
    
    示例:
    [root@centos7 ~]# touch filename     #创建文件
    [root@centos7 ~]# ll filename          #查看文件
    -rw-r--r--. 1 root root 0 Jul  2 23:02 filename
    [root@centos7 ~]# chmod u+s filename     #授权权限
    [root@centos7 ~]# ll filename            #查看文件
    -rwSr--r--. 1 root root 0 Jul  2 23:02 filename
    
    

    3.SUID总结:

    1.让普通用户对可执行的二进制文件,临时拥有二进制文件的属主权限
    2.如果设置的二进制文件没有执行权限,那么suid的权限显示就是S
    3.特殊权限suid仅对二进制可执行程序有效,其他文件或目录则无效

    注意:suid极其危险,不信可以尝试对vim或者rm命令进行设定suid

    三、特殊权限sgid介绍

    1.SGID权限(2000)

    将目录设置为SGID后,如果在该目录下创建文件,都将与该目录的所属组保持一致

    [root@oldboyedu ~]# ll /bin/write 
    -rwxr-sr-x. 1 root tty 19624 Oct 31  2018 /bin/write
    

    2.sgid权限设置

    如果该属组权限位上有执行权限,则:s
    如果该属组权限位上没有执行权限,则:S
    
    [root@centos7 ~]# chmod 2755 /tmp/test/
    [root@db04 ~]# chmod g+s /tmp/test/
    
    [root@centos7 ~]# mkdir /tmp/test/      #创建目录
    [root@centos7 ~]# ll /tmp/              #查看目录
    drwxr-xr-x. 2 root root      6 Jul  2 23:11 test
    [root@centos7 ~]# chmod 2755 /tmp/test/   #权限设置
    [root@centos7 ~]# ll /tmp/                #查看目录
    drwxr-sr-x. 2 root root      6 Jul  2 23:11 test
    

    3.sgid作用:

    SetGID的作用
    1.针对用户组权限位修改,用户创建的目录或文件所属组和该目录的所属组一致。
    2.当某个目录设置了sgid后,在该目录中新建的文件不在是创建该文件的默认所属组
    3.使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单。
    

    四、特殊权限sbit介绍

    sticky(SI TI KI)粘滞,目前只对目录有效,作用如下:

    普通用户对该目录拥有w和x权限,即普通用户可以在此目录中拥有写入权限,如果没有粘滞位,那么普通用户拥有w权限,就可以删除此目录下的所有文件,包括其他用户简历的文件。但是一旦被赋予了粘滞位,除了root可以删除所有文件,普通用户就算有w权限也只能删除自己建立的文件,而不能删除其他用户简历的文件。

    系统中存在的/tmp目录是经典的粘滞位目录,谁都有写权限,因此安全成问题,常常是木马第一手跳板

    1.sticky授权方法

    粘滞位:
    [root@oldboyedu ~]# ll -d /tmp/
    drwxrwxrwt. 8 root root 105 Jul  2 10:15 /tmp/
        
    如果该其他用户权限位上有执行权限,则:t
    如果该其它用户权限位上没有执行权限,则:T
    
    授权方式:
    [root@centos7 ~]# chmod 1755 /opt
    [root@centos7 ~]# chmod o+t /opt
    

    2.sticky的作用:

    1.让多个用户都具有写权限的目录,并让每个用户只能删自己的文件。
    2.特殊sticky目录表现在others的x位,用小t表示,如果没有执行权限是T
    3.一个目录即使它的权限为"777"如果是设置了粘滞位,除了目录的属主和"root"用户有权限删除,除此之外其他用户都不允许删除该目录。

    五、特殊权限总结:

    1.SUID
    主要是对命令,或者二进制文件,以该二进制文件的属主权限来执行该文件  命令:passwd
    
    2.SGID
    主要是针对目录进行授权,共享目录
    
    3.SBIT
    粘滞位,即便是该目录拥有w权限,但是除了root用户,其他用户只能对自己的文件进行删除、移动操作
    
    一个普通用户:zls 属于 oldboyedu这个组
    一个文件权限:rwxrw-r-x root.oldboyedu  filename1
    
    r:读 4
    w:写 2
    x:执行 1
    suid:4000
    sgid:2000
    t:1000
    

    六、linux权限属性chattr概述

    1.chattr

    只有root用户可以使用,用来修改文件系统的权限属性,凌驾于r w x suid sgid t 之上的权限

    chattr命令格式:[root@db04 ~]# #chattr [+-=][选项] 文件名或目录名

    设置文件属性(权限),针对所有用户,包括 root

    lsattr:
    查看特殊权限
    chattr:
    设置特殊权限
    i:锁定文件,不能编辑,不能修改,不能删除,不能移动,可以执行
    a:仅可以追加文件,不能编辑,不能删除,不能移动,可以执行
    #+增加选项   -减少选项    =等于某个权限
    
    #创建文件并设置属性
    [root@centos7 ~]# touch file_a file_i
    [root@centos7 ~]# lsattr file_a file_i
    ---------------- file_a
    ---------------- file_i
    
    #设置属性
    [root@centos7 ~]# chattr +a file_a
    [root@centos7 ~]# chattr +i file_i
    [root@centos7 ~]# lsattr file_a file_i
    -----a---------- file_a
    ----i----------- file_i
    
    #a权限,无法覆盖写入和删除文件
    [root@centos7 ~]# echo 111 > file_a
    -bash: file_a: Operation not permitted
    [root@centos7 ~]# rm -f file_a
    rm: cannot remove ‘file_a’: Operation not permitted
            
    #a权限,只能追加,适用于日志文件        
    [root@centos7 ~]# echo 111 >> file_a
    [root@centos7 ~]# cat file_a
    111
    
    # i权限,无法写入,无法删除
    [root@centos7 ~]# echo 111 > file_i
    -bash: file_i: Permission denied
    [root@centos7 ~]# echo 111 >> file_i
    -bash: file_i: Permission denied
    [root@centos7 ~]# rm -f file_i
    rm: cannot remove ‘file_i’: Operation not permitted
    [root@centos7 ~]# chattr -a file100
    chattr: No such file or directory while trying to stat file100
    #解除限制    
    [root@centos7 ~]# chattr -a file_a
    [root@centos7 ~]# chattr -i file_i
    #再次查看文件及属性
    [root@centos7 ~]# lsattr file_a file_i
    ---------------- file_a
    ---------------- file_i
    
    
    

    七、Linux进程掩码umask

    1.什么是umask

    当我们登录系统之后,创建一个文件总是有一个默认权限,比如:
    目录默认权限:755
    文件默认权限:644

    是umask设置了用户创建文件的默认权限

    2.umask是如何改变新文件的权限

    系统默认umask为022,那么当我们创建一个目录时,正常情况下目录的权限应该是777,但是umask表示要减去的值,所以新目录文件的权限应该是777-022=755。至于文件的权限也依次类推:666-022=644

    3.umask涉及到的配置文件

    umask涉及到的相关文件/etc/bashrc /etc/profile ~/.bashrc ~/.bash_profile

    注意umask影响的范围
    shell (vim,touch) --umask--> 新文件或目录权限
    vsftpd --umask--> 新文件或目录权限
    samba --umask--> 新文件或目录权限
    useradd --umask--> 用户 HOME
    

    示例:

    1.假设umask值为:022(所有位为偶数)
    //文件的起始权限值
    6 6 6  -  0 2 2  = 6 4 4 
    
    2.假设umask值为:035(其他用户组位为奇数)
    //计算出来的权限。
    6 6 6  -   0 3 5 = 6 3 1  ,
    如果结果是奇数,需加1,实为642
    所以,在其他用户组位再加1。
    
    3.默认目录权限计算方法
    7 7 7  -  0 2 2 = 7 5 5
    

    在shell进程中创建文件

    #查看当前用户的umask权限
    [root@centos7 ~]# umask
    0022
    [root@centos7 ~]# touch file0022
    [root@centos7 ~]# mkdir dir0022
    [root@centos7 ~]# ll -d file0022  dir0022/
    drwxr-xr-x 2 root root 6 Jan 24 09:02 dir0022/
    -rw-r--r-- 1 root root 0 Jan 24 09:02 file0022
    

    修改umask值,临时生效,再开机会回到默认值

    [root@centos7 ~]# umask 000
    [root@centos7 ~]# mkdir dir000
    [root@centos7 ~]# touch file000
    [root@centos7 ~]# ll -d dir000 file000
    drwxrwxrwx 2 root root 6 Jan 24 09:04 dir000
    -rw-rw-rw- 1 root root 0 Jan 24 09:04 file000
    
  • 相关阅读:
    持续交付11-构建和部署的脚本化
    腾讯云即时通讯IM 公共整合
    腾讯云应用生成 UserSig
    「USACO 2020 US Open Platinum」Exercise
    async要点
    jQuery实现textarea高度根据内容自适应
    背景图片设置透明度而不改变内容
    input type=file实现图片上传,预览以及图片删除
    vant 字体图标不显示问题
    vue项目使用mock.js
  • 原文地址:https://www.cnblogs.com/gongjingyun123--/p/11122946.html
Copyright © 2011-2022 走看看