Bug:Linux用户拥有r权限但无法打开文件【Linux权限体系】

Bug:Linux用户拥有r权限但无法打开文件【Linux权限体系】

0 问题描述&解决

问题描述:

  • 通过go编写了一个程序,产生的/var/log/xx日志文件发现普通用户无权限打开
    - 查看文件权限发现该文件所有者、所有者组、其他用户均有r权限
    - 查看该日志文件的父目录,普通用户是否有权限打开,发现也有权限打开
    - 因为文件是在/var/log目录下,担心是selinux(linux的一个安全机制)导致没有权限,执行setenforce 0 临时关闭,再通过getenforce查看是否关闭成功。发现关闭之后依然没有权限访问/var/log/日志。

解决:

  • 给文件添加x执行权限,让其可以cd进入对应目录。

1 Linux权限rwx&用户、用户组

1.1 查看文件、目录权限信息

# 查看权限 ls -l 文件名/目录名
ls -l xx

在这里插入图片描述
在这里插入图片描述

①r/4读权限:读取文件内容、浏览目录信息

Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限

②w/2写权限:修改文件内容、删除移动目录内的文件

Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

③x/1执行权限:执行文件、进入目录

execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

④—表示不具有该项权限

拥有者 拥有者所在组 其他用户

  • 拥有者:rw权限
  • 拥有者所在组:无读写执行权限
  • 其他用户:无读写执行权限
    在这里插入图片描述
⑤特殊执行权限s:可执行文件是否支持提权

针对可执行文件而言,除了x,还有s权限

  • 当s权限在user的x时,也就是类似 -r - s - - x - - x,称为Set UID,简称为SUID,这个UID表示User的ID,而User表示这个程序(/usr/bin/passwd)的拥有者(root)。那么,我们就可以知道,当test用户执行 /usr/bin/passwd时,它就会“暂时”得到文件拥有者root的权限。

  • 让普通用户以该文件拥有者的权限执行命令
    在这里插入图片描述

1.2 用户、用户组

①用户:普通用户、超级用户(root)

1.超级用户:可以再linux系统下做任何事情,不受限制在linux下做有限的事情命令提示符是"#”。
2.普通用户:普通用户权限就没有超级用户那么高会受到限制 .普通用户的命令提示符是"$”。

从普通用户切换到超级用户root:

# 切换到root用户
su root# 以root权限临时执行某个操作(短暂提权执行某个操作)
sudo rm -f 1.txt# id查看当前用户(uid、gid)
id

在这里插入图片描述

添加用户:

# 指定userid并分配给指定
# group useradd testuser -u 1003 -g 1005# 指定用户名为testuser,并指定用户家目录/usr/testhome
useradd -d /usr/testhome -m testuser # 修改test用户密码
passwd testuser# 新建testGroup工作组,并指定gid为2000
groupadd testGroup -g 2000
# 将用户添加进工作组
usermod -G testGroup testuser# 将用户testuser加入到nobody(gid一般为65534)组
gpasswd -a testuser nobody# 查看testuser用户属于哪些组
groups testuser# 查看所有组
groups# 删除用户
userdel testuser

在这里插入图片描述

②用户组

在某个组里的用户,拥有该组所拥有的权限

# 新建testGroup工作组,并指定gid为2000
groupadd testGroup -g 2000# 将用户添加进工作组
usermod -G testGroup testuser# 将用户testuser加入到nobody(gid一般为65534)组
gpasswd -a testuser nobody# 查看testuser用户属于哪些组
groups testuser# 查看所有组
groups

2 权限相关命令:chmod、chown

2.1 chmod:修改权限

# chmod概述
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限说明:只有文件的拥有者和root才可以改变文件的权限
chmod使用                                                                      
① 用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限  
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

案例:

给文件所有者添加执行权限

# 添加hello.sh文件所有者的执行权限
chmod u+x hello.sh# 给所有用户添加文件的执行权限x
chmod +x hello.sh

在这里插入图片描述

2.2 chown:修改拥有者

chown
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
# chown test:test hello.sh

在这里插入图片描述

chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组
# chgrp root hello.sh

在这里插入图片描述

3 umask

1.查看或修改文件掩码
2.新建文件夹默认权限=0666
3.新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到
umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

  • 格式:umask 权限值说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用
    户默认为0002。
