Linux 特殊权限详解

简介:

1.什么是特殊权限?

我们知道权限有r,w,x。其实除了这三个,还有特殊权限。比如:

1
2
[root@localhost ~] # ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 22960 Jul 17  2006  /usr/bin/passwd

可以发现权限位,有个s。特殊权限有如下3种:

SUID

SGID

STICKY


2.关于suid

我们知道linux有一个进程安全模型的概念,比如Tom执行passwd来进行修改密码:

第一,注意到passwd的权限为:

[hadoop@localhost ~]$ ls -l `which passwd`

-rwsr-xr-x 1 root root 22960 Jul 17  2006 /usr/bin/passwd


第二,注意到Tom不是root用户,也不属于root组。

我们先不考虑什么特殊权限s。很显然,此时Tom只能以other(r-x)来运行passwd。Tom可以发起一个进程,这个进程是passwd,想修改自己的密码。

第三,用户Tom执行完passwd修改密码,其实就是保存至/etc/shadow中,下面我们看看/etc/shadow文件的权限情况。

[hadoop@localhost ~]$ ls -l /etc/shadow

-r-------- 1 root root 2713 Jun 13 16:34 /etc/shadow

[hadoop@localhost ~]$ 

那个属于Tom的修改密码的进程应该要去修改/etc/shadow文件,但是根据上面的/etc/shadow的权限,除了root用户外,谁都不可以修改的!也就是说,根据进程安全模型,普通用户根本无法修改密码!但事实上,是可以修改的。原因就在于那个特殊权限s。


也就是说,suid表示运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者。也就是说普通用户去执行passwd修改密码,其实是发起了一个进程,这个进程的属主是root用户,那么很显然就可以修改shadow这个影子文件了。


3.关于sgid

根据suid的理解,可知sgid表示运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者的基本组。可以举例分析:

第一:root用户创建了一个项目目录

[root@localhost /]# 

[root@localhost /]# ls -ld /project/cma

drwxrwxr-x 2 root develop 4096 Jun 14 22:14 /project/cma


第二:项目组成员java01,java02,...均属于develop组(他们的附加组),也就是说他们对/project/cma具有rwx权限。

[java02@localhost cma]$ ls -l

total 8

-rw-rw-r-- 1 java01 java01 0 Jun 14 22:24 01.java

-rw-rw-r-- 1 java02 java02 0 Jun 14 22:25 02.java

上面看到他们可以在/project/cma中创建文件,根据以前的理论:【谁创建的文件,文件的属主就是谁,属组就是他的基本组】,上面的没有问题。但是,我们希望这些项目组成员之间可以相互编辑其他人的文件,该如何做呢?


第三:由于项目组成员java02,并不属于java01的私有组,显然java02只对01.java具有r--权限,不可以编辑。此时我们可以使用sgid,来改变默认的这种行为~

[root@localhost cma]# pwd

/project/cma

[root@localhost cma]# chmod -R g+s /project/cma 

[root@localhost cma]# ls -ld

drwxrwsr-x 2 root develop 4096 Jun 14 22:25 .

[root@localhost cma]# 

注意了,出现了特殊权限位s,但是有时候可能会显示S。【如果是s说明这个权限位上以前是具有x权限的】

第四:利用sgid后,以后我们的项目组成员便可以在此目录下编辑其他成员的文件了。

[java02@localhost cma]$ ls -l

total 16

-rw-rwSr-- 1 java01 java01  0 Jun 14 22:24 01.java

-rw-rw-r-- 1 java01 develop 0 Jun 14 22:33 01.txt

-rw-rwSr-- 1 java02 java02  0 Jun 14 22:25 02.java

-rw-rw-r-- 1 java02 develop 0 Jun 14 22:33 02.txt

[java02@localhost cma]$ 

也就是说利用sgid可以帮我们达到这样的目的:

在目录下创建的文件的属组不在是用户的基本组,而是目录的属组。


4.关于sticky

此时此刻,我们的项目组成员已经可以相互编辑/project/cma下面的文件了,但是有个要求:我们希望用户只能删除自己的文件,而不可以删除别人的文件。这就要使用sticky了。

[root@localhost cma]# chmod -R o+t /project/cma


[java01@localhost cma]$ id

uid=5016(java01) gid=5016(java01) groups=5016(java01),5018(develop) context=root:system_r:unconfined_t:SystemLow-SystemHigh

[java01@localhost cma]$ rm 02.txt

rm: cannot remove `02.txt': Operation not permitted


5.串联

还记得umask吗,umask其实就是一个XYZW,四位数,其中X表示的就是suid/sgid/striky。

chmod xyzw file,其实同理。


000 nothing

001 only striky

010 only sgid

100 only suid

......


本文转自zfz_linux_boy 51CTO博客,原文链接:http://blog.51cto.com/zhangfengzhe/1426750,如需转载请自行联系原作者


相关文章
|
7天前
|
安全 Linux 数据安全/隐私保护
【Linux】深入理解linux权限
本文深入解析Linux权限管理机制,涵盖权限概念、用户角色、文件属性及操作方法。文章分为前言、权限介绍、用户与角色、文件属性、权限修改及常见问题六大板块。详细说明了权限类型(r/w/x)、角色优先级、chmod/chown指令用法,以及目录权限、umask掩码、粘滞位等重点内容。掌握这些知识,可有效提升Linux系统安全性和灵活性,是管理员必备技能。喜欢的话别忘了点赞支持哦! ❤❤❤
29 6
|
27天前
|
安全 Unix Linux
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
25000多字详细讲解,深度剖析权限管理核心。从基础权限到复杂的特殊权限,逐一拆解,无论你是零基础小白还是经验丰富的运维人员,都能在这里找到提升技能的关键知识,全面掌握 Linux 权限管理。还不快来看看?
|
1月前
|
安全 Linux 数据安全/隐私保护
Linux权限揭秘“Root与Sudo”
Root用户是Linux系统中的超级用户,拥有对系统的完全控制权。Root用户几乎可以执行任何命令,修改任何文件,甚至删除系统上的所有内容。因此,Root用户的使用需要非常谨慎,以避免潜在的安全风险。
50 6
|
5月前
|
Linux Shell
Linux系统文件默认权限
Linux系统文件默认权限
104 2
|
4月前
|
Linux 数据安全/隐私保护
linux特殊权限!!
本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。
106 1
linux特殊权限!!
|
5月前
|
运维 监控 安全
Linux_权限理解(详细PLUS)
【10月更文挑战第3天】本文介绍了Linux系统中的权限管理基础,包括文件系统对象与权限关联、权限的继承性、字符与数字表示法的解读,以及用户、组与权限的动态交互。详细解析了`chmod`命令的高级用法和权限修改的风险,探讨了SUID、SGID和Sticky Bit等特殊权限的作用机制,并提出了基于角色的权限分配和定期权限审计的最佳实践。
134 11
|
5月前
|
Linux 应用服务中间件 nginx
Linux下权限设置之suid、sgid、sticky
Linux下权限设置之suid、sgid、sticky
|
5月前
|
Linux 数据安全/隐私保护 Windows
Linux_权限理解(详细PLUS
Linux_权限理解(详细PLUS
|
5月前
|
网络协议 Linux 网络安全
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
|
5月前
|
Linux Go 数据安全/隐私保护
Linux入门2——初识Linux权限
Linux入门2——初识Linux权限
54 0