Linux下权限设置之suid、sgid、sticky

简介: Linux下权限设置之suid、sgid、sticky

Linux下权限设置之suid、sgid、sticky
linux文件普通权限rwx
Linux中文件的普通权限一般为:rwx,对应与数字表示:421,除此之外,文件还有三种特殊权限,就这是我们本节要讲的三种特殊文件权限。

linux文件特殊权限 suid、sgid、sticky
linux文件的三种特殊权限分别是:suid权限、sgid权限、sticky权限;其中suid权限作用于文件属主,sgid权限作用于属组上,sticky权限作用于other其他上。

suid权限
作用:让普通用户临时拥有该文件的属主的执行权限,suid权限只能应用在二进制可执行文件(命令)上,而且suid权限只能设置在属主位置上。

suid权限使用s表示,增加权限u+s,移除权限u-s;
suid权限也可以使用数字形式表示,0表示去除suid权限,4表示添加suid权限,而且是在原权限的数字表达形式开头加0或4,如:0755移除suid权限,4755添加suid权限。

例如:普通用户执行执行passwd命令时需要去修改/etc/shaow等文件,但ll /etc/shaow发现该文件没有任何权限,即普通用户对/etc/shaow文件是没有写入权限的,所以普通用户是怎么实现成功修改自己的密码的呢?答案是临时拥有了root权限(root超级管理员可以对任何文件进行修改)来实现密码的修改,suid权限只能应用在二进制可执行文件上。

[root@localhost ~]# ll /etc/shadow #这个文件没有任何权限,只有root超级管理员才能修改---------- 1 root root 1575 Oct 5 22:48 /etc/shadow[root@localhost ~]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd #有个suid权限,这就说明了普通用户执行passwd命令时临时提权到root权限了,所以才有root权限才写到shadow文件

去除suid权限suid权限的去除可以使用数字或字母的形式添加,如果使用数字,0表示去除权限,4表示添加权限,而且是在原权限的数字表达形式开头加0或4,如下:

[root@localhost ~]# ll /bin/passwd #查看passwd命令的权限,有suid权限-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /bin/passwd #查看passwd命令的权限,有suid权限[root@localhost ~]# chmod 0755 /usr/bin/passwd #在原数字表达权限前加0就表示去除suid权限(命令等价于chmod u-s /usr/bin/passwd)[root@localhost ~]# ll /usr/bin/passwd #查看passwd命令的权限,没有了suid权限,但这时任何普通用户都修改不了密码,如前面介绍的那样,因为任何普通用户都对shadow文件没有写入权限 -rwxr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd

增加suid权限

[root@localhost ~]# chmod 4755 /usr/bin/passwd #在原数字表达权限前加4就表示添加suid权限(命令等价于chmod u+s /usr/bin/passwd)

[root@localhost ~]# ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd #suid权限已经添加成功,普通用户可以正常修改他们的密码

[root@localhost ~]#

sgid权限
作用:sgid权限一般应用在目录上,当一个目录拥有sgid权限时,任何用户在该目录下创建的文件的属组都会继承该目录的属组。

sgid权限也使用s表示,增加权限g+s,移除权限g-s;
sgid权限也可以使用数字形式表示,0表示去除sgid权限,2表示添加sgid权限,而且是在原权限的数字表达形式开头加0或2,如:0755移除sgid权限,2755添加sgid权限。

增加sgid权限
sgid权限也使用s表示,增加权限g+s,移除权限g-s;
sgid权限也可以使用数字形式表示,0表示去除sgid权限,2表示添加sgid权限,而且是在原权限的数字表达形式开头加0或2,如:0755移除sgid权限,2755添加sgid权限。

演示示例:

[zhangsan@localhost ~]$ ll -d Test/
drwxrwxr-x 2 zhangsan nginx 6 Oct 13 20:44 Test/ #查看目录的权限,都是普通权限,属主是zhangsan,属组是nginx
[zhangsan@localhost ~]$ touch Test/file1 #创建一个file1文件
[zhangsan@localhost ~]$ ll Test/file1
-rw-rw-r-- 1 zhangsan zhangsan 0 Oct 13 20:47 Test/file1 #file1的的属主属组都是zhangsan
[zhangsan@localhost ~]$ rm -rf Test/file1 #先删除file1
[zhangsan@localhost ~]$ chmod 2755 Test/ #增加sgid权限
[zhangsan@localhost ~]$ ll -d Test/
drwxr-sr-x 2 zhangsan nginx 19 Oct 13 20:47 Test/ #sgid权限已经增加了,属组位置上有了一个s
[zhangsan@localhost ~]$ touch Test/file2 #重新创建一个file2文件
[zhangsan@localhost ~]$ mkdir Test/test #也创建一个目录
[zhangsan@localhost ~]$ ll Test/ #查看创建的文件和目录
total 0
-rw-rw-r-- 1 zhangsan nginx 0 Oct 13 20:59 file2 #属组都与Test目录的属组一样,这是因为Test目录具有sgid权限
drwxrwsr-x 2 zhangsan nginx 6 Oct 13 20:59 test
[zhangsan@localhost ~]$

移除sgid权限
sgid权限也使用s表示,增加权限g+s,移除权限g-s;
sgid权限也可以使用数字形式表示,0表示去除sgid权限,2表示添加sgid权限,而且是在原权限的数字表达形式开头加0或2,如:0755移除sgid权限,2755添加sgid权限。

演示示例:

[zhangsan@localhost ~]$ chmod g-s Test/ #使用字母形式移除sgid权限

[zhangsan@localhost ~]$ ll -d Test/

drwxr-xr-x 3 zhangsan nginx 44 Oct 13 20:59 Test/ #sgid权限已被移除

