【Linux】用户权限管理:创建受限用户并配置特定目录访问权限
本文详细介绍了如何在 Linux 系统中创建一个名为 agent
的新用户,并限制其在特定目录下的权限。通过使用 useradd
命令创建用户,并使用 usermod
命令将新用户添加到现有用户组中,确保其具有适当的权限。接着,通过 chown
和 chmod
命令配置目标目录 /home/yourname/_Project/oh_workspace
的权限,使 agent
用户在该目录下具有读写权限,而在其他目录下只能读取。
为了进一步细化权限控制,文章还介绍了如何使用 ACL(访问控制列表)来限制 agent
用户的写权限,确保其在根目录、/home
目录和 /home/yourname
目录下只能读取。最后,通过复制 .bashrc
文件和更改默认 shell 为 bash,确保 agent
用户获得与主用户相似的使用体验。
本文适合需要对 Linux 系统进行细粒度权限管理的用户,特别是那些希望在特定目录下限制用户访问权限的场景。
第一步:创建用户并且限制权限
创建一个新用户 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
目录下进行读写操作。
-
设置目录的所有者为
yourname
,组为yourname
:sudo chown -R yourname:yourname /home/yourname/_Project/oh_workspace
-
赋予目录的组用户(包括
agent
)读写权限:sudo chmod -R 775 /home/yourname/_Project/oh_workspace
4. 使用 ACL 限制 agent
的写权限
为了确保 agent
只能在 /home/yourname/_Project/oh_workspace
目录下写入,而在其他地方只能读取,我们使用 ACL 进行更细粒度的权限控制。
-
确保
agent
对/home/yourname/_Project/oh_workspace
目录具有读写执行权限:sudo setfacl -m u:agent:rwx /home/yourname/_Project/oh_workspace
-
确保
agent
在/home/yourname
目录只能读取,不能写入:sudo setfacl -m u:agent:rx /home/yourname sudo setfacl -m d:u:agent:rx /home/yourname
这个命令表示
agent
可以读取和进入/home/yourname
,但不能写入。 -
确保
agent
在根目录/
下也只能读取,不能写入:sudo setfacl -m u:agent:rx /
-
确保
agent
在/home
目录下也只能读取,不能写入:sudo setfacl -m u:agent:rx /home
5. 测试权限
切换到 agent
用户,测试在 /home/yourname/_Project/oh_workspace
下是否可以写入,而在其他地方不能写入。
-
切换到
agent
用户:su - agent
-
测试在
/home/yourname/_Project/oh_workspace
目录下创建文件:cd /home/yourname/_Project/oh_workspace touch testfile
如果可以创建文件,则设置成功。
-
测试在其他目录(如
/
和/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协议是网站国际互联网界通行的道德规范,…...

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

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 行...

十个常见的软件测试面试题,拿走不谢
所有面试问题一般建议先总后分的方式来回答,这样可以让面试官感觉逻辑性很强。 1. 自我介绍 之所以让我们自我介绍,其实是面试官想找一些时间来看简历,所以自我介绍不用太长的时间,1-2分 钟即可。 自我介绍一般按以下方式进行介…...

windows 11 配置 kafka 使用SASL SCRAM-SHA-256 认证
1. 下载安装apache-zookeeper-3.9.2 配置 \conf\zoo.cfg # The number of milliseconds of each tick tickTime2000 # The number of ticks that the initial # synchronization phase can take initLimit10 # The number of ticks that can pass between # sending a requ…...

Elasticsearch —— ES 环境搭建、概念、基本操作、文档操作、SpringBoot继承ES
文章中会用到的文件,如果官网下不了可以在这下 链接: https://pan.baidu.com/s/1SeRdqLo0E0CmaVJdoZs_nQ?pwdxr76 提取码: xr76 一、 ES 环境搭建 注:环境搭建过程中的命令窗口不能关闭,关闭了服务就会关闭(除了修改设置后重启的…...

ElSelect 组件的 onChange 和 onInput 事件的区别
偶然遇到一个问题,在 ElSelect 组件中设置 filterable 属性后,监测不到复制粘贴的内容,也就意味着不能调用接口,下拉框内容为空。 简要代码如下: <ElSelectstyle"width: 256px"multiplev-model{siteIdL…...

加密与数据提取:保护隐私的新途径
加密与数据提取:保护隐私的新途径 在数字化时代,数据已成为驱动社会进步和经济发展的关键要素。然而,随着数据量的爆炸性增长,个人隐私保护成为了一个亟待解决的问题。如何在利用数据价值的同时,确保个人隐私不被侵犯…...

博客摘录「 宋宝华:Linux文件读写(BIO)波澜壮阔的一生」2024年11月1日
同时内核会给第2页标识一个PageReadahead标记,意思就是如果app接着读第2页,就可以预判app在做顺序读,这样我们在app读第2页的时候,内核可以进一步异步预读。 每个bio对应的硬盘里面一块连续的位置,每一块硬盘里面连续…...

使用华为云数字人可以做什么
在数字化和智能化快速发展的今天,企业面临着如何提升客户体验、优化运营效率的挑战。华为云数字人作为一种创新的智能交互解决方案,为企业提供了全新的可能性,助力企业在各个领域实现智能化升级。 提升客户服务体验 华为云数字人能够模拟真…...

leetcode刷题记录——(十六)349. 两个数组的交集
(一)问题描述 . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/intersection-of-two-arrays/ …...

vue3实现规则编辑器
组件用于创建和编辑复杂的条件规则,支持添加、删除条件和子条件,以及选择不同的条件类型。 可实现json数据和页面显示的转换。 代码实现 : index.vue: <template><div class"allany-container"><div class"co…...

【快速上手】pyspark 集群环境下的搭建(Standalone模式)
目录 前言 : 一、spark运行的五种模式 二、 安装步骤 安装前准备 1.第一步:安装python 2.第二步:在bigdata01上安装spark 3.第三步:同步bigdata01中的spark到bigdata02和03上 三、集群启动/关闭 四、打开监控界面验证 前…...