Linux学习之文件特殊权限详解(SetUID、SetGID、Sticky BIT)

目录

SetUID
SetGID
Sticky BIT

SetUID

SetUID简介

只有可以执行的二进制程序和可执行的代码才能设定SUID权限。
命令执行者要对该程序拥有x(执行)权限。
命令执行者在执行该程序时获得该程序文件所属主的身份(在执行程序的过程中灵魂附体为文件的所属主)。
SetUID权限只在该程序执行过程中有效,也就是说身份改变只在执行过程中有效。

  

这样大家肯定不怎么理解,现在我们来举一个例子,普通用户a在执行某个二进制程序时候,这个二进制程序的所有者是root,如果这个二进制程序拥有SUID权限,
那么普通用户a就会拥有root用户的权限,这样看来,好像一个变身命令。

设定SetUID的方法

4代表SUID,2代表GID,1代表Sticky BIT,7代表全部设置
chmod 4xxx 文件名

  

取消SetUID的方法

chmod xxx 文件名

  

SetUID权限的危险性

演示

这里应该用一个可执行的程序或文件来演示的,但理解这个权限的作用是什么就好,一般工作也用不上。

创建一个文件夹test

查看test文件夹的默认权限

重新赋予test文件夹权限

再次查看test文件夹的权限,我们可以看到,在所有者的权限后面多了个s,文件名高亮显示,这种文件,在linux中代表危险文件或者错误的文件

如果你想取消这个文件夹的权限

chmod 755 test即可

SetGID

SetGID简介

SetGID对文件和目录有不同的意义,我们只看对文件的作用

SetGID对文件的作用:
只有可以执行的二进制程序和可执行的代码才能设定SUID权限。
命令执行者要对该程序拥有x(执行)权限。
命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)。
SetUID权限只在该程序执行过程中有效,也就是说身份改变只在执行过程中有效。

  

由locate命令带来的思考

我们知道locate命令比find命令更快,这是由于locate命令是在一个数据库中查询,需要定期更新数据库,要不然查询会不准确,但是find命令会扫描整个文件系统,但是更准确。

我们可以看到/usr/bin/locate文件的组的权限是有SGID权限。

我们也可以看到普通用户对数据库没有权限的。

那么为什么普通用户也可以访问这个数据库呢?

我们来看一下使用locate命令查询时候的过程。

假设普通用户lamp现在正在使用locate命令

现在我们明白了,lamp在使用locate命令时,从普通用户变为slocate组身份,这个组对数据库是有r权限的。

设置SetGID和取消SetGID权限

chmod 2xxx 文件名

chmod xxx 文件名

  

Sticky BIT

Sticky BIT的简介

这个是用来防止如果我们给了一个目录777的权限,那么一个用户创建的目录,另一个目录如果不小心就会删除目录,如果你给这个目录设置Sticky BIT权限,这个用户就删除不了一个用户创建的文件。

  

设置粘着位和取消粘着位

chmod 1xxx 文件名

chmod xxx 文件名

  

Linux学习之文件特殊权限详解(SetUID、SetGID、Sticky BIT)(十一)的更多相关文章

  1. Linux "ls -l"文件列表权限详解

    ls Linux "ls -l"文件列表权限详解 1.使用 ls -l 命令 执行结果如下(/var/log) : drwxr-x--- root adm -- : apache2 ...

  2. Linux "ls -l"文件列表权限详解 【转】

    1.使用 ls -l 命令 执行结果如下(/var/log) : drwxr-x--- 2 root              adm    4096 2013-08-07 11:03 apache2 ...

  3. Linux 文件特殊权限详解[suid/sgid/t]

    setuid(suid): 针对命令和二进制程序的,当普通用户执行某个(passwd)命令的时候,可以拥有这个命令对应用户的权限, 即让普通用户可以以root用户的角色执行程序或命令. setgid( ...

  4. Linux文件夹权限详解

    - 第一个字符代表文件(-).目录(d),链接(l) - 其余字符每3个一组(rwx),读(r).写(w).执行(x) - 第一组rwx:文件所有者的权限是读.写和执行 - 第二组rw-:与文件所有者 ...

  5. Android AndroidManifest 清单文件以及权限详解!【转】

    转自:http://my.oschina.net/yuanxulong/blog/366753 每个Android应用都需要一个名为AndroidManifest.xml的程序清单文件,这个清单文件名 ...

  6. linux根目录下文件夹概览详解

    / 根目录 /bin 存放必要的命令 /boot 存放内核以及启动所需的文件等 /dev 存放设备文件 /etc 存放系统的配置文件 /home 用户文件的主目录,用户数据存放在其主目录中 /lib ...

  7. [置顶] linux学习之samba安装问题详解

    一.首先查看是否安装samba,命令为:rpm -qa | grep samba 出现如下包表示已经安装,否则没有安装 samba-winbind-clients-3.5.10-125.el6.i68 ...

  8. Linux 系统的用户和组详解_【all】

    1.Linux 用户和用户组详解 2.Linux 文件特殊权限详解 3.Linux 文件的读写执行权限的说明 4.Linux 架构之简述企业网站 5.Linux 环境变量设置详解 6.企业生产环境用户 ...

  9. 【Linux学习】Linux下用户组、文件权限详解

    原文地址:http://www.cnblogs.com/123-/p/4189072.html Linux下用户组.文件权限详解 用户组 在linux中的每个用户必须属于一个组,不能独立于组外.在li ...

随机推荐

  1. k8s系列~mgr的应用

    一  简介:今天咱们大体介绍下 这两者是如何联系的二  概念解析     pod:说下我的理解    1 pod通过yaml文件来封装docker本身+启动形式    2 pod可以运行多个docke ...

  2. 超详细的Web前端开发规范文档

    规范目的为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进行前台页面开发. 本文档如有不对或者不合 ...

  3. 2017-2018-2 20155303『网络对抗技术』Exp8:Web基础

    2017-2018-2 『网络对抗技术』Exp8:Web基础 --------CONTENTS-------- 一.原理与实践说明 1.实践具体要求 2.基础问题回答 二.实践过程记录 1.Web前端 ...

  4. JS执行一次任务与定期任务与清除执行

    1.一次性任务的执行与清除执行 1.定期执行 <script> timer = 0; timer = setTimeout(function() { console.log("s ...

  5. Freemarker导出word的简单使用

    1.模板 username:${username} password:${password} <#list mylist as item> ${item.name!} ${item.pas ...

  6. Ubuntu/Debian 8 安装 Intel realsense 摄像头驱动

    ## Make Ubuntu/Debian Up-to-date1. sudo apt-get update && sudo apt-get upgrade && su ...

  7. C++学习3--编程基础(vector、string、三种传参)

    知识点学习 Vector容器 vector是C++标准程序库中的一个类,其定义于头文件中,与其他STL组件一样,ventor属于STD名称空间: ventor是C++标准程序库里最基本的容器,设计之初 ...

  8. volatile的深入理解--【sky原创】

    volatile 所有定义的变量都是在内存上面的,  例如: int i = 10; int j = i; int k = i;   i = 10; 是初始化的变量,存放在数据段,未初始化的变量存放在 ...

  9. xpath路径前可用方法测试

    $x("string-length(//h3[@class='t'])") 8 $x("string(//h3[@class='t'])") "XPa ...

  10. redis安全 (error) NOAUTH Authentication required

    Redis 安全 我们可以通过 redis 的配置文件设置密码参数,这样客户端连接到 redis 服务就需要密码验证,这样可以让你的 redis 服务更安全. 实例 我们可以通过以下命令查看是否设置了 ...