linux三个特殊权限setuid、setgid和stick bit

   今天一直在弄Samba服务的配置,深深的感受到权限控制的困难,文件权限的机制是Linux系统中的一大特色,除了我们现在所熟知的读(r)、写(w)、执行(x)权限外,还有三个比较特殊的权限,分别为:setuid、setgid和stick bit(粘滞位)。

  1、setuid与setgid讲解

  看一下系统中用到它的地方,以/etc/passwd和/usr/bin/passwd为例:

  [plain] view plaincopy

  [root@Salve1 school]# ll /etc/passwd /usr/bin/passwd

  -rw-r--r-- 1 root root 2005 Apr 23 01:25 /etc/passwd

  -rwsr-xr-x 1 root root 23420 Aug 11 2010 /usr/bin/passwd

  [root@Salve1 school]#

  分析一下,/etc/passwd的权限为 -rw-r--r-- 也就是说:该文件的所有者拥有读写的权限,而用户组成员和其它成员只有查看的权限。我们知道,在系统中我们要修改一个用户的密码,root用户和普通用户均可以用/usr/bin/passwd someuser这个命令来修改这个/etc/passwd这个文件,root用户本身拥有对/etc/passwd的写权限,无可厚非;那普通用户呢,这里就用到了setuid,setuid的作用是“让执行该命令的用户以该命令拥有者的权限去执行”,就是普通用户执行passwd时会拥有root的权限,这样就可以修改/etc/passwd这个文件了。它的标志为:s,会出现在x的地方,例:-rwsr-xr-x 。而setgid的意思和它是一样的,即让执行文件的用户以该文件所属组的权限去执行。

  2、stick bit(粘滞位)

  看一下系统中用到它的地方,以/tmp为例:

  [plain] view plaincopy

  [root@Salve1 /]# ll -d /tmp

  drwxrwxrwt 13 root root 4096 Apr 23 02:06 /tmp

  [root@Salve1 /]#

  我们知道/tmp是系统的临时文件目录,所有的用户在该目录下拥有所有的权限,也就是说在该目录下可以任意创建、修改、删除文件,那如果用户A在该目录下创建了一个文件,用户B将该文件删除了,这种情况我们是不能允许的。为了达到该目的,就出现了stick bit(粘滞位)的概念。它是针对目录来说的,如果该目录设置了stick bit(粘滞位),则该目录下的文件除了该文件的创建者和root用户可以删除和修改/tmp目录下的stuff,别的用户均不能动别人的,这就是粘滞位的作用。

  3、如何设置上述特殊权限

  chmod u+s xxx # 设置setuid权限

  chmod g+s xxx # 设置setgid权限

  chmod o+t xxx # 设置stick bit权限,针对目录

  chmod 4775 xxx # 设置setuid权限

  chmod 2775 xxx # 设置setgid权限

  chmod 1775 xxx # 设置stick bit权限,针对目录

  4、注意:有时你设置了s或t 权限,你会发现它变成了S或T,这是因为在那个位置上你没有给它x(可执行)的权限,这样的话这样的设置是不会有效的,你可以先给它赋上x的权限,然后再给s或t 的权限。

时间: 2025-01-19 12:34:22

linux三个特殊权限setuid、setgid和stick bit的相关文章

linux系统文件权限SetUID

在Linux系统中每个普通用户都可以更改自己的密码,这是合理的设置.问题是:用户的信息保存在文件/etc/passwd中,用户的密码保存在文件/etc/shadow中,也就是说用户更改自己密码时是修改了/etc/shadow文件中的加密密码,但是,-rw-r--r-- 1 root root 1787 Oct 27  2009 /etc/passwd-r-------- 1 root root 1187 Oct 27  2009 /etc/shadow/etc/passwd文件每个用户都有读权限

Linux下的高级权限文件控制

在企业内网的开发环境方面,文件服务器是一个非常重要的环节.其中,Samba服务器由于其权限控制的高度灵活性,最初学习时确实会让大家感到很迷惑,但我们可以先搭建一些简单的案例来掌握其语法.本节主要是介绍Linux下的高级权限suid.sgid.sticky三种权限的特点. 很多人都很奇怪,为什么我们需要学习这三种权限呢?因为在实际工作中我们发现,如果不了解这些特殊权限会让我们对Linux权限的理解(尤其是加上Samba权限后)尤为困难,所以我们必须要学习并了解它们.下面试图用浅显的讲解,让大家能充

