Annotation of coherent/d/etc/SYSVcron/src/pwfun.c, revision 1.1.1.1

1.1       root        1: /* 
                      2:  * The example shows the usage of getuid(), geteuid() COHERENT SYstem calls
                      3:  * and getpwnam, getpwuid, setpwent, getpwent, and endpwent functions.
                      4:  */
                      5: #include       <pwd.h>
                      6: #include       <stdio.h>
                      7: 
                      8: main()
                      9: {
                     10:        int             euid,           /* Effective user id */
                     11:                        ruid;           /* Real user id */
                     12:        struct passwd   *pstp;  
                     13:        int             i;
                     14: 
                     15:        /* Print out all users and  home directories */
                     16:        i = 0;
                     17:        setpwent();     /* Rewind file /etc/passwd */
                     18:        while ((pstp = getpwent()) != NULL) 
                     19:                printf("%d: user name is %s, home directory is %s.\n",
                     20:                                        ++i, pstp->pw_name, pstp->pw_dir);
                     21: 
                     22:        /* Find real user name. 
                     23:         *
                     24:         * NOTE: functions getpwuid and getpwnam will rewind /etc/passwd file
                     25:         * by calling setpwent.
                     26:         */
                     27:        ruid = getuid();
                     28:        if ((pstp = getpwuid(ruid)) == NULL) 
                     29: /* If this message come out too bad. Possible file /etc/passwd corrupted. */
                     30:                fprintf(stderr, "Cannot find user with id number %d\n", pstp);
                     31:        else
                     32:                printf("Real user name is %s\n", pstp->pw_name);
                     33: 
                     34:        /* Find the user id for superuser root */
                     35:        ((pstp = getpwnam("root")) == NULL) ?
                     36:                fprintf(stderr, "Do you have user root on your system?\n") :
                     37:                printf("root id is  %d\n", pstp->pw_uid);
                     38: 
                     39:        /* Check is the effective process id is the superuser id *
                     40:         * 
                     41:         * NOTE: if you would like to see how to enable root prileges,
                     42:         * you can run next command from command line:
                     43:         * cc pwfun.c
                     44:         * su root chown root pwfun
                     45:         * su root chmod 4511 pwfun
                     46:         */
                     47:        euid = geteuid();
                     48:        printf("%d %d\n", ruid, euid);
                     49:        printf("Process ");
                     50:        (euid == pstp->pw_uid) ? printf("has ") : printf("doesn't have ");
                     51:        printf("the root priveleges\n");
                     52: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.