权限 与 ID¶
权限设置¶
| 名称 | 含义 | 谁来设置 | 用途和作用 |
|---|---|---|---|
ruid |
真实用户 ID | 程序启动时由内核设置 | 表示进程的原始用户是谁(谁执行了这个程序) |
euid |
有效用户 ID | 可以由 setuid() / seteuid() 设置 |
内核用来进行权限检查(如读文件、开 socket) |
suid |
保存的 setuid 值 | 程序是 setuid 时由系统自动保存 | 可以来回切换权限(euid <-> suid) |
详细说明¶
RTFM!!!!
man setuid
man seteuid
举个例子:
现在是 纯正的 root:
- ruid = 0
- euid = 0
降权: seteuid(1000)
然后可以提权: seteuid(0)
但是如果放弃 root: setuid(0)
这时候就换不回去了...
chown¶
只有 euid 等于 file->uid 的进程,或者拥有 相应权限(例如 root 权限) 的进程, 才可以更改文件所有权。如果 path 对应的路径开启了 _POSIX_CHOWN_RESTRICTED 选项, 那么就会有以下限制喔:
- 更改
uid只允许有权限的进程做. -
更改
gid允许当下进程的euid等于file->uid, 并且:- owner 等于
euid或等于-1=> 不改变 owner - group 等于该进程的
egid或属于它的附加群组之一
- owner 等于
-
uid 只能由 root 改
- gid 可以由文件拥有者改, 但只能改成自己所属的组之一