Linux 特殊权限 SUID SGID SBIT Chattr

特殊权限

1.特殊权限 — SUID

1.问题环境

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

2.解决方案

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

PS: 当普通用户使用 passwd 命令更改自己的密码时,实际上是在用 passwd 命令所有者 root 的身份在执行 passwd 命令,root 当然可以将密码写入/etc/shadow 文件,所以普通用户也可以修改/etc/shadow 文件,命令执行完成后,该身份也随之消失。

3.SUID授权方法

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

授权方法:

chmod 4755 filename
chmod u+s filename

SUID的总结

1.让普通用户对可执行的二进制文件,临时拥有二进制文件的所属主权限。

2.如果设置的二进制文件没有执行权限,那么SUID的权限显示就是大S。

3.特殊权限SUID仅对二进制可执行程序有效,其他文件或目录则无效。

注意: SUID极度危险,不信可以尝试对vim或rm进行设定SUID。

2.特殊权限 SGID

SGID的作用

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

2.目录里新建的文件的拥有组会自动继承目录的拥有组身份

设置SGID

sgid 2000 权限字符s(S) 用户位置上的x位上设置

授权方法:

chmod 2755 directory
chmod g+s directory

SGID 总结

1.针对用户组权限位修改,用户创建的目录或文件所属组和该目录的所属组一致。

2.当某个目录设置了SGID后,在该目录中新建的文件不在是创建该文件的默认所属组

3.使用SGID可以使得多个用户之间共享一个目录的所有文件变得简单。

3.特殊权限 SBIT

1.SBIT作用

SBIT,即Sticky Bit,对目录有写权限的用户仅仅可以删除目录里属于自己的文件,不能删除其他用户的文件

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

2.SBIT的授权方法

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

授权方式:

chmod  1755 directory
chmod  o+t   directory

1.让多个用户都具有写权限的目录,并让每个用户只能删自己的文件。

2.特殊sticky目录表现在others的x位,用小t表示,如果没有执行权限是T

3.一个目录即使它的权限为"777"如果是设置了粘滞位,除了目录的属主和"root"用户有权限删除,除此

之外其他用户都不允许删除该目录

4.权限属性chattr

chatrr只有root用户可以使用,用来修改文件系统的权限属性。凌驾与rwx基础权限上的授权(设置同时对管理员生效)

查看lsattr 修改chattr +-i 锁住文件,不能做任何修改 +-a 锁住文件,只能追加内容

[root@localhost ~]# touch 22.txt
[root@localhost ~]# lsattr 22.txt
---------------- 22.txt
[root@localhost ~]# chattr +i 22.txt
[root@localhost ~]# lsattr 22.txt
----i----------- 22.txt
[root@localhost ~]# echo 22 > 22.txt
-bash: 22.txt: 权限不够
[root@localhost ~]# cat 22.txt
[root@localhost ~]# echo 22 > 22.txt
-bash: 22.txt: 权限不够
[root@localhost ~]# rm -f 22.txt
rm: 无法删除"22.txt": 不允许的操作
[root@localhost ~]# chattr -i 22.txt
[root@localhost ~]# lsattr 22.txt
---------------- 22.txt

[root@localhost ~]# chattr +a 22.txt
[root@localhost ~]# lsattr 22.txt
-----a---------- 22.txt
[root@localhost ~]# echo 222> 22.txt
-bash: 22.txt: 不允许的操作

[root@localhost ~]# cat 22.txt
[root@localhost ~]# echo 222 >> 22.txt
[root@localhost ~]# cat 22.txt
222

5.权限掩码 umask

1.umask是什么

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

怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认权限。

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

系统默认umask为022,那么当我们创建一个目录时,正常情况下目录的权限应该是777,但umask表

示要减去的值,所以新目录文件的权限应该是777 - 022 =755。至于文件的权限也依次类推666 - 022

=644。

3.umask涉及哪些配置文件

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

shell (vim,touch) --umask--> 会影响创建的新文件或目录权限

useradd如果修改umask--> 会影响用户HOME家目录权限

vsftpd服务如果修改--umask--> 会影响ftp服务中新创建文件或创建目录权限

4.umask 演示案例

1)目录:777-umask

文件分奇数和偶数

奇数:用7减

偶数:用6减

问题:umask=023,请问默认创建目录和文件的权限是多少 目录: 777-023=754 文件: 667-023=644

问题:umask=034,请问默认创建目录和文件的权限是多少 目录:777-034=743 文件:676-034=642

常用的umask:077 007 027

077

目录 777-077=700

文件 677-077=600

007

目录 777-007=770

文件 667-007=660

027

目录 777-027=750

文件667-027=640

6.FACL概述

前面我们学习了一般权限、特殊权限,但所有的权限是针对某一类用户设置的, 如果希望对某个指定的用户进行单独的权限控制, 就需要用到文件的访问控制列表(FACL)

设定 Facl 只能是 root 管理员用户. 相关命令: getfacl, setfacl

设置FACL setfacl setfacl [选项] [ugm]:[用户名]:[rwx] [目标文件名] 选项: -m 设置acl参数 -x 删除acl参数 -b 清除全部acl参数 -R 递归 -d 设置默认acl,需要与m结合使用 -k 删除默认的acl参数

[root@localhost /]# ll -d /11.txt
-rwxrwx---. 1 tom admin 0 9月  26 17:06 /11.txt
[root@localhost /]# setfacl -m u:mary:rw 11.txt
[root@localhost /]# setfacl -m u:jack:r 11.txt
[root@localhost /]# ll -d /11.txt
-rwxrwx---+ 1 tom admin 0 9月  26 17:06 /11.txt
[root@localhost /]# getfacl /11.txt
getfacl: Removing leading '/' from absolute path names
# file: 11.txt
# owner: tom
# group: admin
user::rwx
user:mary:rw-
user:jack:r--
group::rwx
mask::rwx
other::---
​

7.FACL高级特性 MASK

mask 权限,指的是用户或群组能拥有的最大 ACL 权限,也就是说,给用户或群组设定的 ACL 权限不能超过 mask 规定的权限范围,超出部分做无效处理。mask用于临时降低用户或组的权限,但不包括文件的所有者和其他人。

mask最主要的作用是用来决定用户的最高权限。

# setfacl -m mask:r /test/test.txt
# getfacl /test/test.txt
# file: test/test.txt
# owner: root
# group: root
user::rw-
user:test:---
user:tanfei:rw- #effective:r-- //mask权限是只读,所以生效的只有读权限
group::r--
group:devops:r--
mask::r--
other::rw-

8.FACL高级特性 Default

Default默认ACL权限的作用是如果给们目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限

//赋予用户 zmj 对以后在/opt 下新建的文件有读写执行权限
# setfacl -m d:u:zmj:rwx /opt

补充:

文件的权限对文件的内容生效 文件r 可以对文件使用cat等查看类的命令 文件w 可以对文件使用vi、echo >等编辑文件内容的命令 文件x 可以使用文件的绝对路径或相对路径来运行 文件r大于文件wx权限

目录的权限对目录的内容生效 目录r 可以对目录使用ls命令 目录w 可以对目录里的子目录和文件使用touch、rm、mv、cp、mkdir命令 目录x 可以对目录使用cd命令 目录x大于目录rw权限

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值