【发布时间】:2013-09-14 15:12:06
【问题描述】:
这是我的问题。我需要从 FreeBSD 上的 C 代码检查特定文件和特定用户的读取权限。我写了一段代码:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main(int argc, char *argv[]){
int r_ok;
if(setuid(1002)){
printf("Cant's set uid\n");
exit(1);
}
r_ok = access("/tmp/dir", R_OK);
printf("error: %d: %s\n", errno, strerror(errno));
printf("%d\n", r_ok);
return 0;
}
一般来说它工作正常,但是当我像这样为 /tmp/dir 设置权限时:
d---r-x--- 2 root fruit1 512 Sep 10 18:20 /tmp/dir
程序输出
error: 13: Permission denied
-1
虽然 UID 为 1002 的用户是组 fruit1 的有效成员:
# groups 1002
orange fruit1
如有任何帮助,我将不胜感激。
【问题讨论】:
标签: c linux unix file-permissions freebsd