• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
孙龙 程序员
少时总觉为人易,华年方知立业难
博客园    首页    新随笔    联系   管理    订阅  订阅
linux特殊权限suid,sgid,sbit

1,特殊权限SUID

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

举个例子:当我们使用普通用户oldxu执行passwd命令会发生什么变化呢?
   1.由于passwd命令拥有suid特殊权限(在命令属主权限位有一个s)
   2.所以passwd命令在执行的过程中,会以命令的属主身份去运行该命令。(也是root身份)
   3.oldxu --执行--> passwd命令 --setuid--> 转换为命令属主身份root执行 --> 完成 /etc/shadow 信息变更

 

chmod 4755
chmod u+s 

 




例子: jack --> /etc/shadow 文件:

1.jack执行cat命令查看 /etc/shadow;
2.cat是由jack运行的, 能不能查看,取决于 jack用户对 /etc/shadow 有没有权限;
3./etc/shadow默认任何人都无权限; 所以查看失败; 提示 Permission denied

解决:
方式1: sudo 提权
jack ALL=(ALL) /usr/bin/cat


方式2: 将cat命令添加特殊权限位 suid;

[root@oldboyedu ~]# ll /bin/cat
-rwxr-xr-x. 1 root root 54080 Aug 20 2019 /bin/cat

[root@oldboyedu ~]# chmod 4755 /bin/cat
[root@oldboyedu ~]# ll /bin/cat
-rwsr-xr-x. 1 root root 54080 Aug 20 2019 /bin/cat


1.jack运行-->cat命令-->由于有特殊权限位suid, 所以cat命令不在是以jack的身份运行,而是由命令的属主身份运行
2.由于命令属主的身份是root,所以执行该命令时的身份是root;
3.root用户能够查看/etc/shadow文件, 所以jack用户执行cat命令会成功查看;


常规权限: 让jack这个普通用户为tom用户添加一个新的附加组;
jack --> usermod --> /etc/passwd /etc/shadow /home /var/spool/mail

特殊权限: 为useradd命令增加setuid
jack --> useradd --> root --> /etc/passwd /etc/shadow /home /var/spool/mail

[root@oldboyedu ~]# ll /sbin/useradd
-rwxr-xr-x. 1 root root 137616 Aug 9 2019 /sbin/useradd

[root@oldboyedu ~]# chmod 4755 /sbin/useradd
[root@oldboyedu ~]# ll /sbin/useradd
-rwsr-xr-x. 1 root root 137616 Aug 9 2019 /sbin/useradd


取消特殊权限:
[root@oldboyedu ~]# chmod 0755 /sbin/usermod
[root@oldboyedu ~]# ll /sbin/usermod
-rwxr-xr-x. 1 root root 133456 Aug 9 2019 /sbin/usermod

[root@oldboyedu ~]# chmod u-s /sbin/useradd
[root@oldboyedu ~]# ll /sbin/useradd
-rwxr-xr-x. 1 root root 137616 Aug 9 2019 /sbin/useradd

rm,vim,

suid:不可以对目录执行,他只针对二进制文件; 命令

 

 setgid ( 了解 )

 

 

 

 

 

命令: 赋予setgid后, 任何用户在执行命令时,以这个命令的属组身份去运行;

目录: 赋予setgid后, 所有该目录下创建的文件,都按照属组的身份来;

用户 默认组 附加组
user1 user1 project
user2 user2 project

目录
/data/code

1.创建组, 以及用户
[root@oldboyedu ~]# groupadd project
[root@oldboyedu ~]# useradd user1 -G project
[root@oldboyedu ~]# useradd user2 -G project

2.创建项目目录,分配权限; 禁止其他人访问该目录,同时还要保证user1.user2能正常读写执行;
[root@oldboyedu ~]# chown .project /data/code/
[root@oldboyedu ~]# chmod 770 /data/code/
[root@oldboyedu ~]# ll -d /data/code/
drwxrwx--- 2 root project 6 Mar 17 10:47 /data/code/

