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

【Linux】用户权限管理:创建受限用户并配置特定目录访问权限

本文详细介绍了如何在 Linux 系统中创建一个名为 agent 的新用户,并限制其在特定目录下的权限。通过使用 useradd 命令创建用户,并使用 usermod 命令将新用户添加到现有用户组中,确保其具有适当的权限。接着,通过 chownchmod 命令配置目标目录 /home/yourname/_Project/oh_workspace 的权限,使 agent 用户在该目录下具有读写权限,而在其他目录下只能读取。

为了进一步细化权限控制,文章还介绍了如何使用 ACL(访问控制列表)来限制 agent 用户的写权限,确保其在根目录、/home 目录和 /home/yourname 目录下只能读取。最后,通过复制 .bashrc 文件和更改默认 shell 为 bash,确保 agent 用户获得与主用户相似的使用体验。

本文适合需要对 Linux 系统进行细粒度权限管理的用户,特别是那些希望在特定目录下限制用户访问权限的场景。
Linux ACL

第一步:创建用户并且限制权限

创建一个新用户 agent,并确保其只能在 /home/yourname/_Project/oh_workspace 目录下进行写操作,同时在其他地方只能读取。这确保了系统的安全和灵活性,同时满足了特定的权限要求。

1. 创建用户 agent

sudo useradd -m agent

agent 设置密码:

sudo passwd agent

2. agent 添加到 yourname 所属的组

根据你之前的输出,yourname 属于多个组。我们将 agent 添加到这些组中,使其拥有与 yourname 类似的权限。

sudo usermod -aG adm,tty,cdrom,sudo,dip,video,plugdev,users,lpadmin,ollama,docker agent

3. 配置 /home/yourname/_Project/oh_workspace 目录的权限

agent 能够在 /home/yourname/_Project/oh_workspace 目录下进行读写操作。

  1. 设置目录的所有者为 yourname,组为 yourname

    sudo chown -R yourname:yourname /home/yourname/_Project/oh_workspace
    
  2. 赋予目录的组用户(包括 agent)读写权限:

    sudo chmod -R 775 /home/yourname/_Project/oh_workspace
    

4. 使用 ACL 限制 agent 的写权限

为了确保 agent 只能在 /home/yourname/_Project/oh_workspace 目录下写入,而在其他地方只能读取,我们使用 ACL 进行更细粒度的权限控制。

  1. 确保 agent/home/yourname/_Project/oh_workspace 目录具有读写执行权限:

    sudo setfacl -m u:agent:rwx /home/yourname/_Project/oh_workspace
    
  2. 确保 agent/home/yourname 目录只能读取,不能写入:

    sudo setfacl -m u:agent:rx /home/yourname
    sudo setfacl -m d:u:agent:rx /home/yourname
    

    这个命令表示 agent 可以读取和进入 /home/yourname,但不能写入。

  3. 确保 agent 在根目录 / 下也只能读取,不能写入:

    sudo setfacl -m u:agent:rx /
    
  4. 确保 agent/home 目录下也只能读取,不能写入:

    sudo setfacl -m u:agent:rx /home
    

5. 测试权限

