(3)文件属性
*access():检测指定文件的存取能力是否符合指定的存取类型。
需要两个参数:文件名和要检测的存取类型(整数)。
存取类型定义如下:
0: 检查文件是否存在
1: 检查是否可执行(搜索)
2: 检查是否可写
3: 检查是否可写和执行
4: 检查是否可读
5: 检查是否可读和执行
6: 检查是否可读可写可执行
这些数字的意义和chmod命令中规定许可方式的数字意义相同。
此子程序使用实际的UID和GID检测文件的存取能力(一般有效的UID和GID用于检查文件存取能力)。
返回值: 0:许可 -1:不许可。
*chmod():将指定文件或目录的存取许可方式改成新的许可方式。
需要两个参数:文件名和新的存取许可方式。
*chown():同时改变指定文件的所有者和小组的UID和GID。(与chown命令不同)。
由于此子程序同时改变文件的所有者和小组,故必须取消所操作文件的SUID
和SGID许可,以防止用户建立SUID和SGID程序,然后运行chown()去获得别人的权限。
*stat():返回文件的状态(属性)。
需要两个参数:文件路径名和一个结构指针,指向状态信息的存放的位置。
结构定义如下:
st_mode: 文件类型和存取许可方式
st_ino: I节点号
st_dev: 文件所在设备的ID
st_rdev: 特别文件的ID
st_nlink: 文件链接数
st_uid: 文件所有者的UID
st_gid: 文件小组的GID
st_size: 按字节计数的文件大小
st_atime: 最后存取时间(读)
st_mtime: 最后修改时间(写)和最后状态的改变
st_ctime: 最后的状态修改时间
返回值: 0:成功 1:失败
*umask():将调用进程及其子进程的文件建立屏蔽值设置为指定的存取许可。
需要一个参数: 新的文件建立屏值。
(4)UID和GID的处理
*getuid():返回进程的实际UID。
*getgid():返回进程的实际GID。
以上两个子程序可用于确定是谁在运行进程。
*geteuid():返回进程的有效UID。
*getegid():返回进程的有效GID。
以上两个子程序可在一个程序不得不确定它是否在运行某用户而不是运行
它的用户的SUID程序时很有用,可调用它们来检查确认本程序的确是以该用户的SUID许可在运行。
*setuid():用于改变有效的UID。
对于一般用户,此子程序仅对要在有效和实际的UID之间变换的SUID程序才有用(从原有效UID变换为实际UID),以保护进程不受到安全危害。实际上该进程不再是SUID方式运行。
*setgid():用于改变有效的GID。