精华内容
下载资源
问答
  • char *getUserName() { struct passwd *user; user = getpwuid(geteuid()); //printf("name : %s\n", user->pw_name); //printf("uid : %d\n", user->pw_uid); //printf
    char *getUserName()
    {
        struct passwd *user;
        user = getpwuid(geteuid());
        //printf("name     :     %s\n", user->pw_name);
        //printf("uid     :     %d\n", user->pw_uid);
        //printf("home    :    %s\n", user->pw_dir);
        return user->pw_name;
    }

    /*
    struct passwd
    {
    	char *pw_name;
    	char *pw_passwd;
    	__uid_t pw_uid;
    	__gid_t pw_gid;
    	char *pw_gecos;
    	char *pw_dir;
    	char *pw_shell;
    }
    */


    int getHostName(char *name)
    {
        gethostname(name, sizeof(name));
        return name;
    }

    //gethostname

    可以获取用户名

    头文件 <unistd.h>




    展开全文
  • linux c 获取用户信息以及主机信息

    千次阅读 2015-07-10 22:42:58
    /* gino 2015/7/10 21:52:38 */#include #include #include #include #include int main(){ /* getlogin函数返回与当前用户关联的登录名。 getuid函数返回程序关联的U
    /*
    gino
    2015/7/10 21:52:38
    */
    
    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <pwd.h>
    #include <sys/utsname.h>
    int main(){
        /*
        getlogin函数返回与当前用户关联的登录名。
        getuid函数返回程序关联的UID,它通常是启动程序的用户的UID。
        */
        printf("Login user is %s\n",getlogin());
        printf("uid=%d, gid=%d\n",getuid(),getgid());
    
        /*
        系统文件/etc/passwd包含一个用户帐号数据库。它由行组成,每行对应一个用户,包括:
        用户名、加密口令、用户标识符(UID)、组标识符(GID)、全名、主目录和默认shell。
        编程接口的数据结构:
        strcut passwd {
            char *pw_name;
            char *pw_passwd;
            uid_t pw_uid;
            gid_t pw_gid;
            char *pw_gecos;
            char *pw_dir;
            char *pw_shell;
        }
    
    
        */
        struct passwd *pw;
        /*获取当前用户信息,返回一个指向passwd结构的指针。出错返回NULL,并设置errno*/
        pw = getpwuid(getuid());
        printf("name=%s, pass=%s, uid=%d, gid=%d, gecos=%s, dir=%s, shell=%s\n",\
                        pw->pw_name, pw->pw_passwd, pw->pw_uid, pw->pw_gid, pw->pw_gecos, pw->pw_dir, pw->pw_shell);
    
        /*获取指定用户信息,返回一个指向passwd结构的指针。出错返回NULL,并设置errno*/
        pw = getpwnam("gino");
        printf("name=%s, pass=%s, uid=%d, gid=%d, gecos=%s, dir=%s, shell=%s\n",\
                        pw->pw_name, pw->pw_passwd, pw->pw_uid, pw->pw_gid, pw->pw_gecos, pw->pw_dir, pw->pw_shell);
    
    
        char computer[256];
        /*
        获取本地主机的标准主机名
        int gethostname(char *name, size_t len);
        name : 一个指向存放主机名的缓冲区指针
        len : 缓冲区的长度
        成功返回0,失败返回-1.
        */
        gethostname(computer,256);
        printf("hostname=%s\n",computer);
    
        /*
        struct utsname {
        char sysname[];    //当前操作系统名 
        char nodename[];   //网络上的名称
        char release[];    //当前发布级别 
        char version[];    //当前发布版本 
        char machine[];    //当前硬件体系类型
        #ifdef _GNU_SOURCE
        char domainname[];  //当前域名 
        #endif
        };
        */
        struct utsname uts;
    
        /*
        获取当前内核名称和其他信息
        int uname(struct utsname *buf);
        成功返回0,失败返回-1.
        */
        uname(&uts);
        printf("sysname=%s\n",uts.sysname);
        printf("nodename=%s\n",uts.nodename);
        printf("release=%s\n",uts.release);
        printf("version=%s\n",uts.version);
        printf("machine=%s\n",uts.machine);
    
    
        return 0;
    }
    展开全文
  • 可以使用getuid()获取用户的ID号,然后通过getpwuid函数通过用户uid查找用户的passwd数据来获取系统登录的用户名。 #include  #include  #include  int main(void) { struct pas

    https://zhidao.baidu.com/question/9421736.html


    可以使用getuid()获取用户的ID号,然后通过getpwuid函数通过用户的uid查找用户的passwd数据来获取系统登录的用户名。

    #include <stdio.h>
    #include <pwd.h>
    #include <unistd.h>
    int main(void)
    {
    struct passwd *pwd;
    pwd = getpwuid(getuid());
    printf("当前登陆的用户名为:%s\n", pwd->pw_name);
    return 0;
    }

    展开全文
  • linux用户管理

    2019-04-04 11:44:36
    用户管理 1.用户存在的意义 用户是能够获取系统资源的权限的集合 2.组存在的一意义 组是权限的容器 a.管理员 root :具有使用系统所有权限的用户,其UID 为0. b.普通用户 : 即一般用户,其使用...查看当前用户 whoami...

    用户管理

    1.用户存在的意义

    用户是能够获取系统资源的权限的集合

    2.组存在的一意义

    组是权限的容器
    a.管理员 root :具有使用系统所有权限的用户,其UID 为0.
    b.普通用户 : 即一般用户,其使用系统的权限受限,其UID为500-60000之间.
    c.系统用户 :保障系统运行的用户,一般不提供密码登录系统,其UID为1-499之间.

    3.用户的查看

    1)
    查看当前用户
    whoami ##查看当前用户
    2)
    系统中用户的查看
    id ##查看指定用户id信息
    id
    -u ##查看用户的uid
    -g ##查看用户的gid
    -G ##查看用户所在的所有组的id
    -n ##显示名字而不显示id数字

    在这里插入图片描述

    用户切换

    gome-session-quit --force	##注销当前用户
    在用其他用户登陆	
    

    在这里插入图片描述

    su - 用户名称
    su - 中 “-” 标示在用户身份切换时同时切换当前用户的环境
    su - 执行时高级用户切换到低级用户不需要密码,低级用户切换到高级需要,平级用户切换切换也需要
    注意:每次su切换到其他用户操作之后必须退出,然后再次切换到其他用户
    

    在这里插入图片描述

    用户在系统中的存储方式

    /etc/passwd
    用户信息文件
    用户名称:密码:uid:gid:说明:家目录:默认shell
    “说明:默认shell的指定有那些可以查看系统中/etc/shells文件”

    在这里插入图片描述
    /etc/group
    用户组信息文件
    组的名字:组密码:组id:组成员

    在这里插入图片描述
    /etc/shadows
    认证信息文件

    在这里插入图片描述
    /etc/skel/.*
    默认开启shell的配置,用户的骨文件

    /home/username
    用户的家目录
    在这里插入图片描述

    用户管理命令

    1)用户的删除

    	userdel
    	userdel usertest		##删除用户但不删除用户的配置文件
    	userdel -r usertest ##删除用户并删除用户的配置文件
    

    2)用户建立
    用户信息监控命令.

    watch -n 1 'tail -n 3 /etc/passwd /etc/group;ls -l /home'
    useradd		##建立用户的,建立用户时,读取/etc/login.defs 文件内容确定规则
    useradd -u 8888 usertest		##指定用户uid
    useradd -g 21	usertest		##指定用户初始组id,"21用户组必须是存在的"
    

    在这里插入图片描述

    useradd -G 21	usertest 	##指定用户的附加组id “21用户组必须存在”
    useradd -c "hello"  usertest ##指定用户的说明
    useradd -d /home/lee usertest ##指定用户的家目录
    useradd -s /bin/sh usertest ##指定用户的默认shell
    

    在这里插入图片描述

    groupadd ##建立用户组
    groupadd -g 888 usertest ##建立用户组并指定用户组的id
    groupdel ##删除用户组

    在这里插入图片描述
    3)更改用户信息

    usermod
    usermod -l 新名称	usertest 	##更改用户的名称
    usermod -u 6666		usertest		##更改用户uid
    usermod -g 21		usertest		##更改用户的初始组
    usermod -G 21		usertest		##更改用户的附加组
    usermod -aG 72		usertest	 ##添加用户的附加组
    

    在这里插入图片描述

    usermod -G ""		westos		##删除用户所有附加组的身份
    usermod -c "hello,csdn"	usertest 	##指定用户说明文字
    usermod -d /home/csdn usertest		##更改用户家目录的指向
    usermod -md /home/lcsdn	usertest		##更改用户家目录
    usermod -s /bin/sh	usertest		##更改用户的shell
    usermod -L 		usertest		##冻结用户
    usermod -U		usertest		##解锁用户
    

    在这里插入图片描述

    用户认证信息

    cat /etc/shadows		查看记录用户认证信息
    usertest:!!:17990:0:99999:7:::
      [1]  [2]  [3][4] [5] [6] [7] [8]  [9]
    此文件一共有九列:
    [1]
    用户名称:usertest
    [2]
    !!
    用户密码:
    用户的加密字符串,默认用的加密方式为sha512对称加密,
    如果加密字符串前出现"!"那么用户被冻结
    [3]
    17990
    用户密码最后一次被更改的时间:
    此时间计算是从1970-1-1开始计算的累计天数
    [4]
    0
    用户密码最短有效期:
    如果此位有设定数字,那么在此数字范围内的天数内是不能修改用户密码的
    [5]
    99999
    用户密码最长有效期:
    用户必须在此有效期内更新密码,如果超时会被冻结
    [6]
    7
    密码警告期限:
    在过期前制定天数内会发送警告信息给用户
    
    [7]
    用户非活跃天数:
    此位默认为空,如果设定数值,那么在密码最长有效期过后仍然可以使用的天数
    
    [8]
    用户到期日:
    默认为空,表示帐号一定会被冻结的时间点
    
    [9]
    用户自定义列,目前没有启用
    
    passwd -S usertest##查看usertest用户密码信息
    

    在这里插入图片描述

    #用户密码#
    passwd usertest ##更改usertest密码
    passwd -l usertest##在用户密码前加入“!!”
    passwd -u usertest
    usermod -L usertest ##在用户密码前加入“!”
    usermod -U usertest ##在密码不为空时使用
    passwd -d usertest##清空usertest密码

    在这里插入图片描述

    注意:
    	普通用户改密码时
    	1.必须知道当前用户原始密码
    	2.密码不能和帐号名称相似
    	3.密码不能是纯数字或纯字母
    	4.密码不能是有序的字母和数字的组合
    
    
    #用户密码最后一次被更改的时间#
    	passwd -e usertest 	##会改变用户最后一次更改密码时间为0.
    				##用户在登陆时会被强制更改密码
    	chage  -d 0 usertest	##两个命令功能类似
    
    
    #用户密码最短有效期#
    	passwd -n 1 usertest  ##usertest用户在1天之内不能修改密码
    	chage  -m 1 usertest		
    
    #用户密码最长有效期#
    	passwd -x 30	usertest	##设定usertest在30天内必须改密码
    	chage  -M 40	usertest
    #密码警告期限#
    	passwd -w 2	usertest##密码过期前两天有警告输出
    	chage  -W 2	usertest
    #用户非活跃天数#
    	passwd -i 1	usertest	##密码过期后仍可登陆系统的天数
    	chage  -I 1	usertest
    #用户到期日#
    	chage  -E  2018-11-11 usertest	##usertest用户在2018-11-11日会被冻结
    
    #用户自定义列,目前没有启用#
    

    在这里插入图片描述

    用户授权

    1.权力下放文件为/etc/sudoers
    此文件可以用vim直接编辑,但是不提供语法检测
    也可以使用visudo编辑此文件,visudo命令是提供语法检测的

    2.下放方式

    • visudo
      100行左右

    用户 主机名称=(得到的用户身份) 命令

    usertest localhost=(root) /usr/sbin/useradd ##usertest用户可以在localhost主机以
    ##root用户身份执行useradd命令
    usertest localhost=(root) NOPASSWD: /usr/sbin/useradd ##usertest用户可以在localhost主机以
    ##root用户身份免密执行useradd
    在这里插入图片描述

    3.测试
    su - usertest
    sudo useradd hello

    在这里插入图片描述

    展开全文
  • FACL:Filesystem Access Control List (文件系统的访问控制列表)利用文件扩展保存额外的访问控制权限 ...命令:w:显示当前系统登录的用户和相关动作who:显示当前登录系统的用户有哪些 whoami:显示当...
  • linux用户管理

    2016-11-24 09:57:12
    su ---------用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码(su - :获取root的权限和环境变量) id-------可以显示真实有效的用户ID(UID)和组ID(GID)。 useradd ,groupdel ------...
  • Linux之进程共享

    2020-07-21 10:54:18
    获取当前进程实际用户ID】 uid_t getuid(void); 【获取当前进程有效用户ID】 uid_t geteuid(void); getgid 函数 【获取当前进程使用用户组ID】 gid_t getgid(void); 【获取当前进程有效用户组ID】 gid_t getegid...
  • linux高级选项

    2020-10-14 18:17:27
    linux高级命令 hostname 语法1: hostname 输出完整的主机名 语法2: hostname -f 输出主机的FQDN(全限定域名) id id:显示当前执行命令的用户的基本信息 id 用户名: 显示指定的用户基本信息 whoami 我是谁,常用于...
  • Linux下进程编程

    2013-11-23 18:44:37
    Linux下进程编程 写给linux编程的初学者,进程编程是linux编程首先要学习的东西,往后要...使用getuid函数和geteuid函数来获取当前进程的用户标识和有效用户标识 #include #include #include int main(void)
  • Linux命令笔记

    2019-03-14 09:16:58
    8:查看当前Linux系统的发行版本 语法: lsb_release -a 9:lsof列出进程打开或使用的文件信息 语法: lsof [选项] 10:date 第六部分:服务管理 1:服务简介与分类 2:RPM包安装服务的管理 2.1:独立服务的管理 2.2:...
  • 使用“geteuid”函数获取当前程序所属用户组 #include <unistd.h> #include <stdio.h> #include <stdlib.h> bool isRoot(){ if(geteuid() == 0){ return true; }else{ return false; } ...
  • Linux下使用C语言编写mybash

    千次阅读 2019-03-01 17:46:48
    bash的输出格式:[用户名 @主机名所在文件]$ ,在代码中实现了动态提示符,使用getuid()函数获取用户的ID,然后再使用getpwuid()函数根据用户的UID获取当前用户的passwd信息,在从中找到用户名字;而主机所在文...
  • 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程...本次实验选择24号和47号系统调用,分别获取当前用户uid(用户ID)和gid(组ID),即模拟Linux系统“id”命令。 编...
  • 一、进程相关 1. 进程ID 头文件#include(c++文件,c源文件为#include) getpid( ) 获取当前进程的 ID getppid( ) 获取当前进程的...getuid( ) 获取当前进程的实际用户ID getgid( ) 获取当前进程的实际用户组I
  • Linux命令源代码阅读whoami

    千次阅读 2017-07-08 14:27:50
    源代码中使用geteuid()获取当前有效用户id,再使用getpwuid()根据前面有效用户id来填充struct passwd结构体,打印出该结构体中的pw_name变量。源代码如下:uid = geteuid (); //返回用户的有效id pw = (uid == NO_...
  • 头文件:<unistd.h>...函数 : getpid 获取当前进程 getppid获得父进程 getpgrp 当前进程组 getuid 实际用户 geteuid有效用户 getgid 实际用户组 getegid 有效用户组 getsid 获得指定进程会话...
  • 2.3.39 查看当前系统上所有工作站的用户 2.3.40 与基本工作站上的用户交谈 2.3.41 检查远程系统是否正常 2.3.42 电子邮件的使用简介 第三章 Linux系统的网络功能 3.1 Linux支持的网络协议 3.1.1 TCP/IP 3.1.2 TCP/...
  • 第一篇 Linux系统介绍 第1章 Linux简介 …1 1.1 Linux 的起源 1 1.2 自由软件基金会的GNU计划 1 1.3 Linux 的发音 2 1.4 Linux 的特点 2 1.5 基本硬件要求 3 1.6 如何获得Linux 3 1.6.1 从网上下载Linux 3 1.6.2 从...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    Linux 是一个真正的多用户操作系统,可以同时接受多个用户登录,还允许一个用户进行多次登录。这是因为Linux和许多版本的Unix一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统...
  • 默认情况下,ps命令只会显示运行在当前控制台下的属于当前用户的进程。组合命令 -e 显示所有进程 -f 显示完整格式的输出 UID:启动这些进程的用户。 PID:进程的进程ID。 PPID:进程的进程(如果进程是一个进程启动...
  • Android的内核就是Linux,...linux系统中,当前用户执行的程序,该程序进程的 有效用户ID(Effective UID)就是当前用户,但拥有s(set uid)权限的程序,其进程的有效用户ID是这个程序的所有者。换句话说,有set ui...
  • Miniftp项目实战剖析(含源代码链接)

    千次阅读 热门讨论 2018-08-22 17:46:21
    对于Linux端的ftp服务的而言,账户即为Linux端的用户。 一般步骤是: 以root用户权限启动ftp服务 获取客户端的验证信息 ...我们可以通过getuid()函数获取当前程序运行的uid。 一般root用户uid =0。 所以可...
  • 对于Linux端的ftp服务的而言,账户即为Linux端的用户。一般步骤是:以root用户权限启动ftp服务获取客户端...我们可以通过getuid()函数获取当前程序运行的uid。一般root用户uid =0。所以可以通过以下方式验证是否...
  • 获取当前工作目录(三)扫描目录获取目录下的文件(四)获取文件属性信息(五)切换进程设置当前UID(六)获取当前用户密码(七)加密函数(八)添加所有者权限(九)取消/添加系统回显功能二、处理字符串函数知识...
  • 我是linux编程的初学者,进程编程是linux编程首先要学习的东西,往后要学习进程之间通讯的...使用getuid函数和geteuid函数来获取当前进程的用户标识和有效用户标识 #include #include #include int main(void){
  • 贺邦+原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ...本文实验选择24号和47号系统调用,分别获取当前用户uid(用户ID)和gid(组ID),即模拟Linux...
  • 建立windows共享目录 右击要共享的文件夹-->属性-->高级共享-->...获取当前登录user的gid,uid id username 建立挂载目录 mkdir /mnt/win 挂载目录 sudo mount -t cifs //192....
  • ELDK使用与开发手册

    2018-03-07 10:53:39
    U-Boot和Linux可以配置成自动执行而不需要任何用户的干涉。 通过串口有很多种方法来控制你的目标板,比如说使用终端服务器。不过最常见的做法是使用你本机的串口,这时,你主机需要安装一个终端程序,如cu或者kermit...
  • 而越来越多专业知识的 Blog 的出现,让我们看到了 Blog 更多所蕴涵的巨大的信息价值:不同的 Blog 选择不同的内容,收集和整理成为很多人关注的专业 Blog ——目前越来越多的人获取信息的来源是一些固定的 Blog 。...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

linuxuid当前用户获取

linux 订阅