切换到 agent 用户,测试在 /home/yourname/_Project/oh_workspace 下是否可以写入,而在其他地方不能写入。

  1. 切换到 agent 用户:

    su - agent
    
  2. 测试在 /home/yourname/_Project/oh_workspace 目录下创建文件:

    cd /home/yourname/_Project/oh_workspace
    touch testfile
    

    如果可以创建文件,则设置成功。

  3. 测试在其他目录(如 //home/yourname)是否可以创建文件:

    cd /
    touch testfile
    # 应该返回权限错误cd /home/yourname
    touch testfile
    # 应该返回权限错误
    

第二步:确保agent用户能够进入yourname用户的文件夹

为了确保 agent 用户可以访问 /home/yourname/_Project/oh_workspace 目录,但只能在该目录下进行写操作,而在其他目录只能读取,以下是详细的步骤来修复权限问题。

1. 确保 agent 有权限访问 /home/yourname/home/yourname/_Project

即使你已经为 /home/yourname/_Project/oh_workspace 设置了权限,agent 仍然需要读取和执行(进入)的权限才能导航到这个目录。你需要确保 agent 用户对上级目录 /home/yourname/home/yourname/_Project 具有读取和执行权限。

设置 /home/yourname 的权限:
sudo chmod o+rx /home/yourname

这条命令给予其他用户(包括 agent)对 /home/yourname 目录的读取和执行权限,允许他们进入该目录。

设置 /home/yourname/_Project 的权限:
sudo chmod o+rx /home/yourname/_Project

同样,这条命令允许 agent 进入 /home/yourname/_Project 目录。

2. 确保 agent/home/yourname/_Project/oh_workspace 具有读写权限

现在再次确保 agent 对目标目录 /home/yourname/_Project/oh_workspace 具有读写权限:

sudo setfacl -m u:agent:rwx /home/yourname/_Project/oh_workspace

这条命令确保 agent 可以在该目录下读、写和执行(进入目录)。

3. 测试

重新切换到 agent 用户并测试:

su - agent
cd /home/yourname/_Project/oh_workspace

如果这次可以正常进入该目录,说明权限问题已经解决。

测试创建文件:
touch testfile

如果能成功创建文件,说明 agent 在该目录下具备读写权限。

测试在其他目录是否禁止写入:
cd /
touch testfile
# 应该收到权限错误cd /home/yourname
touch testfile
# 应该收到权限错误

第三步:把yourname用户的.bashrc复制过去确保获得和主用户相同的使用体验


sudo cp /home/yourname/.bashrc /home/agent/.bashrc
sudo chown agent:agent /home/agent/.bashrc

第四步:把agent的默认shell改成bash

sudo chsh -s /bin/bash agent

第五步:重新登录agent


su - agent

如果没有显示,尝试重新激活conda

source /home/yourname/anaconda3/etc/profile.d/conda.sh
conda activate base

相关文章:

【Linux】用户权限管理:创建受限用户并配置特定目录访问权限

本文详细介绍了如何在 Linux 系统中创建一个名为 agent 的新用户,并限制其在特定目录下的权限。通过使用 useradd 命令创建用户,并使用 usermod 命令将新用户添加到现有用户组中,确保其具有适当的权限。接着,通过 chown 和 chmod …...

pgsql表分区和表分片设计

在设计 PostgreSQL 表分区和表分片时,主要目标是提高查询性能、可扩展性和数据管理的效率。以下是一些关键的设计步骤和策略: 1. 分区策略 水平分片:选择按日期进行水平分片,每天一个分片。这种策略适用于具有时间序列数据的场景…...

灵动AI ——视频创作新引擎 开启视觉奇幻之旅

灵动AI视频官网地址:https://aigc.genceai.com/ 灵动AI 科技与艺术的完美融合之作。它代表着当下最前沿的影像技术,为我们带来前所未有的视觉盛宴。...

AI设计、作图、画画工具哪个好用?看完这篇你就知道怎么选了

Stable Diffusion Stable Diffusion 是由 Stability AI 推出的开源 AI 文本到图像生成模型,以其开放性和灵活性在 AI 视觉工具领域广受欢迎。与 DALL-E 或 Midjourney 等只能依赖云计算的工具不同,Stable Diffusion 支持本地运行,也广泛兼容多…...

【python ASR】win11-从0到1使用funasr实现本地离线音频转文本

文章目录 前言一、前提条件安装环境Python 安装安装依赖,使用工业预训练模型最后安装 - torch1. 安装前查看显卡支持的最高CUDA的版本,以便下载torch 对应的版本的安装包。torch 中的CUDA版本要低于显卡最高的CUDA版本。2. 前往网站下载[Pytorch](https://pytorch.o…...

myqld二进制安装和破解数据库密码(linux)

安装和基本配置 1.首先把下载下来的mysql安装包放到本地这里下载的是5.7版本为演示 1)解压 tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz -C /usr/local -把安装包解压到/usr/local cd /usr/local …...

防重方案-订单防重方案笔记

订单防重设计 订单重复提交概念解决方案前端防重机制后端防重机制利用Token机制基于数据库的唯一索引 Token机制方案介绍 其他 订单重复提交概念 重复提交指,连点按钮进行重复提交操作,不包括刷新后的重新下单,重新下单已非同一订单的概念。…...

HTML、JavaScript和CSS实现注册页面设计

目录 一、实现要求 二、实现页面图 1、注册页面 2.用户ID、用户名、口令验证成功后显示页面 三、用户ID、用户名、口令、确定口令验证逻辑js代码 1、验证用户ID 2、验证用户名 3、验证口令密码 四、总结 五、代码仓库 一、实现要求 综合使用HTML、JavaScript和CSS进…...

Counter对象的使用样例

1. Counter类的定义和功能说明 Counter是一个用于跟踪值出现次数的有序集合。它可以接收一个可迭代对象作为参数,并生成一个字典,其中包含每个元素作为键,其计数作为值。 2. 统计列表或字符串中元素的出现次数 示例代码: from…...

大模型中的token是什么;常见大语言模型的 token 情况

目录 大模型中的token是什么 常见大语言模型的 token 情况 大模型中的token是什么 定义 在大模型中,token 是文本处理的基本单位。它可以是一个字、一个词,或者是其他被模型定义的语言单元。简单来说,模型在理解和生成文本时,不是以完整的句子或段落为单位进行一次性处理…...

Python小白学习教程从入门到入坑------第十七课 内置函数拆包(语法基础)

一、内置函数 1.1 查看所有内置函数 内置函数:Python 提供了许多内置函数,这些函数无需导入任何模块即可直接使用。它们涵盖了各种用途,从数学运算到类型检查,再到输入输出操作等。 如何查看内置函数呢? 在Pycharm…...

动态规划 —— 路径问题-最小路径和

1. 最小路径和 题目链接: 64. 最小路径和 - 力扣(LeetCode)https://leetcode.cn/problems/minimum-path-sum/description/ 2. 算法原理 状态表示:以莫一个位置位置为结尾 dp[i,j]表示:到达[i,j…...

《链表篇》---删除链表的倒数第N个节点(中等)

题目传送门 方法一:计算链表长度(迭代) 1.计算链表长度,并且定义哑节点链接链表。 2.从哑节点开始前进length-n次。即为被删除节点的前置节点。 3.进行删除操作。 4.返回哑节点的后置节点 class Solution {public ListNode remo…...

duilib 进阶 之 TileListBox 列表

目录 一、TileListBox 1、样式 1)、整体列表分列设置 2)、列表项样式设置 3)、选中后出现√号,horver时 出现边框色 的实例 2、代码 1)、普通动态添加列表项 2)、列表项样式中有自定义控件时 3)、获得选中项 一、TileListBox Tile [taɪl] ,瓦片 棋子 Ti…...

