当前位置: 首页 > news >正文

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

相关文章:

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

Bug:Linux用户拥有r权限但无法打开文件【Linux权限体系】 0 问题描述&解决 问题描述: 通过go编写了一个程序,产生的/var/log/xx日志文件发现普通用户无权限打开 - 查看文件权限发现该文件所有者、所有者组、其他用户均有r权限 - 查看该日…...

【Redis】Widows 和 Linux 下使用 Redis

Redis 简述 1.缓存 缓存就是将数据存放在距离计算最近的位置以加快处理速度。缓存是改善软件性能的第一手段,现代 CPU 越来越快的一个重要因素就是使用了更多的缓存,在复杂的软件设计中,缓存几乎无处不在。大型网站架构设计在很多方面都使用了缓存设计。 2.Redis Redis …...

统计计算四|蒙特卡罗方法(Monte Carlo Method)

系列文章目录 统计计算一|非线性方程的求解 统计计算二|EM算法(Expectation-Maximization Algorithm,期望最大化算法) 统计计算三|Cases for EM 文章目录 系列文章目录一、基本概念(一)估算 π \pi π(二&…...

大模型时代的具身智能系列专题(三)

清华高阳团队 高阳为清华叉院助理教授,本科毕业于清华大学计算机系,博士毕业于UC Berkeley。博士导师是Vision领域的大牛Trevor Darrell,读博期间和Sergey Levine合作开始强化学习方面的探索,博后跟随Pieter Abbeel做强化学习&am…...

使用 FileZilla 在 Windows 和 Ubuntu 之间传文件

网线一端插在板子的WAN口上,另一段插在电脑上,然后要配一下板子的IP。 板侧: 使用串口链接板子与PC端; 输入指令 ifconfig eth0(具体看wan口对应哪一个) 192.168.1.99 PC端配置: 打开网络设…...

【C++初阶】—— 类和对象 (上)

📝个人主页🌹:EterNity_TiMe_ ⏩收录专栏⏪:C “ 登神长阶 ” 🌹🌹期待您的关注 🌹🌹 类和对象 1. 初步认识C2. 类的引入3. 类的定义声明和定义全部放在类体中声明和定义分开存放 4.…...

基础—SQL—图形化界面工具的DataGrip使用(2)

一、回顾与引言 (1) 上次内容,博客讲到了DDL语句的数据库操作、表操作、表字段的操作的相关语法,然而之前都是在MySQL的命令行当中去操作演示的。这种方式可以用,但是使用的话,第一,在我们日常…...

4-主窗口

4-主窗口 1、简介2 菜单栏、工具栏、状态栏2.1 菜单栏2.2 QAction2.3 工具栏2.4 状态栏 3 混合方式UI设计 1、简介 QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏、多个工具栏、多个停靠控件、一个状态栏以及一个中心控件,是许多应用程序&…...

四川景源畅信:抖音小店新手如何做?

随着短视频平台的兴起,抖音小店成为了许多创业者的新选择。但是,对于新手来说,如何在抖音上开设并经营好自己的小店呢?本文将围绕这一问题展开讨论。 一、明确目标和定位作为抖音小店的新手,首先要明确自己的经营目标和定位。是想…...

EventSource

什么是EventSource EventSource 是一个用于服务器推送事件(Server-Sent Events, SSE)的接口,它允许服务器推送实时更新到浏览器。与 WebSocket 不同,SSE 是单向的(服务器到客户端),适用于更新频…...

Vue2 Element-UI 分页组件el-pagination 修改 自带的total、跳转等默认文字

场景需求: Vue2 Element-UI 分页组件el-pagination 修改 自带的total、跳转等默认文字。如下图:默认提示字变成了英文,如何将其 变成 汉字提示呢? 解决方案: 1.方案1:修改DOM内容 不提倡此方案&#xf…...

【简单介绍下线性回归模型】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…...

有限元法之有限元空间的构造

目录 一、区域Ω的剖分 二、三角形一次元 三、一次元的基函数与面积坐标 四、三角形二次元及其基函数 前两节我们介绍了有限元基本概念和变分理论的推导,本节我们继续探讨有限元空间的构造。 一、区域Ω的剖分 对矩形区域进行三角剖分,其中x方向剖…...

高通车规芯片分析

高通三款芯片 SA8155P 7nm SA8295P 5nm SA8255P 5nm 分析AECQ等级 AECQ100里面定义了5个工作环境温度等级:Grade0:-40-150 Grade1:-40-125 Grade2:-40-105 Grade3:-40-85 Grade4:0-70AEC-Q100整体认证测试…...

Flutter 中的 TextButton 小部件:全面指南

Flutter 中的 TextButton 小部件:全面指南 在Flutter的世界里,TextButton是一个基础的小部件,用于创建只包含文本的按钮。它通常用于对话框、表单以及需要强调主要操作的界面。本文将为您提供一个全面的指南,帮助您了解如何使用T…...

通过键值对访问字典

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中,如果想将字典的内容输出也比较简单,可以直接使用print()函数。例如,要想打印dictionary字典&#xff…...

海外仓扫码管理系统怎么选?精准,高效管理需求才是核心需求

海外仓对那些想拓展国际市场的商家来说还是非常重要的,大部分的货物都需要先运到海外仓,才能继续进行下一步的物流快递发货。 那对于海外仓本身来说,当面临大量订单的时候,怎么快速的管理订单,拣选货物就变得十分重要…...

基于51单片机的智能灯光控制系统

一.硬件方案 智能灯光控制系统由单片机最小系统、人体感应模块、关照强度模块、灯光控制模块、电源模块和灯泡组成。本文以STC89C52单片机为核心,通过利用光照度和红外人体感应相结合主动与被动的探测方法,现了室内无人或者关照充足时灯光自动光灯&…...

测试开发面试题

简述自动化测试的三大等待 强制等待。直接使用time.sleep()方法让程序暂停指定的时间。优点是实现简单,缺点是不够灵活,可能会导致不必要的等待时间浪费。隐式等待。设置一个固定的等待时间,在这个时间内不断尝试去查找元素,如果…...

多线程JUC 第2季 BlockingQueue 阻塞队列

一 阻塞队列 1.1 阻塞队列介绍 阻塞队列(BlockingQueue)是一个在队列基础上又支持了两个附加操作的队列: put方法:当队列装满时,添加的线程则被阻塞,直到队列不满,则可用。 take方法&#x…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解

一、前言 在HarmonyOS 5的应用开发模型中,featureAbility是旧版FA模型(Feature Ability)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文获取方式,而非依赖featureAbility。 FA大概是API7之…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...

Java后端检查空条件查询

通过抛出运行异常&#xff1a;throw new RuntimeException("请输入查询条件&#xff01;");BranchWarehouseServiceImpl.java // 查询试剂交易&#xff08;入库/出库&#xff09;记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...

LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考

目录 lua脚本 记录流水 记录流水的作用 流水什么时候删除 我们在做库存扣减的时候&#xff0c;显示基于Lua脚本和Redis实现的预扣减 这样可以在秒杀扣减的时候保证操作的原子性和高效性 lua脚本 // ... 已有代码 ...Overridepublic InventoryResponse decrease(Inventor…...

[QMT量化交易小白入门]-六十二、ETF轮动中简单的评分算法如何获取历史年化收益32.7%

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。 QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。 文章目录 相关阅读1. 策略概述2. 趋势评分模块3 代码解析4 木头…...