03.linux系统特殊权限

本文介绍了Linux系统中的特殊权限,包括SUID(使执行者获得文件所有者的权限)、SGID(保持目录下新文件的组权限)和Sticky位(保护目录中的文件不被其他用户删除)。通过实例演示了如何设置和使用这些权限,并讨论了它们在系统安全中的重要性。同时提到了进程掩码umask对文件和目录默认权限的影响。
摘要由CSDN通过智能技术生成
  1. 1.Linux系统特殊权限

    1.suid以文件的所属用户身份执行命令, 而不是以当前用户的身份执行命令

    -rwsr-xr-x. 1 root root 54080 Nov 5 2016 /usr/bin/cat

    root用户执行cat,最终运行的身份是root

    bgx用户执行cat,最终运行的身份是bgx

    suid

    root用户执行,最终运行的身份是root

    bgx用户执行,最终运行的身份是root

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

    drwxr-srwx. 2 root devops 29 Jun 1421:01 /opt/

    bgx用户登陆后, 在/opt/目录创建文件或者目录属主和属组是

    最终属主和属组 bgx devops

    xlw用户登陆后, 在/opt/目录创建文件或者目录属主和属组是

    最终属主和属组 xlw devops

    root用户登陆后, 在/opt/目录创建文件或者目录属主和属组是

    最终属主和属组 root devops

    3.sticky任何人都可以在该目录下创建文件以及目录, 但只能删除自己创建的文件和目录

    drwxrwxrwt. 7 root root 93 Jun 14 21:47 /tmp/

    4.如何设置特殊权限

    用符号表示: setuid=u+s; setgid=g+s; sticky=o+t用数值表示: setuid=4; setgid=2; sticky=1

  2. 1.1set_uid

    文件的执行有效身份为文件的拥有者,而不是执行者的身份。

    %title插图%num

    演示

    //检查passwd文件权限,匿名用户没有权限查看

    [root@lxgyw ~]# chmod 640 /etc/passwd

    [root@lxgyw ~]# ll /etc/passwd

    -rw-r----- 1 root root 1548 Dec 918:45 /etc/passwd

    //使用普通用户无法查看

    [lxgyw@lxgyw root]$ cat /etc/passwd

    cat: /etc/passwd: Permission denied

    //给cat命令赋予suid

    [root@lxgyw ~]# chmod 4755 /bin/cat

    [root@lxgyw ~]# ll /bin/cat

    -rwsr-xr-x. 1 root root 48568 Mar 232017 /bin/cat

    suid授权方法

    suid 4000权限字符s(S),用户位置上的x位上设置。

    授权方法:chmod4755 passwd

    chmod u+s passwd

    suid的作用

    1.让普通用户拥有二进制文件的所属主权限,二进制文件需要有执行权限。
    2.如果设置的二进制文件没有执行权限,那么suid的权限显示就是大S。
    3.特殊权限suid仅对二进制可执行程序有效,其他文件或目录则无效。
    4.如果普通用户需要操作没有权限的文件,为对应的命令赋予Suid权限。注意: suid双刃剑, 是一个比较危险的功能, 对系统安全有一定的威胁。

  3. 1.2set_gid

    演示案例

    [root@lxgyw /]# chmod 777 /opt/

    [root@lxgyw /]# chmod g+s /opt/

    [root@lxgyw /]# su - lxgyw

    [lxgyw@lxgyw ~]$ mkdir /opt/sgid_test

    [lxgyw@lxgyw ~]$ ll /opt/sgid_test -d

    drwxrwsr-x. 2 lxgyw root 4096Nov1400:27 /opt/sgid_test

    sgid授权方法

    suid 2000权限字符s(S),取决于属组位置上的x

    授权方法:chmod2755 directory

    chmod g+s directory

    sgid作用

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

  4. 1.3sticky粘滞位

    sticky对目录有写权限的用户仅仅可以删除目录里属于自己的文件,不能删除其他用户的文件系统中存在的/tmp目录是经典的粘滞位目录,谁都有写权限,因此安全成问题,常常是木马第一手跳板。

    sticky授权方法

    粘滞位1000权限字符t(T),其他用户位的x位上设置。

    授权方法:chmod1755 /tmp

    chmod o+t /tmp

    sticky作用

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

  5. 2.权限属性chattr

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

    a:让文件或目录仅可追加内容

    i:不得任意更动文件或目录

    //创建文件并设置属性

    [root@lxgyw ~]# touch file_a file_i

    [root@lxgyw ~]# lsattr file_a file_i

    ---------------- file_a

    ---------------- file_i

    //设置属性

    [root@lxgyw ~]# chattr +a file_a

    [root@lxgyw ~]# chattr +i file_i

    [root@lxgyw ~]# lsattr file_a file_i

    -----a---------- file_a

    ----i----------- file_i

    //a权限, 无法覆盖写入和删除文件

    [root@lxgyw ~]# echo "aa" > file_a

    bash: file_a: Operation not permitted

    [root@lxgyw ~]# rm -f file_a

    rm: cannot remove 'file_a': Operation not permitted

    //a权限, 只能追加, 适用于日志文件

    [root@lxgyw ~]# echo "aa" >> file_a

    //i权限, 无法写入, 无法删除

    [root@lxgyw ~]# echo "i" > file_i

    bash: file_i: Permission denied

    [root@lxgyw ~]# echo "i" >> file_i

    bash: file_i: Permission denied

    [root@lxgyw ~]# rm -f file_i

    rm: cannot remove 'file_i': Operation not permitted

    //解除限制

    [root@tianyun ~]# chattr -a file100

    [root@tianyun ~]# chattr -i file200

  6. 3.进程掩码umask

    umask用于控制系统权限, 默认系统权限较大, 需要靠Umask来变更权限默认新建文件,系统默认最大权限为666默认新建目录,系统默认最大权限是777

    我们在新建文件和目录的默认权限会受到umask的影响, umask表示要减掉的权限。创建目录权限值为777-umask创建普通文件权限值为644-umask

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

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

    1.假设umask值为:022(所有位为偶数)

    //文件的起始权限值

    666 - 022 = 644

    2.假设umask值为:045(其他用户组位为奇数)

    //计算出来的权限。由于umask的最后一位数字是5,所以,在其他用户组位再加1。

    666  -   045 = 621

    3.默认目录权限计算方法

    777  -  022 = 755

    umask044 //umask所有位全为偶数时

    示例:mkdir d044 //目录733

    示例:touch f044 //文件622

    umask023 //umask值的部分或全部位为奇数时

    示例:mkdir d023 //目录754

    示例:touch f023 //文件644

    umask035 //umask值的所有位为奇数时

    示例:mkdir d035 //目录742

    示例:touch f035 //文件642

    示例1: 在shell进程中创建文件

    //查看当前用户的umask权限

    [root@lxgyw ~]# umask

    0022

    [root@lxgyw ~]# touch file0022

    [root@lxgyw ~]# mkdir dir0022

    [root@lxgyw ~]# ll -d file0022 dir0022/

    drwxr-xr-x2 root root 6 Jan 24 09:02 dir0022/

    -rw-r--r-- 1 root root 0 Jan 24 09:02 file0022

    示例2: 修改shell umask值(临时生效)

    [root@lxgyw ~]# umask 000

    [root@lxgyw ~]# mkdir dir000

    [root@lxgyw ~]# touch file000

    [root@lxgyw ~]# ll -d dir000 file000

    drwxrwxrwx 2 root root 6 Jan 2409:04 dir000

    -rw-rw-rw- 1 root root 0 Jan 2409:04 file000

    示例3: 修改shell umask值(永久生效, 强烈不建议修改)

    [root@lxgyw ~]# vim /etc/profile

    if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then

    umask002

    else

    umask022

    fi

    //立即在当前 shell 中生效

    [root@lxgyw ~]# source /etc/profile

    示例4: 通过umask决定新建用户HOME目录的权限

    [root@lxgyw ~]# vim /etc/login.defs

    UMASK 077

    [root@lxgyw ~]# useradd dba

    [root@lxgyw ~]# ll -d /home/dba/

    drwx------. 4 dba dba 40963月1119:50 /home/dba/

    [root@tianyun ~]# vim /etc/login.defs

    UMASK 000

    [root@lxgyw ~]# useradd sa

    [root@lxgyw ~]# ll -d /home/sa/

    drwxrwxrwx. 4 sa sa 40963月1119:53 /home/sa/

    示例 5:例如vsftpd进程/etc/vsftpd/vsftpd.conf

    [root@tianyun ~]# yum -y install vsftpd

    [root@tianyun ~]# man vsftpd.conf

    anon_umask

    local_umask

  7. 4.特殊权限练习题

    lab permissions setup

    考试必考: 创建三个用户, 分别为curlylarrymoe这些用户都是stooges组的成员。这些用户帐号密码都为password
    1.要求以上用户和组可以在/home/stooges目录里访问,创建,删除文件
    2.其他用户一律不允许访问该目录
    3.在该目录下新建的文件会自动属于stooges组拥有

    //创建用户,组

    useradd curly

    useradd larry

    useradd moe

    groupadd stooges

    //创建密码

    echo"password" |passwd --stdin moe

    echo"password" |passwd --stdin larry

    echo"password" |passwd --stdin curry

    //将用户加组

    gpasswd -a larry stooges

    gpasswd -a moe stooges

    gpasswd -a curly stooges

    //创建目录并配置权限

    mkdir /home/stooges

    chmod 770 /home/stooges

    chown .stooges /home/stooges

    chmod g+s /home/stooges

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭亚望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值