# 查看权限掩码
umask# 修改权限掩码(不建议)
umask 0000

在这里插入图片描述

4 目录权限:rwx(ls查看、创建删除文件、cd进目录)

1.可执行权限x: 如果目录没有可执行权限, 则无法cd到目录中.
2.可读权限r: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
3.可写权限w: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

5 粘滞位:chmod +t

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

echo 111 > xx
chmod +t xx
ll xx
rm -rf xx# 提权删除
sudo rm -rf xx

在这里插入图片描述

6 sudoers:决定该用户能否执行sudo提权操作

/etc/sudoers文件中配置哪些用户能够执行sudo提权操作。

# 给test用户添加sudo执行权限,如果提示只读,则chmod u+w添加写权限
sudo vim /etc/sudoers# 找到 ## Allow root to run any commands anywhere不分,添加
test ALL=(ALL) ALL# 保存退出,重新以test身份执行sudo

在这里插入图片描述

/etc/sudoers:
在这里插入图片描述

参考文章:https://blog.csdn.net/qq_56999918/article/details/123647390

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/16994.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5个好用的AI写论文网站推荐

目录 1.AIQuora论文写作 2.passyyds 答辩PPT 3.AIPassgo论文降AIGC 4.文状元 5.passyyds论文写作 毕业论文是每个毕业生的痛,不管你是本科还是硕士要想顺利毕业你就不得不面对论文。然而,面对论文写作时常常感到无从下手:有时缺乏灵感&a…

ajax应用

在互联网的浩瀚海洋中,信息如同潮水般涌动。对于数据分析师、研究人员或是任何想要从网络上获取信息的人来说,掌握Ajax数据抓取技术无疑是一把开启宝藏的钥匙。Ajax(Asynchronous JavaScript and XML)不仅让网页交互变得更加流畅&…

【JavaEE进阶】——要想代码不写死,必须得有spring配置(properties和yml配置文件)

目录 本章目标: 🚩配置文件 🚩SpringBoot配置文件 🎈配置⽂件的格式 🎈 properties 配置⽂件说明 📝properties语法格式 📝读取配置文件 📝properties 缺点分析 &#x1f3…

中国科技期刊卓越行动计划重点期刊

https://kyc.webs.nbpt.edu.cn/_upload/article/files/3e/82/8a3a267048079f3487aef8802af8/09b9fa10-af17-4c2c-89ab-aa0facfb107c.pdf

记录下面试(240522)

试问面试有多难,看看今天的面试题。 1、kong都用了哪些插件? 2、zk底层一致性协议是什么,源码级别的理解。 3、mysql mvcc 引擎,索引都怎么实现的。 4、es底层全文索引如何实现的。 4、业务整体架构是什么样的, 5、如何…

操作MySQL数据库