[zhangsan@localhost ~]$

sticky权限
作用:sticky权限一般针对目录来设置,作用是只允该目录下的文件的创建者删除自己的创建的文件,不允许其他人删除文件。(root用户除外,因为root用户是超级管理员),而且sticky权限只能设置在other位置上。

sticky权限使用t表示,增加权限o+t,移除权限o-t;
sticky权限也可以使用数字形式表示,0表示去除权限,1表示添加权限,而且是在原权限的数字表达形式开头加0或1,如下:如:0755移除sticky权限,1755添加sticky权限。

演示示例:

[root@localhost /]# mkdir /test_tmp #创建目录
[root@localhost /]# chmod 777 test_tmp/ #设置权限
[zhangsan@localhost /]$ ll test_tmp/ -d #查看test_tmp的权限
drwxrwxrwx 2 root root 6 Oct 6 17:28 test_tmp/
[zhangsan@localhost test_tmp]$ echo "fsdsdsd" >> zhangsan.txt #张三用户登录并创建一个zhangsan.txt文件
[lisi@localhost test_tmp]$ echo "fsdsdsd" >> lisi.txt #李四用户登录并创建一个lisi.txt文件
[zhangsan@localhost test_tmp]$ rm -rf lisi.txt #张三用户删除李四的lisi.txt文件,正常删除
[lisi@localhost test_tmp]$ rm -rf zhangsan.txt #李四用户删除张三的zhangsan.txt文件,正常删除

以上的删除就是不合理的,因为test_tmp的权限是777权限,所以我们需要使用sticky权限来限制用户自己删除自己创建的文件,不能删除别人的文件。
[root@localhost /]$ ll tmp/ -d #查看系统默认的tmp目录权限,发现tmp目录就有sticky权限
drwxrwxrwt. 12 root root 4096 Oct 6 17:37 tmp/
[zhangsan@localhost /]$ echo "fsdsdsd" >> zhangsan.txt #张三用户登录并在tmp目录创建一个zhangsan.txt文件
[lisi@localhost /]$ echo "fsdsdfdfdsd" >> lisi.txt #张三用户登录并在tmp目录创建一个lisi.txt文件
[zhangsan@localhost tmp]$ ll zhangsan.txt lisi.txt #查看我们创建的文件
-rw-rw-r-- 1 lisi lisi 7 Oct 6 17:23 lisi.txt
-rw-rw-r-- 1 zhangsan zhangsan 9 Oct 6 17:25 zhangsan.txt
[zhangsan@localhost tmp]$ rm -rf lisi.txt #张三删除李四的lisi.txt,权限报错,删除使用,这就是因为tmp目录的沾滞位权限t起的作用
rm: cannot remove ‘lisi.txt’: Operation not permitted
[lisi@localhost tmp]$ rm -rf zhangsan.txt #李四删除张三的zhangsan.txt,权限报错,删除使用,这就是因为tmp目录的sticky权限起的作用
rm: cannot remove ‘zhangsan.txt ’: Operation not permitted

[kod.liyumenhotel.com)
[kod.hotins-sh.com)
[kod.wuyejie.com)
[kod.hlphzc.com)
[kod.laixituangou.com)
[kod.andyit.net)
[kod.tjbxt.com)
[kod.hehuakeng.com)
移除sticky权限
sticky权限使用t表示,增加权限o+t,移除权限o-t;
sticky权限也可以使用数字形式表示,0表示去除权限,1表示添加权限,而且是在原权限的数字表达形式开头加0或1,如下:如:0755移除sticky权限,1755添加sticky权限。演示示例如下:

[root@localhost /]# chmod -R o-t /test_tmp/ #移除sticky权限,加-R表示对目录递归

[root@localhost /]# chmod -R 0777 /test_tmp/ #移除sticky权限,加-R表示对目录递归增加

sticky权限

[root@localhost /]# chmod -R 1777 /test_tmp/ #等价于chmod -R o+t /test_tmp/,加-R表示对目录递归

[root@localhost /]# ll -d test_tmp/drwxrwxrwt 2 root root 6 Oct 6 17:28 test_tmp/

相关文章
|
6月前
|
Ubuntu Linux 网络安全
在Linux云服务器上限制特定IP进行SSH远程连接的设置
温馨提示,修改iptables规则时要格外小心,否则可能导致无法远程访问你的服务器。最好在掌握足够技术知识和理解清楚操作含义之后再进行。另外,在已经配置了防火墙的情况下,例如ufw(Ubuntu Firewall)或firewalld,需要按照相应的防火墙的规则来设置。
365 24
|
6月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
159 18
|
6月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
399 3
|
7月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
622 25
|
9月前
|
安全 Unix Linux
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
25000多字详细讲解,深度剖析权限管理核心。从基础权限到复杂的特殊权限,逐一拆解,无论你是零基础小白还是经验丰富的运维人员,都能在这里找到提升技能的关键知识,全面掌握 Linux 权限管理。还不快来看看?
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
|
8月前
|
安全 Linux 数据安全/隐私保护
【Linux】深入理解linux权限
本文深入解析Linux权限管理机制,涵盖权限概念、用户角色、文件属性及操作方法。文章分为前言、权限介绍、用户与角色、文件属性、权限修改及常见问题六大板块。详细说明了权限类型(r/w/x)、角色优先级、chmod/chown指令用法,以及目录权限、umask掩码、粘滞位等重点内容。掌握这些知识,可有效提升Linux系统安全性和灵活性,是管理员必备技能。喜欢的话别忘了点赞支持哦! ❤❤❤
483 6
|
2月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
420 2
二、Linux文本处理与文件操作核心命令
|
2月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
290 137
|
2月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
676 57