用户ID和组ID
类别 | 含义 |
---|---|
实际用户ID / 实际组ID | 我们实际上是谁(登录时确定) |
有效用户ID / 有效组ID | 用于文件访问权限检查(可以被更改,比如改成超级管理员,那就无敌了) |
保存的设置用户ID / 保存的设置组ID | 由exec函数保存(保存了有效xxID的副本) |
有效用户ID和有效组ID是用来做文件监测的,一般进程的有效用户ID和有效组ID和实际用户ID和实际组ID是一样的,当然这个是可被修改的。
stat方法
stat方法可以查看文件或者目录的信息,具体能查看哪些信息,可以看stat
这个结构体
文件的访问权限R/W/X
文件访问权限,对应在stat
结构体里的st_mode
字段,对应九个访问位权限
st_mode | 含义 |
---|---|
S_IRUSR / S_IWUSR / S_IXUSR | 用户读 / 用户写 / 用户执行 |
S_IRGRP / S_IWGRP / S_IXGRP | 组读 / 组写 / 组执行 |
S_IROTH / S_IWOTH / S_IXOTH | 其他读 / 其他写 / 其他执行 |
记住以下规律:
- 对某一个文件/目录的访问,需要对其所有父目录有执行权限
- 读一个文件时,必须对该文件有读权限
- 写文件时,必须对该文件有写权限
- 在一个目录下新增文件时,必须对该目录有写权限和执行权限
- 删除一个目录下的文件时,必须有该目录有写和执行权限,对该文件不需要任何权限
判断是否有权限是通过当前进程的有效ID和文件的所有者ID来判断的。
文件权限校验
通过access
或者faccessat
方法可以查看文件/文件夹的访问权限。