Linux粘制位&强制位&冒险位

【o+t】 : 【粘制位】:【sticky】

解 决 的 问 题 : \color{#376956}{解决的问题:}

当用户A,B分别在某目录dir下建立文件file1,file2时,用户A发现,自己可以删除用户B所建立的file2。某一天AB两人产生了矛盾,A萌生坏意,删掉了B的file2,于是B倒霉了。。。

为了解决上面的问题,我们将学习【粘制位】:即不同的用户在本目录下只能删除自己的文件,不能修改删除其他用户的文件。

用 法 : \color{blue}{用法:}

chmod o+t dir/

chmod  1*** dir/
举例:
chmod 1744 dir/  ##在原设定的权限值前加个1

###防止普通用户B删除用户A的文件, 只 针 对 目 录 生 效 ! \color{blue}{只针对目录生效!} ###

先总述一下下面实验的流程:

在root权限下创建两个用户A&B,创建一个满权限的目录(或者更改权限为777:chmod 777 /westos)
分别在A和B用户下创建/westos/file
发现A可以删除B所创建的file,B与之相同
回到root状态,输入【chmod 1777 /westos】,更改文件权限,在rwxrwxrwx后面+7
再次进入A或者B,发现不能删除他人文件

下面进入代码部分:

1.建立用户A和B,建立一个目录westos
在这里插入图片描述
2.查看了下目录westos的权限,然后我们给他赋予满权限
在这里插入图片描述
3.分别切换到A,B用户,A建立文件AAA;B建立文件BBB。用ls指令查看westos目录下的内容,分别为文件AAA和文件BBB
在这里插入图片描述
4.因为我们现在就处于B用户,所以直接来测试,去删除A创建的AAA,发现可以删除,那就删除吧。ls查看westos目录,发现确实AAA文件被删除了。exit退出B用户。
在这里插入图片描述
5.更改目录westos的权限,改为1777,ls -ld 查看其自身属性,发现drwxrwxrwt,最后的权限位为“t“。说明改变成功。我们再来切换到A用户,尝试删除B建立的BBB文件,发现不能删除。则实验成功。最后再检查一下,ls查看westos目录,确实BBB还在。
在这里插入图片描述
以上就是粘制位的说明。以及用法。底下再补一张用【chmod o+t的代码截图】:

在这里插入图片描述
简单说明一下上图:

1.建立目录XYY【可以看到,就在桌面】
2.查看目录XYY的权限
3.更改权限【o+t】
4.查看更改结果【发现权限位最后一位改为了t】
5.完成。

补充内容:在后续的学习中,学习过su切换用户加" - "和不加-的区别后补充一点:
加-切换用户,会重新加载环境变量,将用户所在目录返回至切换后的用户的家目录。而不加-则依旧在当前目录。
所以在本实验中,如果说出现切换用户后无权限进入指定目录,那么就使用不加-的su切换


【g+s】 : 【强制位】:【sgid】

由来:每一个上班族都在为生活打拼着。每一天我们在公司都会做出来一些贡献,一些和工资等价值的东西。那么这些东西是属于谁呢?应该是属于公司吧。也就是说,是我们做出来的,但他的所有人应该是公司而不是我们。

我 们 知 道 了 粘 制 位 只 对 目 录 生 效 ; 这 里 强 制 位 对 目 录 和 文 件 表 示 不 同 含 义 \color{blue}{我们知道了粘制位只对目录生效;这里强制位对目录和文件表示不同含义}

###对目录:任何人在有sgid权限的目录中建立的文件都属于目录所有组
###对文件:只针对二进制可执行文件,当文件上有sgid时,任何人执行此文件产生的进程都属于文件所在组

用法:举例:

	二进制可执行文件:   /bin/watch
	>ls -l /bin/watch            ###查看        
	>/bin/watch -n 1 date        ###运行一个进程
	>ps -a -o user,group,comm | grep watch    ###监控进程和进程组并选出带watch的进程
	>chgrp westos /bin/watch     ###更改所在组为westos
	>/bin/watch -n 1 date        ###运行一个进程
	>ps -a -o user,group,comm    ###监控更改结果
	>chmod g+s /bin/watch        ###给文件权限,使任何人执行时此文件产生的进程都属于文件所在组
	>/bin/watch -n 1 date        ###运行一个进程
	>ps -a -o user,group,comm    ###监控进程所在组
	>useradd  li                 ###添加用户
	>su - li                     ###切换用户
        >/bin/watch -n 1 date        ###运行一个进程
	>ps -a -o user,group,comm    ###查看更改结果
          
chmod g+s    file|目录
chmod 2xxx   file|目录 

下面还是来进行代码演示:
对 目 录 : \color{blue}{对目录:}
1.我们还是先建立两个用户A和B,然后建立目录westos,随后给目录满权限,使其他用户可以在此目录下创建文件。【-R是让其目录下已有文件也一并更改属性,在此不需要关注】。另外我们再打开一个shell执行watch -n 1 "ls -lR /westos ; ls -ld /westos"`来监控变化。准备工作完成后切换到A/B用户,建立文件。发现A建立的fileA,起所在组为A。B建立的fileB,所在组为B。

在这里插入图片描述
2.为了达到目的,我们更改westos目录的权限【chmod g+s /westos】,然后再切换到A用户,建立文件xyy。在监控程序中我们可以看到,新建立的文件xyy它的组变为了和目录一样的root。更改成功。
.在这里插入图片描述
在这里插入图片描述
如果想要对以前建立的文件的组进行更改,可以翻看之前的博客,采用chgrp命令进行更改【上一篇】

对 二 进 制 可 执 行 文 件 : \color{blue}{对二进制可执行文件:}
代码演示:
1.我们先查看watch文件的属性,这是一个二进制可执行文件。随后另打开一个shell,输入/bin/watch -n 1 date ,产生一个watch进程,返回原本shell,用ps指令显示进程的属性,其所在组为root,为root用户所在组。
在这里插入图片描述
2.更改该二进制文件所在组,发现组不存在,我们就创建一下【组westos】。chgrp指令更改该二进制文件的所在组,随后再打开一个shell,输入 /bin/watch -n 1 date,开启第二个watch进程,其所在组还是用户root的组。
在这里插入图片描述
3.更改该二进制可执行文件watch的权限。再打开一个shell,还是输入 /bin/watch -n 1 date,开启第三个watch进程,发现其所在组为我们已经更改过的watch文件所在组westos。演示完成。

在这里插入图片描述
在这里插入图片描述
补充:这里给大家看一下g+s后的watch文件的属性:

ls -ld /bin/watch

在这里插入图片描述
注意:-rwxr-【s】r-x :即g权限的最后一位,变为了s。
当更改二进制文件所属组后,其强制位权限失效,需要重新添加


【u+s】 : 【冒险位】:【suid】

###只针对二进制可执行文件,当文件上有suid时,任何人执行这个文件时产生的进程都属于设定好的文件所有人

内容参考【强制位:g+s】


                              大大的小小阳
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值