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. Linux下python多版本多环境介绍

     一.python多版本配置说明 安装python相关依赖 [root@centos6 ~]# yum install -y gcc make patch gdbm-devel openssl-dev ...

  2. Redis相关面试题

    Reids:单线程+io多路复用机制 Redis与Memcached的区别: 一.memcached值是简单字符串,redis支持hash.set.list等复杂数据类型 二.redis可持久化数据, ...

  3. 不一样的go语言-玩转语法之二

      本文继续玩转语法,是为之二.   I/O(Input/Output),输入输出是计算机最为突出的特点,也可以说是计算机最为核心的功能.没有I/O,计算机就是一堆废铜废铁.从最低层的电子元器件开始, ...

  4. SQL Server 2012完全备份、差异备份、事务日志备份和还原操作;

    SQL Server 2012完全备份.差异备份.事务日志备份和还原操作: 1.首先,建立一个测试数据库,TestA:添加一张表,录入二条数据:备份操作这里我就不详细截图和讲解了.相信大家都会备份,我 ...

  5. Scala 学习之路(十)—— 函数 & 闭包 & 柯里化

    一.函数 1.1 函数与方法 Scala中函数与方法的区别非常小,如果函数作为某个对象的成员,这样的函数被称为方法,否则就是一个正常的函数. // 定义方法 def multi1(x:Int) = { ...

  6. excel for mac打开csv文件不分列

    参考链接:http://www.1207.me/archives/247.html excel for mac在打开csv文件(逗号分隔的文本文件)的时候,不能像windows那样分列,而且全都挤在一 ...

  7. kubernetes实战篇之helm示例yaml文件文件详细介绍

    系列目录 前面完整示例里,我们主要讲解helm打包,部署,升级,回退等功能,关于这里面的文件只是简单介绍,这一节我们详细介绍一下这里面的文件,以方便我们参照创建自己的helm chart. Helm ...

  8. mongoshell 执行JavaScript文件获取数据库实例基本信息

    由于MongoDB没有关系型数据中强大的数据字典.因此,如果需要汇总统计一些内部信息,包括数据量,基本元信息,集群架构,状态信息.则需要自己写脚本统计.为日后工作方便,本人在此将一些统计信息通过Jav ...

  9. JAVA UUID 生成唯一密钥(可随机选择长度)

    /**     * 获得指定数目的UUID      * @param number int 需要获得的UUID数量      * @return String[] UUID数组      */    ...

  10. 浅谈iOS需要掌握的技术点

    鉴于很多人的简历中的技术点体现(很多朋友问我iOS需要知道注意哪些)! 技术点: 1.热更新 (及时解决线上问题) 2.runtime(json解析.数据越界.扩大button点击事件.拦截系统方法) ...