首页 > 系统相关 >Linux下权限设置之suid、sgid、sticky

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

时间:2024-10-11 13:48:37浏览次数:8  
标签:tmp suid root sticky Linux sgid 权限 zhangsan localhost

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

移除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/

 

转载>>>>>>>>>>>>>Linux中文件特殊权限suid、sgid、sticky(有图详细讲解)-CSDN博客

标签:tmp,suid,root,sticky,Linux,sgid,权限,zhangsan,localhost
From: https://www.cnblogs.com/Zhaolongtao/p/18458201

相关文章

  • linux入门到实操-2 linux桌面、终端基本操作,文件系统、目录结构、挂载点
     教程来源:B站视频BV1WY4y1H7d33天搞定Linux,1天搞定Shell,清华学神带你通关_哔哩哔哩_bilibili整理汇总的课程内容笔记和课程资料,供大家学习交流下载:夸克网盘分享本文内容为完整笔记的基础篇的1、2、3内容目录1.桌面和终端基本操作类似的图形化界面操作(省略)切换到终端页面2.Linux文......
  • Linux安装Jenkins指南
    Linux安装Jenkins指南Jenkins,作为一款开源的自动化服务器,广泛用于持续集成和持续部署(CI/CD)流程中。它提供了强大的插件生态系统,使得集成各种开发工具、版本控制系统和构建工具变得简单高效。本文将详细介绍如何在Linux系统上安装和配置Jenkins。一、准备工作机器要求:内存不少......
  • Android SELinux——Sepolicy基础语法(四)
           通过前面的文章内容,我们对 SELinux目录和te文件有一个初步的了解,这里我们继续研究Sepolicy的语法规范。一、Sepolicy语言介绍       Linux中有两种东西,一种死的(Inactive),一种活的(Active)。活的东西就是进程,而死的东西就是文件(Linux哲学,万物皆文......
  • Brave编译指南2024 Linux篇-项目结构(二)
    引言在上一部分中,我们介绍了Brave浏览器的基本概念和本指南的目标。现在,我们将深入探讨Brave项目的结构,并开始为编译过程做准备。理解项目结构对于后续的编译过程至关重要,它能帮助我们更好地理解各个组件的作用。同时,充分的准备工作将确保我们的编译过程顺利进行。让我们一起......
  • Android SELinux——allow语句参数(五)
           通过上一篇文章我们知道,TE(TypeEnforcement,类型强制)的allow语句中主要包括主体(source)、对象(target)、类别(class)和权限(permissions),这里我们就来看一下其中的参数信息。一、参数详解1、主体        在SELinux的上下文中,主体类型source是指发起访......
  • Linux !ko/5.17-BBRplus AMD64(X86_64)内核致命的 futex_wait 函数死锁问题。
    !ko表示系统内核(system-kernel)致命:在CentOS(RedHat)、Ubuntu、Debian等多个发行版本Linux操作系统上,若人们升级 5.17-BBRplus版本内核,那么在应用程式频繁的futex_wait(syscall)等待唤醒时,或会存在futex_wait函数发生死锁的疑难问题。LMP:futex(2)-Linuxmanualpa......
  • Linux常用命令
    ifconfig显示网络设备信息,查看对应的ip地址等history查看历史操作指令last列出目前与过去登入系统的用户相关信息相关指令:lastbwhoami查看当前登录的用户top显示当前系统进程的相关信息,包括进程ID、内存占用率、CPU占用率等vim编辑器命令模式......
  • 【Linux探索学习】第三弹——Linux的基础指令(下)——开启新篇章的大门
    Linux基础指令(上):【Linux探索学习】第一弹——Linux的基本指令(上)——开启Linux学习第一篇-CSDN博客Linux基础指令(中):【Linux探索学习】第二弹——Linux的基础指令(中)——夯实基础第二篇-CSDN博客前言:在前面我们已经讲了有十几个Linux的基础指令及相关的知识了,今天我们再补充......
  • 虚拟机安装openEuler、Linux系统常见问题--(1) 网络不通
    本文以openEuler22.03LTSSP4系统为例:openEuler系统和Windows桌面切换1、使用Ctrl+G切换2、使用Ctrl+alt切换NAT桥接-网络不通问题1、查看Windows网络配置以NAT桥接网络,VMware使用网卡“VMwareNetworkAdapterVMnet8”与虚拟机通信,可通过以下方法查看VMn......
  • linux-vm-tools/ubuntu/24.04 /install.sh
    一、#!/bin/bash##ThisscriptisforUbuntu22.04JammyJellyfishtodownloadandinstallXRDP+XORGXRDPvia#source.##Majorthanksto:http://c-nergy.be/blog/?p=11336forthetips.#################################################################......