3.给目录增加sgid;
[root@oldboyedu ~]# chmod 2770 /data/code/
[root@oldboyedu ~]# ll -d /data/code/
drwxrws--- 2 root project 24 Mar 17 10:52 /data/code/


4.user1创建文件.测试user2能否正常修改;
[user1@oldboyedu code]$ touch user1_file
[user1@oldboyedu code]$ ll
total 0
-rw-rw-r-- 1 user1 project 0 Mar 17 10:54 user1_file


5.测试user2修改文件; 属性没有发生变化
[user2@oldboyedu code]$ echo "aaa" > user1_file 
[user2@oldboyedu code]$ cat user1_file 
aaa
[user2@oldboyedu code]$ ll -d user1_file 
-rw-rw-r-- 1 user1 project 4 Mar 17 10:56 user1_file

 

 

setbit

 

 

 

1.服务初始化,会存储一些临时文件,而这个服务运行的身份不足以存储到/opt等这样的目录; /tmp目录
2.yum命令; /tmp

chmod o+s /tmp
chmod 1777 /tmp




特殊属性;
chattr
lsattr

i: 中毒后;由于病毒文件会不断串改文件; 加锁让其无法篡改;
a: append追加; 常用重要的日志文件加锁;


# 查看特殊属性
[root@oldboyedu ~]# lsattr /etc/passwd
---------------- /etc/passwd

# 加锁
[root@oldboyedu ~]# chattr +i /etc/passwd
[root@oldboyedu ~]# lsattr /etc/passwd
----i----------- /etc/passwd

# 测试
[root@oldboyedu ~]# mv /etc/passwd /tmp/
mv: cannot move ‘/etc/passwd’ to ‘/tmp/passwd’: Operation not permitted

[root@oldboyedu ~]# rm -f /etc/passwd
rm: cannot remove ‘/etc/passwd’: Operation not permitted

 

 特殊属性chattr

 

chattr
lsattr

i: 中毒后;由于病毒文件会不断串改文件; 加锁让其无法篡改;
a: append追加; 常用重要的日志文件加锁;


# 查看特殊属性
[root@oldboyedu ~]# lsattr /etc/passwd
---------------- /etc/passwd

# 加锁
[root@oldboyedu ~]# chattr +i /etc/passwd
[root@oldboyedu ~]# lsattr /etc/passwd
----i----------- /etc/passwd

# 测试
[root@oldboyedu ~]# mv /etc/passwd /tmp/
mv: cannot move ‘/etc/passwd’ to ‘/tmp/passwd’: Operation not permitted

[root@oldboyedu ~]# rm -f /etc/passwd
rm: cannot remove ‘/etc/passwd’: Operation not permitted

 

 umask进程掩码: 

1,umask是什么?

 

2,默认创建普通用户家目录的前线,又是受哪个配置文件的umask控制呢?

 

 

 

 

 3,默认情况下root用户创建的文件权限和普通用户创建的文件权限不一样的?为什么?

 

 

 

 

 

 

判断: 
        如果用户的UID大于199 并且 用户名称与组的名称一致,则执行then后面的代码;设定umask为002
        如果不满足条件,则执行else后面的代码;
        if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
            umask 002
        else
            umask 022
        fi

 

##################################
特殊权限:
suid:
执行时使用该命令的属主身份运行; chmod u+s chmod 4755
sgid:
文件: 执行时使用该命令的属组身份运行; chmod g+s chmod 2755
目录: 让创建的文件与目录的属组保持一致;

sbit:
粘滞位; 任何人都可以存储文件; 但只能自己删除; chmod o+s chmod 1755
服务初始化;
存储临时资源;

特殊的属性: chattr lsattr
+i: 锁住文件; 病毒的保护文件不被二次修改;
+a: 只允许追加; 重要的日志文件; 追溯事件产生的背景;

umask:
表示要减掉的权限; 默认系统的 目录权限是777 文件是666

默认权限 --> umask = 最终权限;

> >> | xargs


 

本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/16503387.html

posted on 2022-07-21 20:01  孙龙-程序员  阅读(166)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3