Linux学习之文件特殊权限详解(SetUID、SetGID、Sticky BIT)(十一)
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)(十一)的更多相关文章
- Linux "ls -l"文件列表权限详解
ls Linux "ls -l"文件列表权限详解 1.使用 ls -l 命令 执行结果如下(/var/log) : drwxr-x--- root adm -- : apache2 ...
- Linux "ls -l"文件列表权限详解 【转】
1.使用 ls -l 命令 执行结果如下(/var/log) : drwxr-x--- 2 root adm 4096 2013-08-07 11:03 apache2 ...
- Linux 文件特殊权限详解[suid/sgid/t]
setuid(suid): 针对命令和二进制程序的,当普通用户执行某个(passwd)命令的时候,可以拥有这个命令对应用户的权限, 即让普通用户可以以root用户的角色执行程序或命令. setgid( ...
- Linux文件夹权限详解
- 第一个字符代表文件(-).目录(d),链接(l) - 其余字符每3个一组(rwx),读(r).写(w).执行(x) - 第一组rwx:文件所有者的权限是读.写和执行 - 第二组rw-:与文件所有者 ...
- Android AndroidManifest 清单文件以及权限详解!【转】
转自:http://my.oschina.net/yuanxulong/blog/366753 每个Android应用都需要一个名为AndroidManifest.xml的程序清单文件,这个清单文件名 ...
- linux根目录下文件夹概览详解
/ 根目录 /bin 存放必要的命令 /boot 存放内核以及启动所需的文件等 /dev 存放设备文件 /etc 存放系统的配置文件 /home 用户文件的主目录,用户数据存放在其主目录中 /lib ...
- [置顶] linux学习之samba安装问题详解
一.首先查看是否安装samba,命令为:rpm -qa | grep samba 出现如下包表示已经安装,否则没有安装 samba-winbind-clients-3.5.10-125.el6.i68 ...
- Linux 系统的用户和组详解_【all】
1.Linux 用户和用户组详解 2.Linux 文件特殊权限详解 3.Linux 文件的读写执行权限的说明 4.Linux 架构之简述企业网站 5.Linux 环境变量设置详解 6.企业生产环境用户 ...
- 【Linux学习】Linux下用户组、文件权限详解
原文地址:http://www.cnblogs.com/123-/p/4189072.html Linux下用户组.文件权限详解 用户组 在linux中的每个用户必须属于一个组,不能独立于组外.在li ...
随机推荐
- Error: Cannot find module PhantomJS
node install.js Considering PhantomJS found at /usr/local/bin/phantomjs Looks like an `npm install - ...
- mysql 案例 ~ pt-kill工具的使用
一 简介:学习pt-kill工具使用 二 功能: 能按照多维角度进行kill的查杀,迅速的降低数据库使用负载 三 常用命令 pt-kill --match-command 'Query|Sleep' ...
- java的一维数组
数组的基础知识: 数组一旦创建,它的的大小是固定的.使用一个数组引用变量,通过下标来访问数组中的元素. 初始化数组的方法: 复制数组的方法: 1.使用循环语句逐个地复制数组的元素 2.使用System ...
- jQuery中【width(),innerWidth(),outerWidth()】
这个问题,已经别扭我多年了,今天终于彻底解决了,拿出来庆贺一下.jquery作为开源项目,无论从思路上,还是从严谨性上,让人崇敬. 随着时间的流逝,jquery的一些功能被逐渐挖掘出来.通过jQuer ...
- python 历险记(一)— python 的String,集合(List,元组,Dict)
目录 引言 String 有哪些有用的方法? 如何拼接字符串? 如何分隔字符串? 如何获取字符串长度 如何将 list 拼接成字符串? 如何替换字符串? 如何去除字符串中的空格? 如何子字符串是否包含 ...
- k64 datasheet学习笔记3---Chip Configuration之System modules
1.前言 本文主要介绍芯片配置的系统模块的内容 2.SIM配置 TODO 3.SMC配置 TODO 4.PMC配置 TODO 5.LOW-LEAKAGE WAKEUP单元配置 TODO 6.MCM配置 ...
- 从Linux内核中获取真随机数【转】
转自:http://www.cnblogs.com/bigship/archive/2010/04/04/1704228.html 内核随机数产生器 Linux内核实现了一个随机数产生器,从理论上说这 ...
- Oracle把逗号分割的字符串转换为可放入in的条件语句的字符数列
Oracle把逗号分割的字符串转换为可放入in的条件语句的字符数列 前台传来的字符串:'589,321' SELECT*FROM TAB_A T1 WHERE T1.CODE IN ( SEL ...
- Visual Studio 2017中的快捷键
Ctrl+Tab: 快速切换活动文件
- Jquery hover方法使用及 mouseenter与mouseleave和 mouseover与mouseout的区别
定义和用法 hover() 方法规定当鼠标指针悬停在被选元素上时要运行的两个函数. jQuery 1.7 版本前该方法触发 mouseenter 和 mouseleave 事件. jQuery 1.8 ...