首页 > 其他分享 >特殊文件权限

特殊文件权限

时间:2023-07-10 23:13:08浏览次数:36  
标签:文件 特殊 suid passwd 用户 权限 root

特殊文件权限

除了9位基本权限rwx rwx rwx之外,linux权限位,还有3个特殊权限,一共是12位权限。

suid(setuid)

sgid(setgid)

sbit(sticky)

特殊权限对照表

类别 suid sgid sticky
字符表示 S S T
出现位置 用户权限位x 用户组权限位x 其他用户权限位x
基本权限位有x s s t
数字表示法 4 2 1
八进制表示法 4000 2000 1000
生效对象 用户位 用户组 其他用户

一、SUID 特殊权限

1. suid通过S字符标识,存在于用户权限位的x权限对应位置。
2. 如果某文件,用户权限位本身就有x权限,给该文件设置suid权限时,则以小写s标识,否则就是大写的S字符。
3. 给文件设置s权限对应的数字表示法是4,八进制数下可以用4000
4. suid同样也用chmod设置权限,可以以字符法,数字法两种标识。
[yuchao01@yuchao-linux01 ~]$ ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd

SUID 特殊权限仅适用于可执行文件
所具有的功能是,只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,会以文件属主的身份去执行此文件
一旦文件执行结束,身份的切换也随之消失。

解释关于linux的用户创建。
用户创建完用户后,需要修改密码,执行passwd命令
但是passwd命令需要读取,修改/etc/passwd、/etc/shadow文件,这些文件都是属于root,那不就没权限操作了吗,但是普通用户,如何执行passwd命令,修改自己的密码呢?
可以让普通用户临时获得root的身份,不就有属主的权限了吗。
这就是设置SUID的一个根本原因。且SUID特殊权限,只能用在二进制可执行文件上。
# 去除passwd的s权限
[root@yuchao-linux01 yuchao01]# chmod u-s /usr/bin/passwd
[root@yuchao-linux01 yuchao01]# ll /usr/bin/passwd
-rwxr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd

# 如何再给SUID特殊权限加上去。
[root@yuchao-linux01 ~]# ll /usr/bin/passwd
-rwxr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd
# 添加方式一
[root@yuchao-linux01 ~]# chmod u+s /usr/bin/passwd 
# 添加方式二,数字权限
[root@yuchao-linux01 ~]# chmod 4755 /usr/bin/passwd
[root@yuchao-linux01 ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd

总结suid

请注意:学习SUID是为了知道有它的存在,但不要随便用。

SUID位的文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。

如果属主是root的话,那么执行人就有超级用户的特权了。这时该位将变成一个安全漏洞,因此不要轻易设置该位。

1. suid功能是针对二进制可执行命令设置的,不能用在shell脚本上。
2. 用户权限位的x权限位置处,如果有s或S,表示该命令存在suid权限。
3. suid的作用就是,让普通用户在执行设置了suid权限的命令时,可以拥有其(属主)的权限(一般默认是root)。
4. 二进制命令,如系统提供的ls,mkdir等命令,都需要有x权限才可以操作。
5. suid是一个危险的命令,对系统有一定威胁,一般依然是用sudo命令代替suid等特殊权限操作。
6. 系统安全优化时,会尽量去除所有设置suid的命令。

二、SGID特殊权限

1.对于二进制命令来说,sgid的功能和suid基本一样,只不过一个是设置文件属主的权限,一个是设置属组的权限,和9位基本rwx那个理解概念一样。
2. suid是获得文件属主的权限,sgid是获得文件属组的权限
3. sgid主要用于文件夹,为某个目录设置sgid之后,在该目录中的创建的文件,都以(目录的属组)权限为准,而不属于创建该文件的用户权限,这就实现了多个用户,可以共享一个目录的作用。

对文件来说

1. sgid只对二进制命令生效,且需要二进制命令本身有x权限。
2. 执行包含sgid权限的二进制命令时,会获得该命令在执行期间所属的组的身份与权限。

对文件夹来说

1. linux中所有的用户,默认创建的文件,文件夹,属主和属组都是用户自身。
2. 设置了sgid的目录,会保证在这个目录下创建的文件、文件夹都保持同样的权限属性,都属于该目录的属组权限。
# 去除passwd的s权限
[root@yuchao-tx-server ~]#chmod g-s /home/admins/
# 加上sgid特殊权限
# 添加方式一
[root@yuchao-tx-server ~]#chmod g+s /home/admins/
# 添加方式二,数字权限
[root@yuchao-tx-server ~]# chmod 2770 /home/admins/

[root@yuchao-tx-server ~]# ll -ld /home/admins/
drwxrws--- 2 root adminuser 4096 3月  16 18:44 /home/admins/

三、SBIT特殊权限(sticky bit)

sbit原理

粘滞位(Sticky bit),又称作粘着位,linux下另一个特殊权限。

sbit粘滞位,用的已经很少了,但是对于系统特殊文件夹/tmp来说,是整个系统所有用户的临时文件存放地,谁都有任意的权限,你会发现该目录的权限巨大。

[root@yuchao-tx-server ~]# ll -d /tmp/
drwxrwxrwt. 8 root root 4096 3月  16 18:54 /tmp/

但是看到了一个特殊权限t
一句话总结。
当目录有了粘滞位特殊权限,这个目录除了root用户特殊以外,任何用户都只能删除、移动自己的创建的文件,而不能影响到其他人。

演示
没有设置粘滞位,且目录是777权限时,也就是任意的user、group、other角色在这个目录下,可以进行读、写、执行任意文件。

最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件。

如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。

实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。

因此,t权限,是用于限制用户权限,禁止用户删除其他人资料的

[root@jumpserver ~]# ll /tmp/ -d
drwxrwxrwt. 14 root root 4096 Feb 10 18:49 /tmp/


命令:chmod

语法:# chmod   [选项]    文件夹

作用:只允许文件的创建者和root用户删除文件

常用选项

o+t 添加粘滞位

o-t 去掉粘滞位

用法:chmod o+t 目录名

示例代码:
#chmod o+t 
含义:给目录增加粘滞位权限。

标签:文件,特殊,suid,passwd,用户,权限,root
From: https://www.cnblogs.com/chunjeh/p/17542606.html

相关文章

  • 多种方法在Linux系统上创建文件
    参考文章:多种方法在Linux系统上创建文件当涉及到在Linux系统上创建文件时,以下是一些常用的方法的更详细解释:使用touch命令:touchfilename该命令用于创建一个新的空文件,或者更新现有文件的访问和修改时间戳。如果指定的文件不存在,它会被创建。使用文本编辑器:命令行文本......
  • 详解如何修改Linux文件权限
    参考:详解如何修改Linux文件权限在Linux系统中,可以使用chmod命令来修改文件的权限。该命令用于更改文件或目录的读取(r),写入(w)和执行(x)权限。以下是一些详细的说明和示例:使用数字表示权限:r(读取)=4,w(写入)=2,x(执行)=1。数字组合用于表示所需的权限,例如:rwx(读取、写入和执行)=7,rw-(读......
  • C# 进程间通过内存映射文件通信
    内存映射文件(Memory-mappedfiles)是一种很好的进程间通信方式,它暴露了底层的细节,具有很强的扩展性以及性能。这里展示一个利用内存映射文件制作的变量同步工具。该工具当前存在的问题是:每次会同步变量的所有字段,不能针对某个字段进行同步。没有使用双缓冲,超出64位的字段......
  • 解决Docker -v 挂载单文件问题
    问题描述下面命令挂载文件看着没有什么问题吧? dockerrun--namexxxx-p8001:80-v/docker/appsettings.json:/app/appsettings.json-dxxxx:v1.1.0但当我们执行完就会发现文件并没有挂载过来而是给我们创建了一个文件夹 解决方案 官方的建议是挂载文件夹,而不是......
  • 解决从springboot配置文件application.properties获取中文乱码
    这里因为自带的iso编码格式需要进行如下操作 新增两个文件重写packagecom.java.file.config;importorg.springframework.boot.origin.Origin;importorg.springframework.boot.origin.OriginTrackedValue;importorg.springframework.boot.origin.TextResourceOrigin;......
  • Windows计算机如何在线打开Sketch文件?
    自Sketch诞生以来,只有Mac版本。Windows计算机如何在线打开Sketch文件?即时设计已经解决了你遇到的大部分问题,不占用内存也是免费的。您可以使用此软件直接在线打开Sketch文件,完整预览并导出CSS、SVG、PNG等,还具有编辑功能! 如何导入Sketch文件?如果需要切换设计工具,能够......
  • Java实现浏览器端大文件分片上传实例
    ​ 上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败。一开始以为是session过期或者文件大小受系统限制,导致的错误。查看了系统的配置文件没有看到文件大小限制,web.xml中seesiontimeout是30,我把它改成了120。但还是不行,有时候10分钟就崩了。同事说,可能是客户这里......
  • aardio桌面软件开发 简单,打包后文件小,支持 .net python 和 众多插件
    aardio编程语言-官网 aardio ......
  • Linux_硬盘和文件系统_操作步骤和排查方式
    -技术背景DRIVEOrin™的AI计算与完整传感器套件-提供每秒254TOPS(万亿次运算)DRIVEAtlanDRIVEThor-计划于2025年开始量产2000万亿次浮点运算性-MobileyeEyeQ51.操作系统车端--EXTLINUXisaSyslinuxvariantwhichbootsfromaLinuxfilesystem.###操作......
  • MarkDown的特殊效果编辑源代码格式
    前置条件:所有符号一律使用英文输入法(#、*、-在英文和中文输入法中相同,故不做区分)标题:#+空格+标题具体到几级标题就用几个#,typora最多6个字体变化:在字体两边添加         *字体*斜体         **字体**加粗     ......