今天继续给大家介绍Linux的基础知识,本文主要内容是Linux隐藏权限、文件访问控制列表和Linux sudo提权等。

一、Linux隐藏权限

除了之前介绍的Linux普通权限和Linux特殊权限外,Linux文件还有一种隐藏权限,所谓隐藏权限,即这些权限隐藏起来,一般不易被用户所发现,这些隐藏权限有时会限制表面上允许的操作,因此,当我们在Linux系统中尝试进行某种操作时,如果发现权限符合要求但是操作执行被拒绝,可以考虑尝试排查隐藏权限。
Linux系统的隐藏权限有很多,在这里我仅介绍几个经常用到的,如果遇上其他隐藏权限,届时可以查阅相关资料。
chattr命令可以给文件授予Linux隐藏权限,chattr的参数表明了授予的隐藏权限,chattr常用隐藏权限如下:
i 如果是文件,则无法对文件进行修改;如果是目录,则不能在该目录下创建、重命名、删除文件,但是可以在该目录的子目录下创建、重命名和删除文件。
a 仅允许追加内容,而不允许覆盖和删除原有的内容,日志文件常用。
A 不再修改这个文件或目录的最后访问时间
chattr命令示例如下:

chattr +a target
chattr -a target

上面第一条命令表示给target文件授予追加的隐藏权限,第二条命令表示删除给target文件已经授予的追加的隐藏权限。
使用lasttr命令可以查看文件的隐藏权限,如下:

二、Linux文件访问控制列表

Linux采用文件属主、属组和其他用户的粒度来控制访问权限,可以基本上满足权限控制需求,但是有时我们需要针对某一特定用户进行特别控制时,就无能为力了。针对这种特殊情况,Linux提供了文件访问控制列表的方式来实现这种控制。
Linux文件访问控制列表的设置使用setfacl命令,重要参数列举如下:
-R 表示递归,如果setfacl命令的作用对象是目录,则需要使用本参数。
-m 表示文件,如果setfacl命令的作用对象是文件,则需要使用本参数。
-b 表示删除,当要删除文件上设置的访问控制列表时使用。
setfacl命令使用示例:

setfacl -m u:user:rw /a/123
setfacl -b /a/123

上述第一条命令表示给user用户授予对/a/123文件的读写权利,第二条命令表示删除/a/123文件上的访问控制列表。
setfacl命令既可以给没有权限的用户进行授权,也可以把原本有权限的用户的权限给剥夺,文件访问控制列表使用如下所示:
剥夺用户的权限:

给没有权限的用户授权:

在进行ll查看文件信息时,如果发现文件的权限后面出现了加号,则表示该文件设置了访问控制列表。这一点在上图中我们可以轻易看出。
如果想要查看文件的具体设置的访问控制列表,可以使用getfacl命令,该命令使用如下:

在文件访问控制列表的实际使用中,我们一定要注意,必须先chmod设置好文件的权限,然后再设置访问控制列表,否则文件的权限设置会出现问题。

三、Linux提权

在Linux系统中,经常会出现一些场景,使得一些普通用户必须执行一些只有root用户才能够执行的命令,如何使得普通用户可以执行root用户的权限(给普通用户root口令可不是一个好办法)却又可以很好的管理这些权限呢?在这里我们就要使用sudo提权命令了。
sudo命令可以把特定命令的执行权限赋予给指定用户,这样既可以保证普通用户能够完成工作,也可以避免泄露root管理员密码。对于root系统管理员而言,要做的就是合理的配置sudo服务,以便兼顾系统的安全性和用户使用的便捷性。
对于root用户而言,执行命令visudo可以配置sudo权限,其实visudo命令在本质上就是使用vi命令打开/etc/sudoers文件,该文件就是sudo的配置文件。
想要配置sudo权限,打开配置文件,大概在99行左右,可以看到如下内容:

第100行是系统默认的配置,如果我们想要给某个普通用户授予sudo的权限,配置如下:

pzz    ALL=(root)      ALL

上述配置中,第一个“pzz”是被授予sudo权限的用户名,后面的ALL表示该用户登录的地点,ALL表示在任意登录,等号后面的root表示pzz可以以某个用户的身份执行命令,在这里root和ALL含义是相同的,最后面的ALL表示可以执行的命令。
因此,上述配置含义就是:允许在任意地方登陆的用户pzz,在执行任何命令时,sudo提权成root用户的权限。
下面我们再来看一个例子:

pzz2      ALL=(ALL)   /usr/bin/ls,/usr/bin/cd

