当前位置: 首页 > 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
http://www.lryc.cn/news/473865.html

相关文章:

  • pgsql表分区和表分片设计
  • 灵动AI ——视频创作新引擎 开启视觉奇幻之旅
  • AI设计、作图、画画工具哪个好用?看完这篇你就知道怎么选了
  • 【python ASR】win11-从0到1使用funasr实现本地离线音频转文本
  • myqld二进制安装和破解数据库密码(linux)
  • 防重方案-订单防重方案笔记
  • HTML、JavaScript和CSS实现注册页面设计
  • Counter对象的使用样例
  • 大模型中的token是什么;常见大语言模型的 token 情况
  • Python小白学习教程从入门到入坑------第十七课 内置函数拆包(语法基础)
  • 动态规划 —— 路径问题-最小路径和
  • 《链表篇》---删除链表的倒数第N个节点(中等)
  • duilib 进阶 之 TileListBox 列表
  • Web应用安全—信息泄露
  • 大数据治理:策略、技术与挑战
  • vscode插件-08 Golang
  • 数据结构+算法分析与设计[15-18真题版]
  • 单链表OJ题(2):反转链表(三指针法)、找中间节点(快慢指针)
  • Rows 行
  • 十个常见的软件测试面试题,拿走不谢
  • windows 11 配置 kafka 使用SASL SCRAM-SHA-256 认证
  • Elasticsearch —— ES 环境搭建、概念、基本操作、文档操作、SpringBoot继承ES
  • ElSelect 组件的 onChange 和 onInput 事件的区别
  • 加密与数据提取:保护隐私的新途径
  • 博客摘录「 宋宝华:Linux文件读写(BIO)波澜壮阔的一生」2024年11月1日
  • 使用华为云数字人可以做什么
  • leetcode刷题记录——(十六)349. 两个数组的交集
  • vue3实现规则编辑器
  • 【快速上手】pyspark 集群环境下的搭建(Standalone模式)
  • 中文NLP地址要素解析【阿里云:天池比赛】