[s]:当一个具有执行权限的文件设置 [s](SetUID) 权限后,用户执行这个文件时将以文件所有者的身份执行。passwd 命令具有 SetUID 权限,所有者为 root(Linux 中的命令默认所有者都是 root),也就是说当普通用户使用 passwd 更改自己密码的时候,那一瞬间突然 “灵魂附体” 了,实际在以 passwd 命令所有者 root 的身份在执行,root 当然可以将密码写入 /etc/shadow 文件(root 是一个 bug 的存在,在 Linux 中就没有它不能干的事),命令执行完成后该身份也随之消失。

0. SetUID 条件:

必须具备以下几个条件(前提):

  • 只有可执行的二进制程序才可以设置 SetUID
  • 所有者必须对欲设置SetUID的文件具备 可执行 (x) 权限
  • 命令执行过程中,其它用户获取所有者的身份(灵魂附体)
  • SetUID 具有时间限制,即完成该程序执行后就消失(不能霸占住不放吧?)

1. 设置和取消 SetUID

设置 SetUID:

chmod 4xxx < file-name >chmod u+s < file-name >

取消 SetUID:

chmod xxx < file-name >chmod u-s < file-name >

案例:

SetGID

其实,SetGID 基本与 SetUID 相同,无非也就是一个设置所有者的权限,GID 为设置所属组的特殊权限!区别点在于:SetGID 也可以设置目录的相关 SetGID 权限!

0. SetGID条件:

针对文件:

  • 可执行的二进制文件
  • 命令执行者(即所属组)对该文件具备 x 权限
  • 执行时,执行者被所属组灵魂附体
  • 权限只在执行过程中有效

针对目录:

  • 普通用户对目录具备 r 和 x 权限,才可以进入到该目录
  • 普通用户在此目录中的有效组会变成此目录的所属组
  • 如普通用户对该目录具备w权限,新建文件的所属组为该目录的所属组

1. 设置和取消 SetGID

设置 SetGID

chmod 2xxx chmod g+s

取消 SetGID

chmod xxx chmod g-s

案例:
先用管理员身份在wang用户的家目录里建一个叫test1的目录
cd /home/wang
mkdir test1 之后切换wang这个用户,进入test1目录建一个叫hello.txt的文件
会发现,所有者为wang用户,但是组为root所有的组 su wang
cd /home/wang
vi hello.txt
随便输入点东西,shift+: wq保存退出,
会看见下图

[t]: 任何用户均可以往此目录写入文件,可以删除自己所创建的文件,root 自然有权限删除

0.作用:

  • 只对目录有效
  • 普通用户对该目录有 w 和 x 权限
  • 若没有粘滞位,则普通用户可以对目录下的文件/子目录进行删除操作(因为普通用户对目录具有 w 权限),包括其它用户建立的目录/文件;但若赋了 SBIT,则普通用户只能删除自己创建的文件/目录,而不能删除不属于自己的文件/目录!

案例:

使用root建立文件helloworld
mkdir helloworld
chmod 1777 helloworld

切换wang用户进入其中建文件hello.txt

切换zhang用户进入其中建文件 world.txt

zhang可以删除world.txt但是无法删除hello.txt

 

关于【s】和[t]字符的更多相关文章

  1. C语言 · 字符转对比

    问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符串不仅长度相 ...

  2. java字符乱码

    在java中处理字符时,经常会发生乱码,而主要出现的地方在读取文本文件时发生,或者是写入到文件中,在其他地方打开乱码. 如下例子: BufferedReader br = null; try { br ...

  3. java 字节流与字符流的区别

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作 ...

  4. Linux字符设备驱动框架

    字符设备是Linux三大设备之一(另外两种是块设备,网络设备),字符设备就是字节流形式通讯的I/O设备,绝大部分设备都是字符设备,常见的字符设备包括鼠标.键盘.显示器.串口等等,当我们执行ls -l ...

  5. [LeetCode] Longest Substring with At Least K Repeating Characters 至少有K个重复字符的最长子字符串

    Find the length of the longest substring T of a given string (consists of lowercase letters only) su ...

  6. Java版本:识别Json字符串并分隔成Map集合

    前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些 ...

  7. 字符型图片验证码识别完整过程及Python实现

    字符型图片验证码识别完整过程及Python实现 1   摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越 ...

  8. 全网络最正确的让 Linux 开机进入字符界面的方法及设置 FrameBuffer 分辨率的方法

    引言 这个标题有点长,是为了在标题中就把问题说清楚,以便搜索引擎能够把有需要的朋友准确地带到我这里来.目前在网络上,很多关于 Linux 方面的知识是过时的和错误的.我标题中指出的两个知识点就是其中的 ...

  9. EasyPR--开发详解(7)字符分割

    大家好,好久不见了. 一转眼距离上一篇博客已经是4个月前的事了.要问博主这段时间去干了什么,我只能说:我去“外面看了看”. 图1 我想去看看 在外面跟几家创业公司谈了谈,交流了一些大数据与机器视觉相关 ...

  10. C#经典笔试题-获取字符串中相同的字符以及其个数

    public Dictionary<char,int> GetStrSameAs(string str){ //将字符串转换成一个字符数组. char[] charArray=str.To ...

随机推荐

  1. 同样是logback1.11,更换了log配置后,无论是否有线程持续不断写入log文件,log文件会按设定以日期序号轮换

    上次发现了logback1.11的一个bug,即有线程持续写入log,则log文件不会按设定模式进行轮换. 但发现同样采用logback1.11的另外一个工程,它的日志文件就没有错误,于是参照其配置文 ...

  2. Zookeeper源码解读

    1.1. 客户端源码 1.1.1. 总体流程 启动客户端 zkCli.sh文件里面的配置 实际运行 public static void main(String args[]) throws Keep ...

  3. vue3剖析:响应式原理——effect

    响应式原理 源码目录:https://github.com/vuejs/vue-next/tree/master/packages/reactivity 模块 ref: reactive: compu ...

  4. Oracle自动存储管理ASM

    参考资料: https://docs.oracle.com/cd/B19306_01/server.102/b14231/storeman.htm#ADMIN036 什么是ASM? ASM是Autom ...

  5. [Java核心技术]五-继承(枚举类)

    ####Java枚举类型(enum) 枚举类型都是继承了Enum类(是一个抽象类)的一个类,我们可以向enum类中添加方法和变量等.编译再反编译可以看到枚举类型对应的类的内容. 每个枚举常量都对应一个 ...

  6. Hadoop框架:单服务下伪分布式集群搭建

    本文源码:GitHub·点这里 || GitEE·点这里 一.基础环境 1.环境版本 环境:centos7 hadoop版本:2.7.2 jdk版本:1.8 2.Hadoop目录结构 bin目录:存放 ...

  7. 软件工程与UML作业3(互评作业)

    博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/ 作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018S ...

  8. Linux实战(5):Centos8安装python

    Centos8正式版已经发布了,已经尝鲜的小伙伴们会发现与其他Linux发行版不同,CentOS 8默认不安装Python.接下来的操作指导大家如何安装python3. 转自链接 安装python3 ...

  9. 【原创】K8S使用ceph-csi持久化存储之RBD

    一.集群和组件版本 K8S集群:1.17.3+Ceph集群:Nautilus(stables)Ceph-CSI:release-v3.1snapshotter-controller:release-2 ...

  10. @Autowried入门和源码分析

    话不多说直接上代码: 声明一个接口userDao: package ioc.hello; public interface UserDao { public void test(); } 2个实现类: ...