找回密码
 注册
查看: 617|回复: 3

问 文件权限测试函数

[复制链接]
发表于 2005-10-17 22:42:28 | 显示全部楼层 |阅读模式
在linux c下 用什么判定当前用户 组用户 其他用户 读 写 执行的权限
access只能判定 当前用户权限。。stat函数的st_mode中有这9个位。不过应该怎么读取出来?有没有什么 宏定义可以判定的?
   输出的结果就是 ls -l 的最前面那 rwxrwxrwx 这样的结果
发表于 2005-10-18 07:15:56 | 显示全部楼层
APUE p79 有 st_mode 的 bit mask 说明,要测试哪一位,一个 & 就可以。
S_I[RWX](USR|GRP|OTH)

比如要测试是否有其它人的写权限:
[code:1]struct stat buf;
fstat( fd, &buf );
if ( buf.st_mode & S_IWOTH )
  printf( "Other users write OK.\n" );[/code:1]

没有找到相关的宏。
回复

使用道具 举报

发表于 2005-10-18 13:40:18 | 显示全部楼层
man lstat

       The following flags are defined for the st_mode field:

       S_IFMT     0170000   bitmask for the file type bitfields
       S_IFSOCK   0140000   socket
       S_IFLNK    0120000   symbolic link
       S_IFREG    0100000   regular file
       S_IFBLK    0060000   block device
       S_IFDIR    0040000   directory
       S_IFCHR    0020000   character device
       S_IFIFO    0010000   fifo
       S_ISUID    0004000   set UID bit
       S_ISGID    0002000   set GID bit (see below)
       S_ISVTX    0001000   sticky bit (see below)
       S_IRWXU    00700     mask for file owner permissions
       S_IRUSR    00400     owner has read permission
       S_IWUSR    00200     owner has write permission
       S_IXUSR    00100     owner has execute permission
       S_IRWXG    00070     mask for group permissions
       S_IRGRP    00040     group has read permission
       S_IWGRP    00020     group has write permission
       S_IXGRP    00010     group has execute permission
       S_IRWXO    00007     mask for permissions for others (not in group)
       S_IROTH    00004     others have read permission
       S_IWOTH    00002     others have write permisson
       S_IXOTH    00001     others have execute permission
回复

使用道具 举报

 楼主| 发表于 2005-10-18 13:43:13 | 显示全部楼层
thx  上面的两位    现在ok了  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-7 19:48 , Processed in 0.051240 second(s), 16 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表