Linux 深入理解进程权限_linux shell

Linux 进程权限分析 在linux下,关于文件权限,大部分人接触比较多,也比较熟悉了解.但是对进程权限一般知之甚少.本文总结一下linux系统下进程权限问题和现象. 需要强调的是,本文是linux系统下讨论,因为linux和unix有很多不同的地方,并且各个不同的unix系统也有很多不同. 先开门见山的列出本文讨论对象:ruid(实际用户id: real userid).euid(有效用户用户:effective userid), suid(保存用户id:saved userid).fuid

一些Linux Shell中的权限相关知识总结

  这篇文章主要介绍了一些Linux Shell中的权限相关知识总结,使Linux入门学习中的基础知识,需要的朋友可以参考下 一个文件一经创建,就具有三种访问方式: 1) 读,可以显示该文件的内容. 2) 写,可以编辑或删除它. 3) 执行,如果该文件是一个s h e l l脚本或程序. 按照所针对的用户,文件的权限可分为三类: 1) 文件属主,创建该文件的用户. 2) 同组用户,拥有该文件的用户组中的任何用户. 3) 其他用户,即不属于拥有该文件的用户组的某一用户 文件的全部信息包括以下: 文

linux权限-linux给用户root权限的方法

问题描述 linux给用户root权限的方法 修改/etc/passwd的id值和在/etc/sudoers中增加一列用户名 ALL=(ALL:ALL) ALL 这两个方法有上面区别.除了这两个方法还有其他方法吗?为什么ubuntu第二个方法不行 解决方案 sudo adduser <username> sudo 解决方案二: ubuntu里把用户加到sudo组里去就可以了,当然执行命令还需要sudo 解决方案三: sudo adduser sudo 这个就可以解决你的问题 解决方案四: 把你

linux系统文件/文件夹权限的说明

linux / unix 系统中文件有3种权限: 读(read),写(write),运行(execute),而这些权限通常以数字表示: 0 = 什么都不可以 1 = 执行 2 = 写入 4 = 读取 那么依照上面的最基本的权限进行搭配: 7 = 什么都可以,(读4 写2 执行1) 4+2+1=7,(读出(read),写入(write),运行(execute)) 5 = 可以读和运行 (读出(read),运行(execute)) 6 = 读取写入 ... 每个文件有4个不同的分组权限 例如linu

Linux 下目录文件权限(命令)的查看和修改_Linux

Linux 下目录文件权限的查看和修改 在我的服务器下面有这几个文件夹 同时用ls -l也可以查看到这几个文件的权限. 看其中的assets文件一共有十位数,其中: 最前面那个 - 代表的是类型 中间那三个 rwx 代表的是所有者(user)拥有的权限 然后那三个 rwx 代表的是组群(group)拥有的权限 最后那三个 rwx 代表的是其他人(other)拥有的权限 r 表示文件可以被读(read) w 表示文件可以被写(write) x 表示文件可以被执行(如果它是程序的话) -表示相应的权

服务器-linux samba对没有权限的用户隐藏该共享文件

问题描述 linux samba对没有权限的用户隐藏该共享文件 能否让客户端(XP)在访问samba服务器的时候看不到没有权限的文件夹:只有有权限的用户才能看到. 不是这个browseable = No 的效果哟 ,它是全部人都看不到,我要的效果是有权限的人看的到,没权限的人看不到 解决方案 可以用chmod 740 你的文件名 , root可读可写可执行,和你一个用户组的可以读,其他人不可读不可写也不可执行 解决方案二: 不能用root用户,只能是创建的普通用户

又一可获Linux、Unix根权限的漏洞曝出

使用Linux或Unix操作系统的用户又需要注意了,现在安全研究人员披露了一个隐于内存栈区(Stack)的安全漏洞.一旦攻击者攻陷该漏洞加以利用,就可破坏内存并执行任意程序. Stack Clash漏洞可获Linux.Unix根权限 由于Stack可被电脑程序调用,而该区域则会依据程序需求自动扩充,但如果扩充太多以致于太靠近另一个内存区域的话,程序就可能出错.这时攻击者便趁乱用其他的内存区域覆盖该栈区,从而出现"栈冲突(Stack Clash)". 其实这类的攻击在2005年与2010