【一】针对库的增删查改(文件夹) 【1】创建数据库 (1)语法 创建一个存储数据表的文件夹。 注意:mysql中的编码字符集中utf-8,要换成utf8mb4。SQL语句中的中括号部分表示可选。 create database [if no…

修改uniapp内置组件checkbox的样式

默认情况下 <view style"margin-bottom: 20rpx;"><label style"display: flex;align-items: center;width: fit-content;" click"handleCheck(cxm4s)"><checkbox /><text>车信盟出险4S维保</text></label>…

Java实验08

实验一 demo.java package q8.demo02;public class demo{public static void main(String[] args) {WindowMenu win new WindowMenu("Hello World",20,30,600,290);} }WindowMenu.java package q8.demo02; import javax.swing.*;public class WindowMenu extends…

数据结构初始化链表

链表是一种常见的数据结构&#xff0c;可以用于存储一系列的元素&#xff0c;每个元素包含一个值和一个指向下一个元素的指针。 链表的初始化可以通过创建一个头结点来实现&#xff0c;头结点不存储任何元素&#xff0c;只作为链表的起始点。在初始化时&#xff0c;可以将头结…

3d火灾救援模拟仿真培训软件复用性强

消防VR安全逃生体验系统是深圳VR公司华锐视点引入了前沿的VR虚拟现实、web3d开发和多媒体交互技术&#xff0c;为用户打造了一个逼真的火灾现场应急逃生模拟演练环境。 相比传统的消防逃生模拟演练&#xff0c;消防VR安全逃生体验系统包含知识讲解和模拟实训演练&#xff0c;体…

el-table树型数据lazy加载实现首行展开

el-table树型数据lazy加载实现首行展开 遇到一个小需求&#xff0c;一个树型数据的el-table&#xff0c;并且使用lazy加载&#xff0c;需要实现首行展开。 实现 思路&#xff1a;使用 expand-row-keys 或者 toggleRowExpansion API展开&#xff0c;但是发现这些API并不会触发…

【百度智能体】5分钟打造一款为你写情书的智能体

目录 前言一、智能体特点二、应用场景三、打造一款写情书智能体1、名称2、简介3、填写人物设定&#xff1a;4、开场白5、引导示例6、预览 最后 前言 智能体作为人工智能领域的一个重要概念&#xff0c;是指能够自主感知环境、做出决策并执行行动的系统。它具备自主性、交互性、…

程序员经常去的网站

程序员们经常去的网站确实非常多样化&#xff0c;这些网站不仅提供了丰富的技术资源和学习材料&#xff0c;还是他们交流经验和分享知识的重要平台。以下是一些程序员经常访问的网站&#xff0c;我将按照不同的类别进行归纳和分点表示&#xff1a; 一、代码托管与协作 GitHub&a…

单元测试(了解)

单元测试定义 针对最小功能单元&#xff08;方法&#xff09;&#xff0c;编写测试代码对其进行正确性测试 之前如何进行单元测试&#xff1f;有什么问题&#xff1f; main中编写测试代码&#xff0c;调用方法测试 问题&#xff1a; 无法自动化测试 每个方法的测试可能不是…

EPSON爱普生RTC RA8900CE/RA8000CE+松下Panasonic电池组合

RTC是一种实时时钟&#xff0c;用于记录和跟踪时间&#xff0c;具有独立供电和时钟功能。在某些应用场景中&#xff0c;为了保证RTC在断电或者其他异常情况下依然能够正常工作&#xff0c;需要备份电池方案来提供稳定的供电。本文将介绍EPSON爱普生RTC RA8900CE/RA8000CE松下Pa…

【吊打面试官系列】Java高并发篇 - AQS 支持几种同步方式 ?

大家好&#xff0c;我是锋哥。今天分享关于 【AQS 支持几种同步方式 &#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; AQS 支持几种同步方式 &#xff1f; 1、独占式 2、共享式 这样方便使用者实现不同类型的同步组件&#xff0c;独占式如 ReentrantLock&…

VUE3.0学习-模版语法

安装Node.js的过程相对直接&#xff0c;以下是详细的步骤指导&#xff0c;适用于大多数操作系统&#xff1a; ### 1. 访问Node.js官方网站 首先&#xff0c;打开浏览器&#xff0c;访问 [Node.js 官方网站](https://nodejs.org/)。 ### 2. 选择合适的版本下载 在Node.js官网上…

OpenHarmony 实战开发——ArkUI中的线程和看门狗机制

一、前言 本文主要分析ArkUI中涉及的线程和看门狗机制。 二、ArkUI中的线程 应用Ability首次创建界面的流程大致如下&#xff1a; 说明&#xff1a; • AceContainer是一个容器类&#xff0c;由前端、任务执行器、资源管理器、渲染管线、视图等聚合而成&#xff0c;提供了生…

C++ 头文件优化

C 是一种灵活的语言&#xff0c;所以需要一种积极的方法来分析和减少编译时依赖。一种常见的达到这个目的的方法是&#xff0c;将依赖从头文件里转移到源代码文件里。实现这个目的的方法叫做提前声明。 简而言之&#xff0c;这些声明告诉编译器某个函数接受和返回哪些参数&…

opencv 关于 卷积核(掩膜) 的通俗理解

1 opencv 坐标原点是左上角 x向右延伸 y向下延伸 图像的坐标原点位于左上角&#xff0c;x 轴向右延伸&#xff0c;y 轴向下延伸。这种坐标系与大多数计算机图像处理库&#xff08;如 PIL、MATLAB 等&#xff09;一致 例如 给定像素坐标(x,y) 则周围点表示为: 左上方的像素:…