按照上述分析,容易得到上述配置的含义是:允许在任意地方登陆的用户pzz2,在执行ls命令和cd命令时,sudo提权成root用户的权限。
假设修改后,我们的配置文件如下所示(修改部分是红圈里的部分):

然后切换到pzz用户查看提权效果

这样,普通用户通过sudo就可以执行超出自己执行权限的命令了
在用户使用sudo提权时,通常需要输入用户密码,如果我们不想频繁输入用户密码,可以将上述配置文件这样修改:

pzz    ALL=NOPASSWD:      ALL

这样,用户就不需要在提权时频繁的输入密码了。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200/article/details/120595762

Linux文件类型与文件权限详解(三)相关推荐

  1. linux 进程间通信 dbus-glib【实例】详解三 数据类型和dteeth(类型签名type域)(层级结构:服务Service --> Node(对象、object) 等 )(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  2. linux 进程间通信 dbus-glib【实例】详解四(上) C库 dbus-glib 使用(附代码)(编写接口描述文件.xml,dbus-binding-tool工具生成绑定文件)(列集散集函数)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  3. linux 进程间通信 dbus-glib【实例】详解二(下) 消息和消息总线(ListActivatableNames和服务器的自动启动)(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  4. linux 进程间通信 dbus-glib【实例】详解二(上) 消息和消息总线(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  5. linux 进程间通信 dbus-glib【实例】详解一(附代码)(d-feet工具使用)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  6. Linux 下 TC 命令原理及详解<一>

    文章目录 1 前言 2 相关概念 3 使用TC 4 创建HTB队列 5 为根队列创建相应的类别 6 为各个类别设置过滤器 7 复杂的实例 Linux 下 TC 命令原理及详解<一> Lin ...

  7. Linux文件类型与文件权限详解(一)

    今天继续给大家介绍Linux基础知识,本文的主要内容是Linux文件类型和文件权限. 一.Linux文件类型 在Linux系统下,一切皆文件.文件又可以分为普通文件和特殊文件,普通文件包括可执行文件. ...

  8. linux文件权限详解

    linux文件权限详解 一.文件和目录权限概述 在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录. 通过设定权限可以从以下三种访问方式限制访问权限: ...

  9. 每天一个linux命令(2):文件权限详解

    Linux文件权限详解 文件和目录权限概述 在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录. 通过设定权限可以从以下三种访问方式限制访问权限:只允 ...

  10. Linux 文件权限详解 含义和修改和安全

    Linux文件权限详解 文件和目录权限概述 在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录. 第一次接触Linux 的时候,对于文件权限方面的知识 ...

最新文章

  1. 优化你的CPU来做深度学习
  2. gitstack连接詹金斯_詹金斯的Maven报告
  3. 图解数据库辅助软件教程
  4. [云炬创业基础笔记]第九章企业的法律形态测试3
  5. 体验Microsoft Expression Blend 3 Preview
  6. PostgreSQL查看系统视图的源码
  7. [已解决]Eclipse 插件Maven在使用 add dependency,找不到包,解决办法
  8. 【被C折腾系列】用C调DIOCP编码客户端通信
  9. ubuntu18.04配置ORB-SLAM3
  10. OpenLayers3基础教程——OL3 介绍interaction
  11. 我的星座分析-处女座
  12. 智能家居市场中zigbee通信技术与RF315/433通信技术的区别
  13. 如何检查Linux系统下的Virtio 驱动
  14. Origin 中对曲线打定点,以及显示相应的坐标轴刻度
  15. 宝塔面板windows建站教程_WindowsVPS-服务器安装宝塔面板建站教程宝塔面板,
  16. 【计算机网络】数据链路层 : 总结 ( 封装成帧 | 流量控制与可靠传输 | 差错控制 | 介质访问控制 | 局域网 | 广域网 | 数据链路层设备 ) ★★★
  17. clustMD r语言_R语言-聚类与分类
  18. 春运购票时间范围一览
  19. SVN合并冲突的办法
  20. Twinmotion 初学者教程

热门文章

  1. numpy—np.tensordot
  2. numpy—np.repeat、np.roll
  3. MySQL主从原理,基于快速学习一门技术的3种方式
  4. 【回血赠书第4期】9月新书不一般,你涨知识我买单
  5. 从俄罗斯方块,迈向强化学习大门
  6. 面试技巧,如何通过索引说数据库优化能力
  7. Python-Scikit learn保存机器学习训练的模型
  8. windows命令行设置和系统快捷键
  9. ue4网格转地形_关于纬地结合扫描地形图进行道路设计和出图的教程
  10. stackexchange.mysql_StackExchange.Redis客户端读写主从配置,以及哨兵配置。