これが私の問題です。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
私はどんな助けでも大歓迎です。