博客地址:http://www.moonxy.com

一、前言

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 笔记 - 特殊权限的更多相关文章

  1. linux笔记:权限管理命令chmod,chown,chgrp,umask

    权限对文件和目录的含义是不同的:对文件来说:读:可以查看文件内容写:可以修改文件内容执行:可以执行文件对目录来说:读:可以列出目录中的内容写:可以在目录中创建.删除文件执行:可以进入目录 能够更改文件 ...

  2. linux笔记:权限管理-sudo

    sudo可以将只有root可以使用的命令授权给普通用户: 授权的过程实际是修改配置文件: 授权示例: 普通用户使用sudo权限的示例:

  3. 《The Linux Command Line》 读书笔记04 Linux用户以及权限相关命令

    Linux用户以及权限相关命令 查看身份 id:Display user identity. 这个命令的输出会显示uid,gid和用户所属的组. uid即user ID,这是账户创建时被赋予的. gi ...

  4. Linux运维学习笔记-文件权限知识总结

    权限总结: 1. 可读r:表示具有读取\阅读文件内容的权限: 2. 可写w:表示具有新增.修改文件内容的权限: a. 若果没有r配合,那么vi编辑文件会提示无法编辑(但可以强制编辑),echo可以重定 ...

  5. 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 ...

  6. 鸟哥的Linux私房菜学习笔记——文件权限与目录配置

    Linux的文件权限和目录配置 在linux中的每个用户必需属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念. (1)所有者 一般为文件的创建者,谁创建了该文件,就是天 ...

  7. 【Linux笔记】Linux目录结构

    [Linux笔记]Linux目录结构   本文内容整理自网络,以作参考. /:根目录,位于linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib ...

  8. Linux文件的权限与属性

    由于以前学习Linux的时候没有做比较全面的总结笔记,而且平时大部分工作都在windows上进行,所以关于Linux的一些知识点有所遗忘.近期难得空闲,翻阅书籍,学习<鸟哥的Linux私房菜&g ...

  9. 《学渣Linux笔记》——关于.bashrc与profile(涉及交互式与非交互式、登录与非登录shell)

    <学渣Linux笔记>--关于.bashrc与profile(涉及交互式与非交互式.登录与非登录shell) 1.基本概念(个人理解) 交互式shell:等待用户输入,并执行相应操作的sh ...

随机推荐

  1. c# 将dwg文件转化为pdf

    https://blog.csdn.net/mywaster/article/details/50220379 最近做一个项目,要求将dwg文件转化为pdf,开发工具VS2010 + AutoCad ...

  2. element-ui表单验证无效解决

    最近在项目中遇到了一个需求,需要动态增减表单元素,同时给新增的表单元素增加校验规则. element-ui官网给出了解决方案:点击新增按钮时,向循环渲染的数组中push新的对象,数据驱动视图,通过增加 ...

  3. linux环境下测试环境搭建

    一.linux环境下测试环境搭建过程简述: 1.前端后台代码未分离情况下: 主要步骤为:安装jdk,安装mysql,安装tomcat,将项目代码部署到tomcat/webapps/下. 2.前端后台代 ...

  4. 委托和lambda表达式,Action和Func

    1.为什么要用委托 我们为什么要有委托?任何东西存在即合理,不合理的也会被时间淘汰掉,委托既然存在肯定有存在的必要,我们来看一下什么时候可以用到委托. 接下来我们有个需求,就是调用一个方法,取出1-1 ...

  5. C语言的输入

    %*2d%d 去掉前面两位 新旧函数 scanf和scanf_s 去掉安全检查 整型 scanf(“%d”,&x); scanf_s(“%d”,&x); 字符型 char ch; sc ...

  6. node实现后台权限管理系统

    本文面向的是node初学者,目标是搭建一个基础的后台权限系统.使用的node框架是上手最简单的express,模板是ejs,这些在node入门的书籍中都有介绍说明,所以应该是难度较低的. 对于node ...

  7. Python中绘制场景热力图

    我们在做诸如人群密集度等可视化的时候,可能会考虑使用热力图,在Python中能很方便地绘制热力图. 下面以识别图片中的行人,并绘制热力图为例进行讲解. 步骤1:首先识别图像中的人,得到bounding ...

  8. 【凭据不工作】Win远程桌面提示您的凭据不工作

    1.浏览器直接进入云服务器 2.打开运行 --输入gpedit.msc--计算机配置--管理模板--windows组件--远程桌面服务--远程桌面会话主机--安全--远程(RDP)链接要求使用制定的安 ...

  9. 前端通过Blob实现文件下载

    最近遇到一个需求,需要将页面中的配置信息下载下来供用户方便使用,以前这个场景的需求有时候会放到后端处理,然后给返回一个下载链接.其实并不需要这么麻烦,这样既增大了服务器的负载,也让用户产生了没有必要的 ...

  10. Linux基础命令和文件权限

    Linux命令与文件权限 Linux基础命令   reboot  重启   cd         切换目录   cd ..     回到上一级目录   cd ~      回到主目录   cd /  ...