Linux 笔记 - 特殊权限
一、前言
Linux 中使用权限的时候,一般都是使用 3 位数,比如,777、755、666、644 等,其实在最前面还有一位,那就是特殊权限,也就是 set uid、set gid 和 sticky bit。
二、特殊权限
setuid:设置使文件在执行阶段具有文件所有者的权限。代表字母 s,代表数字 4,即 SUID 为 4。典型的文件是 /usr/bin/passwd,如果一般用户执行该 /usr/bin/passwd 文件,则在执行过程中,该文件可以获得 root 权限,从而可以更改用户的密码。
[root@localhost ~]# ls -l /etc/passwd
-rw-r--r-- 1 root root 2379 04-21 13:18 /etc/passwd
作为普通用户如果修改自己的口令,通过修改 /etc/passwd 肯定是不可完成的任务,但是不是可以通过一个命令来修改呢?答案是肯定的,作为普通用户可以通过 passwd 来修改自己的口令这归功于 passwd 命令的权限我们来看一下;
[root@localhost ~]# ls -l /usr/bin/passwd
-r-s--x--x 1 root root 21944 02-12 16:15 /usr/bin/passwd
因为 /usr/bin/passwd 文件已经设置了setuid 权限位(也就是r-s--x--x中的s),所以普通用户能临时变成 root,间接的修改 /etc/passwd,以达到修改自己口令的权限。
setgid:该权限只对目录有效,目录被设置该位后,任何用户在此目录下创建的文件都具有和该目录所属的组相同的组。代表字母 s,代表数字 2,即 SGID 为 2。
sticky bit:该位可以理解为防删除位,也有人称其为粘滞位。代表字母 t,代表数字 1,即 SBIT 为 1。一个文件是否可以被某用户删除,主要取决于该文件所属的组是否对该用户具有写权限。如果没有写权限,则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件。如果希望用户能够添加文件但同时不能删除文件,则可以对文件使用sticky bit位,设置该位后,就算用户对目录具有写权限,也不能删除该文件,常见的用于 /tmp 目录。stciky bit 一般只用在目录上,用在文件上起不到什么作用。
如果某个目录设置了sticky bit(是在 others 用户的权限上设置的,设置后可执行位从 x 变成了 t),那么用户在该目录下可以创建文件(当然前提是用户具有写权限和可执行权限,如果具有可执行权限,设置 sticky bit 后是 t;如果没有可执行权限的话,设置 sticky bit 后是 T),而且可以删除自己创建的文件,但是,不能删除其他用户创建的文件,这样就起到了一种保护作用了。
下面说一下如何操作这些标志:
操作这些标志与操作文件权限的命令是一样的, 都是 chmod。有两种方法来操作:
1) chmod u+s tmps -- 为 tmps 文件加上 setuid 标志。( setuid 只对文件有效)
chmod g+s tmp -- 为 tmp 目录加上 setgid 标志 ( setgid 只对目录有效)
chmod o+t tmp -- 为 tmp 目录加上 sticky 标志 ( sticky 一般只用于目录)
2) 采用八进制方式。对一般文件通过三组八进制数字来置标志, 如 666、777、644等。 如果设置这些特殊标志,则在这组数字之外再加一组八进制数字, 如 4666、 2777等。 这一组八进制数字三位的意义如下:
abc
a - setuid 位,如果该位为1,则表示设置 setuid --- 4
b - setgid 位, 如果该位为1,则表示设置 setgid --- 2
c - sticky 位,如果该位为1,则表示设置 sticky --- 1
设置完这些标志后,可以用 ls -l 来查看。如果有这些标志,则会在原来的执行标志位置上显示。如:
rwsrw-r-- 表示有 setuid 标志
rwxrwsrw- 表示有 setgid 标志
rwxrw-rwt 表示有 sticky 标志
那么原来的执行标志x到哪里去了呢?系统是这样规定的,如果本来在该位上有x,则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)。
如果希望查找系统中所有具有特殊权限的文件,则:
find / -perm +7000
三、总结
Linux 目录读权限、执行权限和写权限分析
当用户对某个目录只有读权限时,那么该用户可以列出该目录下的文件列表(即可以使用ll来列出目录下的文件),但是不能进入该目录(即不能cd 目录名 来进入该目录),即如果该目录是用户访问路径的某个组成部分的话,到这里是访问不了的。
当用户对某个目录只有执行权限时,该用户是可以进入该目录的(即可以通过 cd 目录名 来进入该目录),因为一个用户要想进入一个目录,就必须具有可执行权限才可以。但该用户是不能列出这个目录下的文件列表的(即不能使用ll等命令列出该目录下的信息)。
当用户对某个目录具有写权限时,用户可以在当前目录增加或者删除文件,但需要几个前提:1、需要有可执行权限;2、要想删除文件,那么sticky bit位是没有设置的。
Linux 笔记 - 特殊权限的更多相关文章
- linux笔记:权限管理命令chmod,chown,chgrp,umask
权限对文件和目录的含义是不同的:对文件来说:读:可以查看文件内容写:可以修改文件内容执行:可以执行文件对目录来说:读:可以列出目录中的内容写:可以在目录中创建.删除文件执行:可以进入目录 能够更改文件 ...
- linux笔记:权限管理-sudo
sudo可以将只有root可以使用的命令授权给普通用户: 授权的过程实际是修改配置文件: 授权示例: 普通用户使用sudo权限的示例:
- 《The Linux Command Line》 读书笔记04 Linux用户以及权限相关命令
Linux用户以及权限相关命令 查看身份 id:Display user identity. 这个命令的输出会显示uid,gid和用户所属的组. uid即user ID,这是账户创建时被赋予的. gi ...
- Linux运维学习笔记-文件权限知识总结
权限总结: 1. 可读r:表示具有读取\阅读文件内容的权限: 2. 可写w:表示具有新增.修改文件内容的权限: a. 若果没有r配合,那么vi编辑文件会提示无法编辑(但可以强制编辑),echo可以重定 ...
- Linux 学习笔记分享: Linux 用户组的权限: drwx------ 700权限(d 目录 ,r=4,w=2,x=1:rwx=7;---=0;---=0)
Linux 用户组的权限: drwx------ 700权限(d 目录 ,r=4,w=2,x=1:rwx=7;---=0;---=0) 1 1 Linux 用户组的权限: drwx------ 700 ...
- 鸟哥的Linux私房菜学习笔记——文件权限与目录配置
Linux的文件权限和目录配置 在linux中的每个用户必需属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念. (1)所有者 一般为文件的创建者,谁创建了该文件,就是天 ...
- 【Linux笔记】Linux目录结构
[Linux笔记]Linux目录结构 本文内容整理自网络,以作参考. /:根目录,位于linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib ...
- Linux文件的权限与属性
由于以前学习Linux的时候没有做比较全面的总结笔记,而且平时大部分工作都在windows上进行,所以关于Linux的一些知识点有所遗忘.近期难得空闲,翻阅书籍,学习<鸟哥的Linux私房菜&g ...
- 《学渣Linux笔记》——关于.bashrc与profile(涉及交互式与非交互式、登录与非登录shell)
<学渣Linux笔记>--关于.bashrc与profile(涉及交互式与非交互式.登录与非登录shell) 1.基本概念(个人理解) 交互式shell:等待用户输入,并执行相应操作的sh ...
随机推荐
- c# 将dwg文件转化为pdf
https://blog.csdn.net/mywaster/article/details/50220379 最近做一个项目,要求将dwg文件转化为pdf,开发工具VS2010 + AutoCad ...
- element-ui表单验证无效解决
最近在项目中遇到了一个需求,需要动态增减表单元素,同时给新增的表单元素增加校验规则. element-ui官网给出了解决方案:点击新增按钮时,向循环渲染的数组中push新的对象,数据驱动视图,通过增加 ...
- linux环境下测试环境搭建
一.linux环境下测试环境搭建过程简述: 1.前端后台代码未分离情况下: 主要步骤为:安装jdk,安装mysql,安装tomcat,将项目代码部署到tomcat/webapps/下. 2.前端后台代 ...
- 委托和lambda表达式,Action和Func
1.为什么要用委托 我们为什么要有委托?任何东西存在即合理,不合理的也会被时间淘汰掉,委托既然存在肯定有存在的必要,我们来看一下什么时候可以用到委托. 接下来我们有个需求,就是调用一个方法,取出1-1 ...
- C语言的输入
%*2d%d 去掉前面两位 新旧函数 scanf和scanf_s 去掉安全检查 整型 scanf(“%d”,&x); scanf_s(“%d”,&x); 字符型 char ch; sc ...
- node实现后台权限管理系统
本文面向的是node初学者,目标是搭建一个基础的后台权限系统.使用的node框架是上手最简单的express,模板是ejs,这些在node入门的书籍中都有介绍说明,所以应该是难度较低的. 对于node ...
- Python中绘制场景热力图
我们在做诸如人群密集度等可视化的时候,可能会考虑使用热力图,在Python中能很方便地绘制热力图. 下面以识别图片中的行人,并绘制热力图为例进行讲解. 步骤1:首先识别图像中的人,得到bounding ...
- 【凭据不工作】Win远程桌面提示您的凭据不工作
1.浏览器直接进入云服务器 2.打开运行 --输入gpedit.msc--计算机配置--管理模板--windows组件--远程桌面服务--远程桌面会话主机--安全--远程(RDP)链接要求使用制定的安 ...
- 前端通过Blob实现文件下载
最近遇到一个需求,需要将页面中的配置信息下载下来供用户方便使用,以前这个场景的需求有时候会放到后端处理,然后给返回一个下载链接.其实并不需要这么麻烦,这样既增大了服务器的负载,也让用户产生了没有必要的 ...
- Linux基础命令和文件权限
Linux命令与文件权限 Linux基础命令 reboot 重启 cd 切换目录 cd .. 回到上一级目录 cd ~ 回到主目录 cd / ...