Web应用安全—信息泄露

从书本和网上了解到Web应用安全的信息泄露的知识,今天跟大家分享点。 robots.txt泄漏敏感信息 漏洞描述:搜索引擎可以通过robots文件可以获知哪些页面可以爬取,哪些页面不可以爬取。Robots协议是网站国际互联网界通行的道德规范&#xff0c…...

大数据治理:策略、技术与挑战

随着信息技术的飞速发展,大数据已经成为现代企业运营和决策的重要基础。然而,大数据的复杂性、多样性和规模性给数据管理带来了前所未有的挑战。因此,大数据治理应运而生,成为确保数据质量、合规性、安全性和可用性的关键手段。本…...

vscode插件-08 Golang

文章目录 Go安装其他必须软件 Go Go语言环境,只需安装这一个插件。然后通过vscode命令下载安装其他go环境需要的内容。 程序调试,需要创建.vscode文件夹并编写launch.json文件。 安装其他必须软件 ctrlshiftp,调出命令面板,输入…...

数据结构+算法分析与设计[15-18真题版]

2015年考试试题 一、给出数组A[3..8,2..6]0F integer,当它在内存中按行存放和按列存放时,分别写出元素A[i,j]的地址计算公式(设每个元素占两个存储单元)。(10分) 二、已知一棵二叉树的中序序列的结果是BDCEAFHG,后序序列的结果是DECBHGFA,试画出这棵二叉树。(10分…...

单链表OJ题(2):反转链表(三指针法)、找中间节点(快慢指针)

目录 1.反转链表 反转链表总结: 2.链表的中间节点(快慢指针法) 快慢指针法总结 1.反转链表 在这道题中,我们需要把一个单链表反转它们的指向,这里,我们给出了一个好理解的简单解法,就是用三…...

Rows 行

Goto Data Grid 数据网格 Rows 行...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

深度学习水论文:mamba+图像增强

🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...

大数据治理的常见方式

大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...

flow_controllers

关键点: 流控制器类型: 同步(Sync):发布操作会阻塞,直到数据被确认发送。异步(Async):发布操作非阻塞,数据发送由后台线程处理。纯同步(PureSync…...