• linux权限管理-特殊权限


    linux权限管理-特殊权限

    一,特殊权限

    1.suid(4000)

    SetUID(suid):会在属主权限位的执行权限上写个s
    如果该属主权限位上有执行权限,则:s
    如果该属主权限位上没有执行权限,则:S

    授权方式

    chmod u+s filename
    chmod 4755 filename
    

    setuid总结:

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

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

    setgid(sgid):会在属组权限位的执行权限上写个s
    如果该属组权限位上有执行权限,则:s
    如果该属组权限位上没有执行权限,则:S

    授权方式

    [root@db04 ~]# chmod 2755 /tmp/test/
    [root@db04 ~]# chmod g+s /tmp/test/
    

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

    3. sbit

    粘滞位:

    [root@oldboyedu ~]# ll -d /tmp/
    drwxrwxrwt. 8 root root 105 Jul  2 10:15 /tmp/
    

    ​ 如果该其他用户权限位上有执行权限,则:t
    ​ 如果该其它用户权限位上没有执行权限,则:T

    授权方式:

    [root@db04 ~]# chmod 1755 /opt
    [root@db04 ~]# chmod o+t /opt
    

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

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

    特殊权限总结

    • SUID

      主要是对命令,或者二进制文件,以该二进制文件的属主权限来执行该文件 命令:passwd

    • 2.SGID
      主要是针对目录进行授权,共享目录

    • 3.SBIT
      粘滞位,即便是该目录拥有w权限,但是除了root用户,其他用户只能对自己的文件进行删除、移动操作

    一个普通用户:zls 属于 oldboyedu这个组
    一个文件权限:rwxrw-r-x root.oldboyedu filename1

    zls对文件的权限:rw-

    r:读

    w:写

    x:执行

    suid:4000

    sgid:2000

    t:1000

    Linux权限属性chattr概述

    chattr只有root用户使用,用来修改文件系统权限属性,建立凌驾于rwx基础权限之上的授权

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

    lsattr:查看特殊权限

    chattr:设置特殊权限

    i:锁定文件,不能编辑,不能修改,不能删除,不能移动,可以执行

    a:仅可以追加文件,不能编辑,不能删除,不能移动,可以执行

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

    #选项:+增加权限 -减少权限 =等于某个权限
    #a:让文件或目录仅可追加内容
    #i:不得任意更动文件或目录
    
    #创建文件并设置属性
    [root@zls ~]# touch file_a file_i
    [root@zls ~]# lsattr file_a file_i
    ---------------- file_a
    ---------------- file_i
    
    #设置属性
    [root@zls ~]# chattr +a file_a
    [root@zls ~]# chattr +i file_i
    [root@zls ~]# lsattr file_a file_i
    -----a---------- file_a
    ----i----------- file_i
    
    #a权限, 无法覆盖写入和删除文件
    [root@zls ~]# echo "aa" > file_a
    bash: file_a: Operation not permitted
    [root@zls ~]# rm -f file_a
    rm: cannot remove ‘file_a’: Operation not permitted
    
    #a权限, 只能追加, 适用于日志文件
    [root@zls ~]# echo "aa" >> file_a
    
    #i权限, 无法写入, 无法删除
    [root@zls ~]# echo "i" > file_i
    bash: file_i: Permission denied
    [root@zls ~]# echo "i" >> file_i
    bash: file_i: Permission denied
    [root@zls ~]# rm -f  file_i
    rm: cannot remove ‘file_i’: Operation not permitted
    
    #解除限制
    [root@zls ~]# chattr -a file100 
    [root@zls ~]# chattr -i file200
    

    linux进程掩码umask

    umask如何改变新文件权限

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

    umask涉及的配置文件

    /etc/bashrc
    
    /etc/profile
    
    ~/.bashrc
    
    ~/.bash_profile
    

    注意:

    umask影响的范围

    shell (vim,touch) --umask--> 新文件或目录权限
    vsftpd --umask--> 新文件或目录权限
    samba --umask--> 新文件或目录权限
    useradd --umask--> 用户 HOME
    

    1,在shell进程中创建文件

    //查看当前用户的umask权限
    [root@zls ~]# umask
    0022
    [root@zls ~]# touch file0022
    [root@zls ~]# mkdir dir0022
    [root@zls ~]# 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
    
    

    2,修改shell umask值(临时生效)

    [root@zls ~]# umask 000
    [root@zls ~]# mkdir dir000
    [root@zls ~]# touch file000
    [root@zls ~]# 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
    
    

    3,修改shell umask(永久生效,不建议)

    [root@zls ~]# vim /etc/profile
    if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then 
    umask 002
    else
    umask 022
    fi
    
    //立即在当前 shell 中生效
    [root@zls ~]# source /etc/profil
    
    
  • 相关阅读:
    【VS开发】如何判断客户端SOCKET已经断开连接?
    【VS开发】如何判断客户端SOCKET已经断开连接?
    【VS开发】从sockaddr中取得客户端或者数据源的Ip地址和端口号
    【VS开发】从sockaddr中取得客户端或者数据源的Ip地址和端口号
    【VS开发】IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)
    【VS开发】IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)
    【VS开发】最小化到托盘 shell_notifyicon和NOTIFYICONDATA
    【VS开发】最小化到托盘 shell_notifyicon和NOTIFYICONDATA
    【网络开发】winsock组播
    【网络开发】winsock组播
  • 原文地址:https://www.cnblogs.com/1naonao/p/11123293.html
Copyright © 2020-2023  润新知