本文详细介绍了如何在 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. 创建用户 agentsudo useradd -m agent 1
为 agent 设置密码:
sudo passwd agent 1 2. 将 agent 添加到 yourname 所属的组
根据你之前的输出,yourname 属于多个组。我们将 agent 添加到这些组中,使其拥有与 yourname 类似的权限。
sudo usermod -aG adm,tty,cdrom,sudo,dip,video,plugdev,users,lpadmin,ollama,docker agent 1 3. 配置 /home/yourname/_Project/oh_workspace 目录的权限
让 agent 能够在 /home/yourname/_Project/oh_workspace 目录下进行读写操作。
设置目录的所有者为 yourname,组为 yourname:
sudo chown -R yourname:yourname /home/yourname/_Project/oh_workspace 1
赋予目录的组用户(包括 agent)读写权限:
sudo chmod -R 775 /home/yourname/_Project/oh_workspace 1 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 1
确保 agent 在 /home/yourname 目录只能读取,不能写入:
sudo setfacl -m u:agent:rx /home/yourname sudo setfacl -m d:u:agent:rx /home/yourname 12
这个命令表示 agent 可以读取和进入 /home/yourname,但不能写入。
确保 agent 在根目录 / 下也只能读取,不能写入:
sudo setfacl -m u:agent:rx / 1
确保 agent 在 /home 目录下也只能读取,不能写入:
sudo setfacl -m u:agent:rx /home 1 5. 测试权限
切换到 agent 用户,测试在 /home/yourname/_Project/oh_workspace 下是否可以写入,而在其他地方不能写入。
切换到 agent 用户:
su - agent 1
测试在 /home/yourname/_Project/oh_workspace 目录下创建文件:
cd /home/yourname/_Project/oh_workspace touch testfile 12
如果可以创建文件,则设置成功。
测试在其他目录(如 / 和 /home/yourname)是否可以创建文件:
cd / touch testfile # 应该返回权限错误 cd /home/yourname touch testfile # 应该返回权限错误 1234567
为了确保 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 1
这条命令给予其他用户(包括 agent)对 /home/yourname 目录的读取和执行权限,允许他们进入该目录。
设置 /home/yourname/_Project 的权限:sudo chmod o+rx /home/yourname/_Project 1
同样,这条命令允许 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 1
这条命令确保 agent 可以在该目录下读、写和执行(进入目录)。
3. 测试重新切换到 agent 用户并测试:
su - agent cd /home/yourname/_Project/oh_workspace 12
如果这次可以正常进入该目录,说明权限问题已经解决。
测试创建文件:touch testfile 1
如果能成功创建文件,说明 agent 在该目录下具备读写权限。
测试在其他目录是否禁止写入:cd / touch testfile # 应该收到权限错误 cd /home/yourname touch testfile # 应该收到权限错误 1234567
sudo cp /home/yourname/.bashrc /home/agent/.bashrc sudo chown agent:agent /home/agent/.bashrc 1234
sudo chsh -s /bin/bash agent 1
su - agent 12
如果没有显示,尝试重新激活conda
source /home/yourname/anaconda3/etc/profile.d/conda.sh 1
conda activate base 1
相关知识
samba 用户管理及权限设置
Linux跨平台部署DotNetCore记录
服务器部署后 访问出错的原因和解决办法
cvsnt 配置及命令解释
SDL:安全性非功能需求识别表
开源项目:植物虚拟伙伴 Botany 指南
基于SpringBoot+Vue的软件产品展示销售系统的设计与实现(源码+lw+部署+讲解)
程序员问答社区
【花店系统】花店系统 5.1
木槿花荼
网址: 【Linux】用户权限管理:创建受限用户并配置特定目录访问权限 https://m.huajiangbk.com/newsview469070.html
上一篇: 海澡之神秘植物剖析(揭秘海洋中的 |
下一篇: 养花的十大好处,爱花的你一定要看 |