首页 > 数据库 > 数据库开发技术 > Linux权限的原理说明
在 Linux 系统中,我们所有的操作实质都是在进行进程访问文件的操作(Linux一切皆是文件)。访问文件必须先取得相应的访问权限(srwx),而访问权限是通过 Linux 系统中的安全模型获得的
Linux 系统上最初的安全模型叫 DAC--- Discretionary Access Control(自主访问控制),后来又增加设计了一个新的安全模型叫 MAC, 全称是 Mandatory Access Control(强制访问控制) 但是 MAC 和 DAC 不是互斥的, DAC 是最基本的安全模型,也是我们最常用到的访问控制机制,属于LInux必须功能, 而 MAC 是构建在 DAC 之上的加强安全机制,属于可选模块
在我们进行Linux权访问前, Linux 系统通常都是先做 DAC 检查, 如果没有通过则操作直接失败 ,如果通过 DAC 检查并且系统支持 MAC 模块,再做 MAC 权限检查
macOS 采用了多层次的安全模型,以确保系统和用户数据的完整性和机密性
每个用户都有唯一的用户标识符(UID)和组标识符(GID)。
用户信息存储在 /etc/passwd 文件中,定义了用户名、UID、默认shell等。
用户可以属于一个或多个用户组,决定了对文件和资源的访问权限。
组信息存储在 /etc/group 文件中。
文件和目录有基本的Unix权限,包括所有者、组和其他用户权限。
通过 chmod 命令,用户可以控制文件和目录的读、写和执行权限。
访问控制列表(ACLs)允许更灵活地定义文件和目录的权限。
使用 setfacl 命令,用户可以为特定用户或组添加或删除额外的权限。
SIP保护系统文件和进程,限制对某些系统目录和文件的写入权限。
防止未经授权的修改,即使是超级用户也无法直接更改。
FileVault是MAC的全磁盘加密工具,确保数据在磁盘上的存储是加密的。
提供对整个磁盘上的数据的保护,即使设备丢失也能保持机密性。
沙盒是一种安全机制,限制应用程序的权限,确保它们只能访问其授权的资源。
有助于防止应用程序对系统和其他应用程序造成潜在的威胁。
MAC具有内置的防火墙,用于监控和控制网络流量。
用户可以配置防火墙规则以允许或阻止特定端口的流量。
Keychain是MAC中的密码管理工具,用于安全地存储和检索密码、证书和其他敏感信息。
提供一个加密的数据库,为用户提供单一点的身份验证。
在 Linux 中,进程理论上所拥有的权限与执行它的用户的权限相同
通过 /etc/passwd 和 /etc/group 保存用户和组信息,通过 /etc/shadow 保存密码口令及其变动信息
描述注释: 主目录: 登录 shell(第一个运行的程序)

用户ID为UID,组ID为GID

对于 /etc/group

注释:GID:组成员用户列表(逗号分割的用户 UID 列表)
对于 /etc/shadow

注释:登录名: 加密口令: 最后一次修改时间: 最小时间间隔: 最大时间间隔: 警告时间: 不活动时间:
文件类型
Linux 中的文件类型:
普通文件:又包括文本文件和二进制文件, 可用 touch 创建;
套接字文件:用于网络通讯,一般由应用程序在执行中间接创建;
管道文件:又名管道, 可用 mkfifo 创建;
字符文件和块文件:均为设备文件, 可用 mknod 创建;
链接文件:分为是软链接文件,而非硬链接文件, 可用 ln 创建。
分为三组进行控制:
user 包含对文件属主设定的权限
group 包含对文件属组设定的权限
others 包含对其他者设定的权限
常见(但非全部)的权限述职, 包括:
r :读权限-4。
w :写权限-2。
x -1:一般针对可执行文件 / 目录,执行 / 搜索权限。
s :一般针对可执行文件 / 目录,赋予文件属主权限的权限,只有 user 和 group 组可以设置该权限。
t :一般针对目录,设置粘滞位后,有权限的用户只能写、删除自己的文件, 否则可写、删除目录所有文件
ls -la 查看文件类型和权限,chmod修改其权限

输出解释:
第 1 个字符表示文件类型,其中,普通文件 (-)、目录文件 (d)、套接字文件 (s),管道文件 (p),字符文件 (c),块文件 (b),链接文件 (l)
第 2 个字符开始的 -rwxr-xr-x 部分表示文件的权限位,共有 9 位。
对于文件test, 这个权限控制(644)的含义是:
第 1~4 位:-r-w 表示该文件可被它的 owner (属主)以 r 或 w 的权限访问。
第 5~7 位:r-- 表示该文件可被与该文件同一属组的用户以 r 的权限访问
第 8~10 位:r-- 表示该文件可被其它未知用户以 r 的权限访问。
对于进程,有如下属性与文件访问权限相关:
effective user id : 进程访问文件权限相关的 UID (简写为 euid )。
effective group id : 进程访问文件权限相关的 GID (简写为 egid )。
real user id : 创建该进程的用户登录系统时的 UID (简写为 ruid )。
real group id : 创建该进程的用户登录系统时的 GID (简写为 rgid )。
saved set user id : 拷贝自 euid 。
saved set group id : 拷贝自 egid 。
举例
我们通过 top 来查看进程的 euid 和 ruid

此处可见,只有 USER 字段,表示相应进程的 effective user id.
打开 read user id 的显示选项:
a. 在 top 命令运行期间,输入 f, 可以看见类似如下行:

b.上下键移动,d确认,w保存
c.esc 返回即可看到

对于进程访问文件而言,最重要的是 euid
进程的 euid 一般默认即为 其 ruid 值
若可执行文件的可执行权限为 s ,进程对其调用 exec 后,其 euid 被设置为该可执行文件的 user id;
进程的 saved set user id 拷贝自 euid;
当进程的 euid 与文件的 user id 匹配时,进程才具有文件 user 权限位所设置的权限;
组权限 egid 的控制规则类似;
通过 exec 执行文件修改权限属性
进程 ruid 值始终不变;
saved set-user ID 始终来自 euid ;
euid 值取决于文件的 set-user-ID 位是否被设置;
如下:
通过 setuid(uid) 系统调用修改权限属性
通过 setuid(uid) 修改权限属性之时:
超级管理员可顺利修改 ruid, euid, saved set-user ID ;
未授权用户只能在 uid 与 ruid 相等时修改 euid, 其它无法修改;
举例

含义解释:
第 1~3 位:rws 表示该文件可被它的 owner(属主)以 r 或 w 或 s 的权限访问;
第 4~6 位:r-x 表示该文件可被与该文件同一属组的用户以 r 或 x 的权限访问;
第 7~9 位:r-x 表示该文件可被其它未知用户以 r 或 x 的权限访问;
这样设置之后,对于 owner,具有读、写、执行权限,普通用户进程执行 sudo 命令时通过其 others 中的 x 获得执行权限,再通过 user 中的 s 使得普通用户进程临时具有了 sudo 可执行文件属主 ( root ) 的权限,即超级权限。
设置了 stick-bit

途中权限对于 /tmp 目录,任何人都具有读、写、执行权限,对于 others 部分设置了粘滞位 t
若目录没设置粘滞位,任何对目录有写权限者都则可删除其中任何文件和子目录,即使他不是相应文件的所有者,也没有读或写许可;
设置粘滞位后,用户就只能写或删除属于他的文件和子目录。
这就是为什么任何人都能向 /tmp 目录写文件、目录,却只能写和删除自己拥有的文件或目录的原因

添加博主
微信号|yfq940-
原文作者:步步运维步步坑;如有侵权,请联系管理员删除。