示例#1
0
int main(int argc, char  *argv[]) {
    uid_t uid = 0;
    char *root_name;
    root_name = userNameFromId(uid);
    strcpy(root_name, "rot");
    printf("root_name = %s\n", root_name);
    root_name = userNameFromId(uid);
    printf("root_name = %s\n", root_name);
    exit(EXIT_SUCCESS);
}
示例#2
0
int main(int argc,char *argv[])
{
    uid_t u;
    gid_t g;
    char *uname;
    char *gname;
    struct passwd *pwd;
    
    u = userIdFromName("root");
    printf("uid=%ld,username=%s\n",u,"root");

    uname = userNameFromId(u);
    printf("username=%s,uid=%ld\n",uname,u);

    pwd = getpwnam("root");
    if (pwd == NULL)
    {
        errExit("getpwnam");
    }

    g = pwd->pw_gid;
    gname = groupNameFromId(pwd->pw_gid);
    printf("groupname=%s,gid=%ld\n",gname,g);

    g = groupIdFromName(gname);
    printf("gid=%ld,groupname=%s\n",g,gname);

    exit(EXIT_SUCCESS);
}
示例#3
0
int main(int argc, char *argv[])
{
    int i;
    struct sems *s = getSemaphores();
    if (s == NULL) {
        errExit("getSemaphores");
    }

    printf("key\t\tsemid\t\towner\t\tperms\t\tnsems\n");

    for (i = 0; i < s->len; i++) {
        printf(
            "0x%08x\t%d\t\t%s\t\t%o\t\t%d\n",
            s->info[i].key,
            s->info[i].semid,
            userNameFromId(s->info[i].uid),
            s->info[i].perms,
            s->info[i].nsems
        );
    }

    free(s->info);
    free(s);

    exit(EXIT_SUCCESS);
}
示例#4
0
int main(int argc,char *argv[])
{
    acl_t acl;
    acl_type_t type;
    acl_entry_t entry;
    acl_tag_t tag;
    uid_t *uidp;
    gid_t *gidp;
    acl_permset_t permset;
    char *name;
    int entryId,permVal,opt;

    type = ACL_TYPE_ACCESS;
    while((opt = getopt(argc,argv,"d") != -1))
    {
        switch(opt)
        {
            case 'd': type = ACL_TYPE_DEFAULT;break;
            case '?': usageError(argv[0]);
        }
    }

    if (optind + 1 != argc)
    {
        usageError(argv[0]);
    }

    acl = acl_get_file(argv[optind],type);
    if (acl == NULL)
    {
        errExit("acl_get_file");
    }

    /* Walk through each entry in this ACL */
    for (entryId = ACL_FIRST_ENTRY; ; entryId = ACL_NEXT_ENTRY)
    {
        if (acl_get_entry(acl,entryId,&entry) != 1)
        {
            break;  /* Exit on error or no more entries */
        }

        /* Retrieve and display tag type */
        if (acl_get_tag_type(entry,&tag) == -1)
        {
            errExit("acl_get_tag_type");
        }

        printf("%-12s", (tag == ACL_USER_OBJ) ? "user_obj" :
            (tag == ACL_USER) ? "user" :
            (tag == ACL_GROUP_OBJ) ? "group_obj":
            (tag == ACL_GROUP) ? "group":
            (tag == ACL_MASK) ? "mask":
            (tag == ACL_OTHER) ? "other":"???");
        
        /* Retrieve and display otpional tag qualifier */
        if (tag == ACL_USER)
        {
            uidp = acl_get_qualifier(entry);
            if (uidp == NULL)
            {
                errExit("acl_get_qualifier");
            }

            name = userNameFromId(*uidp);
            if (name == NULL)
            {
                printf("%-8d",*uidp);
            }
            else
            {
                printf("%-8s",name);
            }

            if (acl_free(uidp) == -1)
            {
                errExit("acl_free");
            }
        }else if (tag == ACL_GROUP)
        {
            gidp = acl_get_qualifier(entry);
            if (gidp == NULL)
            {
                errExit("acl_get_qualifier");
            }

            name  = groupNameFromId(*gidp);
            if (name == NULL)
            {
                printf("%-12d",*gidp);
            }
            else
            {
                printf("%-12s",name);
            }

            if (acl_free(gidp) == -1)
            {
                errExit("acl_free");
            }
        }else
        {
            printf("            ");
        }

        /* Retrieve and display permissions */
        if (acl_get_permset(entry,&permset) == -1)
        {
            errExit("acl_get_permset");
        }

        permVal = acl_get_perm(permset,ACL_READ);
        if (permVal == -1)
        {
            errExit("acl_get_perm - ACL_READ");
        }

        printf("%c", (permVal == 1) ? 'r' : '-');
        permVal = acl_get_perm(permset,ACL_WRITE);
        if (permVal == -1)
        {
            errExit("acl_get_perm -ACL_WRITE");
        }
        printf("%c", (permVal == 1) ? 'w': '-');
        permVal = acl_get_perm(permset,ACL_EXECUTE);
        if (permVal == -1)
        {
            errExit("acl_get_perm - ACL_EXECUTE");
        }
        printf("%c", (permVal == 1) ? 'x' : '-');
        
        printf("\n");
    }

    if (acl_free(acl) == -1)
    {
        errExit("acl_free");
    }

    exit(EXIT_SUCCESS);
}