zoukankan      html  css  js  c++  java
  • [转载]Linux用户管理全攻略(五)

    Linux 用户(User)查询篇
    作者:北南南北
    赞助:
    来自:LinuxSir.Org
    摘要: 本文主要介绍在用户管理中,查询用户的几种工具介绍 id 、finger、groups 以及 w、who、users ;

    目录索引

    一、用户查询工具的原理;
    二、用户(User)和用户组(Group)查询工具;
    1、id 工具: 查询用户所对应的UID 和GID 及GID所对应的用户组;
    2、finger 工具:用来查询用户信息,侧重用户家目录、登录SHELL等;
    3、查询登录主机的用户工具:w 、who 、users
    4、groups 用户所归属的用户组查询;
    三、后记;
    四、参与修正本文;
    五、致谢;
    六、相关文档;

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    正文
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     
    一、用户查询工具的原理;

    在用户管理中,用户查询是通过几个常用的工具来完成的,比如id 、finger、groups、users ... ... ,我们都知道用户的配置文件是/etc/passwd,用户组的配置文件是/etc/groups 文件,我们对用户的查询除了通过查询工具以外,我们还能直接查看用户和用户组的配置文件来达到查询的目的;
    用户查询工具的原理也是读取与用户和用户组有关的配置文件,然后按一定的规则和条件输出,用户和用户组配置文件很重要,所以您有必要先读一下关有用户管理的文档:
    《Linux 用户(user)和用户组(group)管理概述》
    《用户(user)和用户组(group)配置文件详解》

    二、用户(User)和用户组(Group)查询工具;
     
    1、id 工具: 查询用户所对应的UID 和GID 及GID所对应的用户组;
    id 工具是用来查询用户信息,比如用户所归属的用户组,UID 和GID等;id 用法极为简单;我们举个例子说明一下;

    语法格式: id [参数] [用户名]
    至于有哪些参数,自己查一下 id --help 或man id ;如果id后面不接任何参数和任何用户,默认显示当前操作用户的用户名、所归属的用户组、UID和GID等;
    实例一:不加任何参数和用户名;
     
    [beinan@localhost ~]$ id
    uid=500(beinan) gid=500(beinan) groups=500(beinan)
    注解:在没有加任何参数的情况下,查询的是当前操作用户的用户名、UID 、GID 和所处的主用户组和附属用户组;在本例中,用户名是beinan,UID是500,所归属的主用户组是beinan,GID是500 ;

    实例二: id 后面接用户名;
    如果我们想查询系统中用户的UID和GID 相应的内容,可以直接接用户名,但用户名必须是真实的,能在/etc/passwd中查到的;

    [beinan@localhost ~]$ id linuxsir
    uid=505(linuxsir) gid=502(linuxsir) groups=502(linuxsir),0(root),500(beinan)
    注解:查询用户linuxsir 的信息,用户linuxsir ,UID 为505,所归属的主用户组是linuxsir,主用户组的GID是502;同时linuxsir用户也是GID为0的root用户组成员,也是GID为500用户组beinan的成员;
    这个例子和实例一在用户组方面有所不同,我们在 《Linux 用户(user)和用户组(group)管理概述》中有提到;用户和用户组的对应关系,可以是一对一、一对多、多对一、或多对多的交叉关系,请参考之;另外您还需要掌握《用户(user)和用户组(group)配置文件详解》一文;

    2、finger 工具:用来查询用户信息,侧重用户家目录、登录SHELL等;
    finger 工具侧重于用户信息的查询;查询的内容包括用户名(也被称为登录名Login),家目录,用户真实的名字(Name)... ... 办公地址、办公电话;也包括登录终端、写状态、空闭时间等;
    我们最常用finger 来查询用户家目录、用户真实名、所用SHELL 类型、以及办公地址和电话,这是以参数 -l 长格式输出的;而修改用户的家目录、真实名字、办公地址及办公电话,我们一般要能过chfn命令进行;

    语法格式:

    finger [参数选项] [用户名]
    -l 采用长格式(默认),显示由-s选项所包含的所有信息,以及主目录、办公地址、办公电话、登录SHELL、邮件状态、.plan、.project和.forward;
    -m 禁止对用户真实名字进行匹配;
    -p 把.plan和.project文件中的内容省略;
    -s 显示短格式,用户名(也被称为登录名Login)、真实名字(NAME)、在哪个终端登录(Tty)、写状态、空闲时间(Idle)、登录时间(Login Time)、办公地点、办公电话等;

    至于finger 有哪些参数,您可以通过 finger --help 或man finger 来获取,我们在本文中以实例讲述最常用的参数;

    实例一:不接任何参数,也不指定查询用户名;默认为加了-s参数;
     
    [beinan@localhost ~]$ finger
    Login Name Tty Idle Login Time Office Office Phone
    beinan beinan sun tty1 1:39 Nov 2 08:27
    linuxsir linuxsir open tty2 2 Nov 2 10:03 linuxsir o +1-389-866-771
    等价命令

    [beinan@localhost ~]$ finger -s
    注解:不加任何参数,也没有指定查询哪个用户,finger 会以默认以短格-s 来输出登录本机的所有用户的用户名(也被称为登录名Login)、真实名字(NAME)、在哪个终端登录(Tty)、写状态、空闲时间(Idle)、登录时间(Login Time)、办公地点、办公电话等;
    在这个例子中,有beinan用户登录,真实名字是beinan sun (这个名字是用户的真实名字,如果在添加用户时没有设置,是不会显示的),在tty1终端登录,空闭时间是1分39秒,登录时间是Nov /2/08:27 ,没有办公室名称,没有办公电话;
    请对照本例中beinan用户记录的解说,我们来看看本例中的 linuxsir用户信息;应该不难。
    关于写状态,如果在Tty 后面没有任何输出,表示正在写入,如果有*出现,表示没有写入或被禁止,比如下面的例子,ftp用户没有通过终端登录系统,因为Tty是*,同时Tty后面还有一个* ,表示禁止写入或没有写入状态(当用户没有登录时);

    [beinan@localhost ~]$ finger -s ftp
    Login Name Tty Idle Login Time Office Office Phone
    ftp FTP User * * No logins
    我们可以以短格式的来查询某个用户信息以短格式输出,比如下面的例子;

    [beinan@localhost ~]$ finger -s beinan
    实例二:关于长格式的用户信息的输出 -l 参数的实例;
    finger -l 如果不加用户名的情况下,可以列出所有通过tty登录的用户信息;如果您想查询某个用户,就直接指定用户,可以指定一个或多个;什么是tty登录?如果您在全屏文本界面操作的话,您可以通过按CTRL+F2或CTRL+F3 或CTRL+F4等,以几个不同的用户登录到主机上,您就会看到,每个用户都有不同的tty;

    [beinan@localhost ~]$ finger -l
    [beinan@localhost ~]$ finger -l beinan linuxsir 注:可以同时查询几个用户信息,以长格式输出;

    [beinan@localhost ~]$ finger beinan
    Login: beinan Name: beinan sun
    Directory: /home/beinan Shell: /bin/bash
    On since Wed Nov 2 08:27 (CST) on tty1 2 hours 29 minutes idle
    On since Wed Nov 2 10:50 (CST) on pts/0 from :0.0
    No mail.
    No Plan.
    在本例中,所查询的用户是beinan,真实名字是beinan sun ,家目录位于 /home/beinan ,所用SHELL类型是bash ;然后就是通过哪个终端登录的,登录时间,是不是有mail ,有Plan 等;
    实例三:参数组合的例子;

    [beinan@localhost ~]$ finger -lp beinan
    Login: beinan Name: beinan sun
    Directory: /home/beinan Shell: /bin/bash
    On since Wed Nov 2 08:27 (CST) on tty1 2 hours 36 minutes idle
    On since Wed Nov 2 10:50 (CST) on pts/0 from :0.0
    No mail.
    注解:查询beinan用户信息,以长格式输出,并且不输出.Plan和.Project的内容;
    实例四: finger -s 和w 及who的比较;
    对于finger 就说这么多吧,极为简单的工具,当用到-s 参数时,您最好和w和who工具对照,看看finger -s 和w 及who的输出有什么异同,w和who是查询哪些用户登录主机的;而finger -s 呢,无论是登录还是不登录的用户都可以查;但所查到的内容侧重有所不同;自己看看例子;

    [beinan@localhost ~]$ finger -s
    Login Name Tty Idle Login Time Office Office Phone
    beinan beinan sun tty1 3:03 Nov 2 08:27
    beinan beinan sun pts/0 Nov 2 10:50 (:0.0)
    linuxsir linuxsir open tty2 1:26 Nov 2 10:03 linuxsir o +1-389-866-771
    [beinan@localhost ~]$ w
     11:30:36 up 3:04, 3 users, load average: 0.30, 0.15, 0.10
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    beinan tty1 - 08:27 3:03m 2:52 0.00s /bin/sh /usr/X11R6/bin/startx
    linuxsir tty2 - 10:03 1:26m 0.01s 0.01s -bash
    beinan pts/0 :0.0 10:50 0.00s 0.16s 0.00s w
    [beinan@localhost ~]$ who
    beinan tty1 Nov 2 08:27
    linuxsir tty2 Nov 2 10:03
    beinan pts/0 Nov 2 10:50 (:0.0)

    3、查询登录主机的用户工具:w 、who 、users

    w、who和users工具,是查询已登录当前主机的用户;另外finger -s 也同样能查询;侧重点不一样;请自己对比着看;毕竟简单,这里只是介绍;

    [beinan@localhost ~]$ w
     12:09:56 up 3:43, 7 users, load average: 0.16, 0.10, 0.04
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    beinan tty1 - 08:27 3:42m 3:09 0.00s /bin/sh /usr/X11R6/bin/startx
    linuxsir tty2 - 10:03 2:06m 0.01s 0.01s -bash
    beinan pts/0 :0.0 11:36 1:09 0.15s 0.15s bash
    beinan pts/1 :0.0 11:37 1:12 0.21s 0.21s bash
    beinan pts/2 :0.0 12:02 6:52 0.09s 0.09s bash
    beinan pts/3 :0.0 12:05 12.00s 0.11s 0.06s ssh xmbnnbdl@linuxsir.org -p 17007
    beinan pts/4 :0.0 12:06 0.00s 0.21s 0.00s w
    [beinan@localhost ~]$ who
    beinan tty1 Nov 2 08:27
    linuxsir tty2 Nov 2 10:03
    beinan pts/0 Nov 2 11:36 (:0.0)
    beinan pts/1 Nov 2 11:37 (:0.0)
    beinan pts/2 Nov 2 12:02 (:0.0)
    beinan pts/3 Nov 2 12:05 (:0.0)
    beinan pts/4 Nov 2 12:06 (:0.0)
    [beinan@localhost ~]$ users
    beinan beinan beinan beinan beinan beinan linuxsir

    4、groups 用户所归属的用户组查询;
    groups 用法很简单,就是查询用户所归属哪个或哪些用户组;

    语法格式: groups 用户名
    实例:

    [beinan@localhost ~]$ groups beinan 注:查询beinan所归属的用户组;
    beinan : beinan 注:beinan 是beinan用户组下的成员;
    [beinan@localhost ~]$ groups linuxsir 注:查询linuxsir用户所归属的用户组;
    linuxsir : linuxsir root beinan 注:linuxsir用户是linuxsir用户组、beinan用户组、root用户组成员;
    groups 主要是查询用户所归属的用户组名,最好和id命令相对比;这样对这两个工具都有所了解;

    三、后记;
    本文是很简单的文档,花十分钟就能看得完,但对我来说既然想写入门级系列文档了,再简单也得告诉初学者,不是吗?写本文的时候,我已经把查询用户的工具列为《Linux 用户及用户组管理工具介绍》的文档中,但写着写着发现文档太长了,所以只好把用户的查询做为独立的一篇先发出来;
     
  • 相关阅读:
    跃迁方法论 Continuous practice
    EPI online zoom session 面试算法基础知识直播分享
    台州 OJ 2648 小希的迷宫
    洛谷 P1074 靶形数独
    洛谷 P1433 DP 状态压缩
    台州 OJ FatMouse and Cheese 深搜 记忆化搜索
    台州 OJ 2676 Tree of Tree 树状 DP
    台州 OJ 2537 Charlie's Change 多重背包 二进制优化 路径记录
    台州 OJ 2378 Tug of War
    台州 OJ 2850 Key Task BFS
  • 原文地址:https://www.cnblogs.com/liuzhuqing/p/7481026.html
Copyright © 2011-2022 走看看