色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

Hi,歡迎來到嵌入式培訓高端品牌 - 華清遠見教育科技集團<北京總部官網>,專注嵌入式工程師培養15年!
當前位置: > 華清遠見教育科技集團 > 嵌入式學習 > 講師博文 > linux下獲取用戶基本信息
linux下獲取用戶基本信息
時間:2016-12-30作者:華清遠見

通過c語言基礎庫從獲取linux用戶的基本信息。

1、使用struct passwd管理用戶信息。
        struct passwd
        {
            char *pw_name; /* 用戶登錄名 */
            char *pw_passwd; /* 密碼(加密后)*/
            __uid_t pw_uid; /* 用戶ID */
            __gid_t pw_gid; /* 組ID */
            char *pw_gecos; /* 詳細用戶名 */
            char *pw_dir; /* 用戶目錄 */
            char *pw_shell; /* Shell程序名 */
        };

2、分析相并的系統文件/etc/passwd

      ⑴    root:x:0:0:root:/root:/bin/bash 
              ⑵    daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
              ⑶    bin:x:2:2:bin:/bin:/bin/sh

在passwd文件中記錄的是所有系統用戶
        每一行表示一個完整的struct passwd結構,以':'分隔出每一項值,其7項。

3、獲取系統當前運行用戶的基本信息。
        #include <grp.h>
        #include <pwd.h>
        #include <unistd.h>
        #include <stdio.h>

int main ()
        {
            uid_t uid;
            struct passwd *pw;
            struct group *grp;
            char **members;

            uid = getuid ();
            pw = getpwuid (uid);

            if (!pw)
            {
                printf ("Couldn't find out about user %d.\n", (int)uid);
                return 1;
            }

            printf ("I am %s.\n", pw->pw_gecos);
            printf ("User login name is %s.\n", pw->pw_name);
            printf ("User uid is %d.\n", (int) (pw->pw_uid));
            printf ("User home is directory is %s.\n", pw->pw_dir);
            printf ("User default shell is %s.\n", pw->pw_shell);
            grp = getgrgid (pw->pw_gid);
            if (!grp)
            {
                printf ("Couldn't find out about group %d.\n",
                (int)pw->pw_gid);
                return 1;
            }

    printf ("User default group is %s (%d).\n",
                grp->gr_name, (int) (pw->pw_gid));

    printf ("The members of this group are:\n");
            members = grp->gr_mem;
            while (*members)
            {
                printf ("\t%s\n", *(members));
                members++;
            } 
            return 0;
        }

編譯,結果輸出
        $gcc -o userinfo userinfo.c
        $./userinfo
        I am root.
        My login name is root.
        My uid is 0.
        My home is directory is /root.
        My default shell is /bin/bash.
        My default group is root (0).
        The members of this group are:
                test
                user
                test2

4、查看所有的用戶信息

使用pwd.h定義的方法getpwent(),逐行讀取/etc/passwd中的記錄,每調用getpwent函數一次返回一個完整用戶信息struct passwd結構。
再次讀取時,讀入下一行的記錄。

在使用之前先使用setpwent()打開文件(如果文件關閉)或重定位到的文件開始處,操作結束時使用endpwent()關閉/etc/passwd文件,避免對后面的使用產生負作用。

5、腳本操作,顯示所有用戶的信息中的name

使用cut命令將/etc/passwd中的內容逐行解析,"-d:"以':'將一行劃分出7人字段列,-f1,為第一列
         cut -d: -f1 /etc/passwd

發表評論
評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
主站蜘蛛池模板: 大地资源在线观看免费中文版 | 国产国语对白露脸正在播放 | 国产精品人妻一区二区网站 | 中文字幕无码人妻少妇免费 | 在线精品无码字幕无码AV | 亚洲人成A片在线观看 | 亚洲欧美成人久久一区 | 色综合伊人丁香五月桃花婷婷 | 欧美日韩中文国产一区 | 久久激情戏 | 自拍偷拍亚洲 | 麻花豆传媒mv在线观看网站 | 免费无码又色又爽的视频软件 | 久久精品青草社区 | 色吊丝中文字幕 | 亚洲欧美日韩国产精品一区 | 久久亚洲精品无码网站 | 亚洲av色影在线 | 天堂网www最新版资源在线 | 欧美人与ZOXXXX乱叫 | 又大又硬又爽免费视频 | 久久久久成人网站 | 成人无码高潮av在线观看 | 人人做人人爽国产视 | 国产一卡三卡四卡无卡精品 | 精品国产乱码久久久久久软件大全 | 鸭王精品一区二区 | 成人交性视频免费看 | 日韩精品极品视频在线观看免费 | 香港三日本三级少妇三级视频 | 亚洲AV无码专区色爱天堂老鸭窝 | 精品第一国产综合精品蜜芽 | 日本视频二区 | 国产a自拍| 国产无遮挡吃胸膜奶免费看 | 三年片免费大全国语 | 国产成人精品日本亚洲语音 | 中文字幕在线乱码不卡二区区 | 日批视频免费在线观看 | 蜜桃视频在线观看www社区 | 第九色区AV天堂 |