22.5)特殊权限

22.5.1)SetUID(简称suid)(数字权限是4000)

命令功能: 临时使用命令的属主权限执行该命令。即如果文件有suid权限时,那么普通用户去执行该文件时,会以该文件的所属用户的身份去执行。主要是对命令,或者二进制文件,以该二进制文件的属主权限来执行该文件。

SetUID(简写suid):会在属主权限位的执行权限上写个s。 如果该属主权限位上有执行权限,则会在属主权限位的执行权限上写个s(小写字母s); 如果该属主权限位上没有执行权限,则会在属主权限位的执行权限上写个S(大写字母S)。


setUID(简称suid)权限设置:
方式1:[root@centos7 ~]# chmod u+s filename
方式2:[root@centos7 ~]# chmod 4755 filename


[root@centos7 ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd

示例1:
如果该属主权限位上没有执行权限,则会在属主权限位的执行权限上写个S(大写字母S)。
[root@centos7 ~]# touch file02                     #创建文件file02
[root@centos7 ~]# ll file02 #可以看到文件file02的属主权限位上没有执行x权限
-rw-r--r--. 1 root root 0 Jul 2 15:53 file02
[root@centos7 ~]# chmod u+s file02                 #赋予setUID(suid)权限
[root@centos7 ~]# ll file02 #setUID命令会在属主权限位的执行权限上写个S(大写字母S)
-rwSr--r--. 1 root root 0 Jul 2 15:53 file02

示例2:
如果该属主权限位上有执行权限,则会在属主权限位的执行权限上写个s(小写字母s)。
[root@centos7 ~]# touch file03 #创建文件file03
[root@centos7 ~]# chmod 744 file03
[root@centos7 ~]# ll file03 #可以看到文件file03的属主权限位上有执行x权限
-rwxr--r--. 1 root root 0 Jul 2 15:59 file03
[root@centos7 ~]# chmod u+s file03 #赋予setUID(suid)权限
[root@centos7 ~]# ll file03 #setUID命令会在属主权限位的执行权限上写个S(小写字母s)
-rwsr--r--. 1 root root 0 Jul 2 15:59 file03

示例3:
在Linux系统中,每个普通用户都可以更改自己的密码,普通用户的信息保存在 /etc/passwd文件中,用户的密码信息保存在 /etc/shadow 文件中,也就是说,普通用户在更改自己密码时,修改了 /etc/shadow 文件中的登录密码,但是文件权限显示普通用户对这两个文件都没有写权限。那么为什么普通用户可以修改自己的密码,并将修改后的密码,写入 /etc/shadow 文件中呢?
原因是普通用户之可以能够修改密码,原因在于passwd命令,该命令拥有特殊权限,SetUID,也就是咱们看到的,在属主的权限位的执行权限上是 s,passwd文件以该所属用户的身份(即root用户身份)去执行,因此可以修改密码 。

SetUID(简称suid)总结: 1.让普通用户对可执行的二进制文件,临时拥有二进制文件的属主权限; 2.如果设置的二进制文件没有执行权限,那么suid的权限显示就是S(大写字母S); 3.特殊权限suid仅对二进制可执行程序有效,其他文件或目录则无效。

注意:suid极其危险,不信可以尝试对vim或者rm命令进行设定suid,如果给vim或者rm命令设置了setUID,那么任何文件都能编辑或者删除了,相当于有root权限了。

22.5.3 setGID(简称sgid)(数字权限是2000)

命令功能:多个用户共享一个组(仅作了解)。主要是针对目录进行授权,共享目录。

如果该属组权限位上有执行权限,则会在属组主权限位的执行权限上写个s(小写字母); 如果该属组权限位上没有执行权限,则会在属组主权限位的执行权限上写个S(大写字母S)。

[root@oldboyedu ~]# ll /bin/write 
-rwxr-sr-x. 1 root tty 19624 Oct 31 2018 /bin/write


setGID权限设置:
[root@db04 ~]# chmod 2755 /tmp/test/
[root@db04 ~]# chmod g+s /tmp/test/

示例1:
[root@centos7 ~]# mkdir /tmp/test           #创建/tmp/test目录
[root@centos7 ~]# ll /tmp/test/ -d         #查看/tmp/test目录,属组权限有执行x权限
drwxr-xr-x. 2 root root 6 Jul 2 17:32 /tmp/test/
[root@centos7 ~]# touch /tmp/test/root_file
[root@centos7 ~]# ll /tmp/test/root_file
-rw-r--r--. 1 root root 0 Jul 2 18:27 /tmp/test/root_file
[root@centos7 ~]# su - linux01             #切换到用户linux01
在root下:
[root@centos7 ~]# chmod 777 /tmp/test/     #给目录/tmp/test修改权限
[root@centos7 ~]# ll -d /tmp/test/
drwxrwxrwx. 2 root root 23 Jul 2 18:27 /tmp/test/
在linux01下:
[linux01@centos7 ~]$ touch /tmp/test/linux01_file     #在目录/tmp/test下创建linux01_file
[linux01@centos7 ~]$ ll /tmp/test/linux01_file #linux01_file属组权限没有执行x权限
-rw-rw-r--. 1 linux01 linux01 0 Jul 2 18:35 /tmp/test/linux01_file
在root下:
[root@centos7 ~]# chmod g+s /tmp/test/ #赋予setGID(sgid)权限
[root@centos7 ~]# ll -d /tmp/test/ #setGID命令会在属组权限位的执行权限上写个S(小写字母s)
drwxrwsrwx. 2 root root 43 Jul 2 18:35 /tmp/test/


SetGID(简称sgid)总结
1.针对用户组权限位修改,用户创建的目录或文件所属组和该目录的所属组一致。
2.当某个目录设置了sgid后,在该目录中新建的文件不在是创建该文件的默认所属组
3.使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单。
22.5.4 sbit 粘滞位(数字权限是1000)

命令功能:粘滞位,即便是该目录拥有w权限,但是除了root用户,其他用户只能对自己的文件进行删除、移动操作。

[root@oldboyedu ~]# ll -d /tmp/ drwxrwxrwt. 8 root root 105 Jul 2 10:15 /tmp/

如果该其他用户权限位上有执行权限,则会在其他用户权限位的执行权限上写个t(小写字母); 如果该其它用户权限位上没有执行权限,则会在其他用户权限位的执行权限上写个T(大写字母)。

授权方式:
[root@db04 ~]# chmod 1755 /opt
[root@db04 ~]# chmod o+t /opt

sticky(SI TI KI)粘滞,目前只对目录有效,作用如下:
普通用户对该目录拥有w和x权限,即普通用户可以在此目录中拥有写入权限,如果没有粘滞位,那么普通用户拥有w权限,就可以删除此目录下的所有文件,包括其他用户建立的文件。但是一旦被赋予了粘滞位,除了root可以删除所有文件,普通用户就算有w权限也只能删除自己建立的文件,而不能删除其他用户建立的文件。

系统中存在的/tmp目录是经典的粘滞位目录,谁都有写权限,因此安全成问题,常常是木马第一手跳板。

22.6Linux权限属性

chattr概述:凌驾于r、w、x、suid、sgid之上的权限。

22.6.1 lsattr

命令功能:查看特殊权限。

    [root@centos7 ~]# lsattr /etc/passwd
---------------- /etc/passwd
22.6.2 chattr

命令功能:设置特殊权限,chattr命令用来改变文件属性。

    -i     #锁定文件,不能编辑,不能修改,不能删除,不能移动,可以执行
  -a     #仅可以追加文件,不能编辑,不能删除,不能移动,可以执行
    示例:
(1)用chattr命令防止系统中某个关键文件被修改。
chattr +i /etc/fstab (2)让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作
chattr +a /data1/user_act.log

22.7 Linux进程掩码 umask

22.7.1 什么是umask

当我们登录系统之后,创建一个文件总是有一个默认权限,比如: 目录默认权限:755 文件默认权限:644 那么这个权限是怎么来的呢? 不瞒你说,这就是umask做的,umask设置了用户创建文件的默认权限。

22.7.2 umask是如何改变新文件的权限

系统默认umask为022,那么当我们创建一个目录时,正常情况下目录的权限应该是777,但是umask表示要减去的值,所以新目录文件的权限应该是777-022=755。至于文件的权限也依次类推:666-022=644

22.7.3 umask涉及到的配置文件

umask涉及到的相关文件/etc/bashrc /etc/profile ~/.bashrc ~/.bash_profile

示例1:

目录:
0777-0022=0755
0777-0023=0754
[root@centos7 ~]# umask 0023   #设置umask值为0023
[root@centos7 ~]# mkdir zls4   #创建目录zls4
[root@centos7 ~]# stat zls4     #查看zls4的umask值
File: ‘zls4’
Size: 6         Blocks: 0         IO Block: 4096   directory
Device: 803h/2051d Inode: 50696782   Links: 2
Access: (0754/drwxr-xr--) Uid: (   0/   root)   Gid: (   0/   root)
Context: unconfined_u:object_r:admin_home_t:s0


文件:
0666-0022=0644
[root@centos7 ~]# umask 0022         #umask值恢复为0022
[root@centos7 ~]# touch oldboy1       #创建文件oldboy1
[root@centos7 ~]# ll oldboy1         #查看文件oldboy1的umask值
-rw-r--r--. 1 root root 0 Jul 2 20:28 oldboy1

示例2:
[root@centos7 ~]# umask 24             #设置umask值为0024
[root@centos7 ~]# mkdir zls5           #创建目录zls5
[root@centos7 ~]# touch oldboy2       #创建文件oldboy2

# 目录 umask 0777-0024=0753
[root@centos7 ~]# ll -d zls5
drwxr-x-wx. 2 root root 6 Jul 2 20:34 zls5


# 文件 umask 0666-0024=0642
[root@centos7 ~]# ll oldboy2
-rw-r---w-. 1 root root 0 Jul 2 20:34 oldboy2

示例3:
umask=0023(最后一位数是奇数时)
目录:0777-0023=0754
文件:0666-0023=064(3+1,最后一位3需要加上1)

示例4:
umask=0051(最后第二位、最后一位数都是奇数时)
目录:0777-0051=0726
文件:0666-0051=06(1+1,倒数第二位1需要加上1)(5+1,最后一位3需要加上1)

Linux基础之特殊权限的更多相关文章

  1. linux 基础 文件系统 用户权限

    描述Linux系统的启动过程? 1.开机自检 BIOS 2.MBR引导 3.GRUB菜单 4.加载内核 5.运行init进程 6.从/etc/inittab读取运行级别 7.根据/etc/rc.sys ...

  2. Linux基础_网站权限规划

    Linux系统默认的权限: 对于文件来说, 默认的权限: rw-r--r-- 644 对于目录来说:rwxr-xr-x  755 网站比较安全的权限: 网址程序存放在/app/blog 目录下面. 1 ...

  3. linux基础指令以及权限管理

    基础指令 #打印字符串 echo hello linux #将file1 和 file2粘合在一起,打印到标准输出流 cat file1 file2 标准输入输出 标准输入,stdin,即键盘.鼠标输 ...

  4. Linux基础3(文件权限)

    文件权限 1.普通权限 (登陆用户对文件或目录的读写执行的权限) 普通权限对管理员用户无效 文件和目录 都有4中类型的用户u 所有者 : 文件.目录的创建者g 所属组 : 文件.目录属于的用户组o 其 ...

  5. (大数据工程师学习路径)第一步 Linux 基础入门----用户及文件权限管理

    用户及文件权限管理 实验介绍 1.Linux 中创建.删除用户,及用户组等操作. 2.Linux 中的文件权限设置. 一.Linux 用户管理 Linux 是一个可以实现多用户登陆的操作系统,比如“李 ...

  6. Linux基础知识第七讲,用户权限以及用户操作命令

    目录 Linux基础知识第七讲,用户权限以及用户操作命令 一丶简介linux用户,用户权限,组的概念. 1.1 基本概念 1.2 组 1.3 ls命令查看权限. 二丶用户权限修改命令 1.chmod ...

  7. Linux 基础——权限管理命令chmod

    一.Linux中的文件权限与目录权限 Linux中定义了3种访问权限,分别是r.w.x.其中r表示对象是可读的,w表示对象是可写的,x表示对象是可执行的,这3种权限组成一组rwx分别对应对象的3个安全 ...

  8. Linux基础系统权限

    Linux基础系统权限 文件权限 Linux中,每个文件拥有三种权限 权限 对文件的影响 对目录的影响 r(读取) 可读取文件 可列出目录内容 w(写入) 可修改文件内容 可在目录中创建删除文件 x( ...

  9. Linux基础命令和文件权限

    Linux命令与文件权限 Linux基础命令   reboot  重启   cd         切换目录   cd ..     回到上一级目录   cd ~      回到主目录   cd /  ...

随机推荐

  1. github 上传更新代码(最简单的方法)

    1.首先你需要一个github账号,还没有的朋友先去注册一个吧! GitHub地址:https://github.com/ 我们使用git需要先安装git工具,这里给出下载地址,下载后一路直接安装即可 ...

  2. MySQL之SQL优化详解(三)

    目录 MySQL 之SQL优化详解(三) 1. 索引优化 2. 剖析报告:Show Profile MySQL 之SQL优化详解(三) 1. 索引优化 一旦建立索引,select 查询语句的where ...

  3. Sqoop 简介与安装

    一.Sqoop 简介 Sqoop是一个常用的数据迁移工具,主要用于在不同存储系统之间实现数据的导入与导出: 导入数据:从MySQL,Oracle等关系型数据库中导入数据到HDFS.Hive.HBase ...

  4. spring 5.x 系列第7篇 —— 整合Redis客户端 Jedis和Redisson (xml配置方式)

    文章目录 一.说明 1.1 Redis 客户端说明 1.2 Redis可视化软件 1.3 项目结构说明 1.3 依赖说明 二.spring 整合 jedis 2.1 新建基本配置文件 2.2 单机配置 ...

  5. (数据科学学习手札62)详解seaborn中的kdeplot、rugplot、distplot与jointplot

    一.简介 seaborn是Python中基于matplotlib的具有更多可视化功能和更优美绘图风格的绘图模块,当我们想要探索单个或一对数据分布上的特征时,可以使用到seaborn中内置的若干函数对数 ...

  6. SSM(四)Mybatis延迟加载

    1.概念 MyBatis中的延迟加载,也称为懒加载,是指在进行关联查询时,按照设置延迟加载规则推迟对关联对象的select查询.延迟加载可以有效的减少数据库压力. 2.关联对象的加载时机 ①.直接加载 ...

  7. hdoj2036 改革春风吹满地——叉积

    利用向量积(叉积)计算三角形的面积和多边形的面积 关于叉积计算三角形面积和多边形面积 Problem Description " 改革春风吹满地, 不会AC没关系; 实在不行回老家, 还有一 ...

  8. SpringBoot(十九)_404返回统一异常处理结果

    之前写过一篇统一异常处理的文章,今天测试了下如果访问一个不存在的接口,也想返回统一的错误信息,应该怎么做 1.修改application.properties文件 # 自定义404 #出现错误时, 直 ...

  9. 数据预处理之独热编码(One-Hot):为什么要使用one-hot编码?

    一.问题由来 最近在做ctr预估的实验时,还没思考过为何数据处理的时候要先进行one-hot编码,于是整理学习如下:  在很多机器学习任务如ctr预估任务中,特征不全是连续值,而有可能是分类值.如下: ...

  10. 并发编程-Future+callable+FutureTask 闭锁机制

    项目中经常有些任务需要异步(提交到线程池中)去执行,而主线程往往需要知道异步执行产生的结果,这时我们要怎么做呢?用runnable是无法实现的,我们需要用callable实现. FutureTask ...