Linux 中用户和组的工作机制
发布日期:2021-05-18 08:56:54 浏览次数:16 分类:精选文章

本文共 1007 字,大约阅读时间需要 3 分钟。

Linux 的用户和组权限机制到底是如何工作的?这个问题在我的工作中贯穿了很久,直到有一天,我在阅读《Linux 编程接口》(Linux Programming Interface, LPI)第九章“进程资格”时,彻底改变了我的认知。这一部分内容简明扼要地解释了我之前理解上的诸多偏差。

在 Unix-like 系统中,每个进程都有一个用户和一组组成的属性。这些组的成员hip不是在进程执行某个特定的操作时实时查询 /etc/group 文件,而是在进程的属性中预置( тисленно由 login shell 初始化)。正确理解这一机制对于 Admin 卿种与权限管理至关重要。

一个进程的组ID 和 补充组 ID 是决定其访问权限的关键因素。文件系统根据这两个 ID 和文件的访问控制列表(ACE)来判断进程是否有权限访问该文件。例如,当 julia 运行一个进程,该进程的真实用户 ID 是 julia,有效用户 ID 可能为 julia 或其他拥有权限的用户,而组 ID 则取决于它所属的组(如 awesome 组)。

值得注意的是,当我们通过命令(如 addgroup 和 adduser 命令)将一个用户添加到组中时,只会更新用户的组成员hip。原有进程不会因为此更变。例如,在之前的测试中,增加 bork 到 panda 组后,他的进程并没有立即继承这个组ID。这是因为,进程的组属性是由 login shell 初始化好的。

因此,要让所有提供给 bork 的进程都获得 panda 组的权限,我们必须重启他的 session。这可以通过使用 sudo login bork 来完成。新登录会话生成的进程会继承最新的组属性并访问指定文件。

此外,通过 newgrp panda 命令可以获得一种快速更新组属性的方法,而无需启动新的 shell。类似的,sg panda bash 也是一个常用的技巧。

关于 setuid 设置,理解其背后的机制尤为重要。setuid 只会设置文件的有效用户 ID,而不会改变进程的真实用户 ID。这意味着即使程序被授权在根权限下运行,其操作仍会基于当前用户的身份进行介质。

总结而言,Linux 的用户组权限机制以预置组成分和文件系统的访问控制模型为核心。这种设计保证了用户权限的保护同时维持了系统的稳定性。通过深入理解这些机制,可以更有效地进行系统管理和开发。

上一篇:Vlock用于有多个用户访问控制台的共享 Linux 系统
下一篇:DDOS攻击详解

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年05月03日 02时54分42秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

A + B 九度oj 2025-03-28
A DBA’s take on MSCA (Mobile supply chain applications) 2025-03-28
A DBA’s take on MSCA (Mobile supply chain applications) 2025-03-28
A20地址线 2025-03-28
abaqus质量缩放系数取值_ABAQUS的质量缩放 2025-03-28
Access restriction: The type FileURLConnection is not accessible due to restriction 2025-03-28
Accessibility 2025-03-28
CentOS 系列:CentOS 7文件系统的组成 2025-03-28
CentOS系列:【Linux】CentOS7操作系统安装nginx实战(多种方法,超详细) 2025-03-28
Docker部署postgresql-11以及主从配置 2025-03-28
EnvironmentNotWritableError: The current user does not have write permissions to the target environm 2025-03-28
kali安装docker(亲测有效) 2025-03-28
Linux系列:Linux目录分析:[/] + [/usr] + [/usr/local] + [/usr/local/app-name]、Linux最全环境配置 + 动态库/静态库配置 2025-03-28
mysql系列:远程连接MySQL错误“plugin caching_sha2_password could not be loaded”的解决办法 2025-03-28
Nmap端口服务 之 CentOS7 关于启动Apache(httpd)服务、telnet服务、smtp服务、ftp服务、sftp服务、snmp服务 2025-03-28
PHP系列:PHP 基础编程 2(时间函数、数组---实现登录&注册&修改) 2025-03-28
PHP系列:使用PHP实现登录注册功能的完整指南 2025-03-28
Python&aconda系列:cmd/powershell/anaconda prompt提示“系统找不到指定的路径”(亲测有效) 2025-03-28
Python&aconda系列:(W&L)Conda使用faiss-gpu报错及解决办法、安装numpy的坑、cmd执行Python脚本找不到第三方库、安装tensorflow-gpu时遇到的from 2025-03-28
python&anconda 系列:Pycharm在debug问题的N种解决方案(一般程序、web方向、人工智能方向) 2025-03-28