linux中最常用的用户信息命令

linux中最常用的用户信息命令

仅个人想法,会持续不间断更新和改进。

用户信息,重中之重。

虽然21世纪最重要的是人才。

但对于我们个人而言,用户信息也是极其重要并特别需要留意的。

还有谁 last

Linux last 命令用于显示用户最近的登录信息。

官方定义为:

last, lastb – show listing of last logged in users

通过读取/var/log/wtmp文件来获取这些信息。

语法

$ last [-R] [-num] [ -n num ] [-adFiowx] [ -f file ] [ -t YYYYMMDDHHMMSS] [name…] [tty…]

参数

  • -R 省略 hostname 的栏位
  • -n 展示前 num 个
  • username 展示 username 的登入讯息
  • tty 限制登入讯息包含终端机代号

一般使用方法

$ lastusername2 pts/17       192.168.100.123 Wed Mar 23 22:14   still logged inusername3 pts/20       localhost:11.0   Wed Mar 23 14:26 – 15:48 (01:21)username4 pts/23       localhost:11.0   Wed Mar 23 14:26 – 15:48 (01:21)username4 pts/4        192.168.100.125   Thu Jun 10 18:37 – 22:57 (04:20)username5 pts/4        192.168.100.125   Thu Jun 10 18:21 – 18:21 (00:00)username6 pts/9        192.168.100.126   Thu Jun 10 18:11 – 18:20 (00:09)username7 pts/15       192.168.100.122   Thu Jun 10 18:04 – 23:44 (1+05:40)username8 pts/14       192.168.100.121   Thu Jun 10 17:59 – 07:50 (13:50)username9 pts/9        192.168.100.126   Thu Jun 10 17:59 – 18:03 (00:04)
wtmp begins Thu Jun 10 17:33:14 2013

查看最近登陆的三个用户

$ last -3
username2 pts/17       192.168.100.123 Wed Mar 23 22:14   still logged inusername3 pts/20       localhost:11.0   Wed Mar 23 14:26 – 15:48 (01:21)username4 pts/23       localhost:11.0   Wed Mar 23 14:26 – 15:48 (01:21)
wtmp begins Thu Jun 10 17:33:14 2013

省略hostname

$ last -3 -Rusername2 pts/17         Wed Mar 23 22:14   still logged inusername3 pts/20         Wed Mar 23 14:26 – 15:48 (01:21)username4 pts/23         Wed Mar 23 14:26 – 15:48 (01:21)
wtmp begins Thu Jun 10 17:33:14 2013

显示最后一列显示主机IP地址

$ last -n 5 -a -iusername3 pts/17       Wed Mar 23 22:14   still logged in    192.168.100.123username5 pts/20       Wed Mar 23 14:26 – 15:48 (01:21)     0.0.0.0username6 pts/23       Wed Mar 23 14:26 – 15:48 (01:21)     0.0.0.0username7 pts/19       Wed Mar 23 13:46 – 15:48 (02:01)     192.168.100.123username8 pts/17       Wed Mar 23 13:18 – 15:47 (02:29)     192.168.100.123
wtmp begins Thu Jun 10 17:33:14 2013

我是谁 whoami

我知道你是谁,但我不知道我是谁,此时whoami可以帮助你,哈哈。

whoami将打印当前用户的名字。与id -un类似。

官方定义为:

whoami – print effective userid

用法为:$ whoami [option] ..

这命令,基本没有参数。

我暂时。。也没有想到为什么会有这个命令。

唯一的可能使你找管理员来配置个啥,然后他需要知道你是谁,不,我是谁。

我看了一下源码,果然简洁:#include <config.h>#include <stdio.h>#include <sys/types.h>#include <pwd.h>
#include “system.h”#include “die.h”#include “error.h”#include “long-options.h”#include “quote.h”
/* The official name of this program (e.g., no ‘g’ prefix). */#define PROGRAM_NAME “whoami”
#define AUTHORS proper_name (“Richard Mlynarik”)
voidusage (int status){  if (status != EXIT_SUCCESS)    emit_try_help ();  else   {      printf (_(“Usage: %s [OPTION]…\n”), program_name);      fputs (_(“\Print the user name associated with the current effective user ID.\n\Same as id -un.\n\\n\”), stdout);      fputs (HELP_OPTION_DESCRIPTION, stdout);      fputs (VERSION_OPTION_DESCRIPTION, stdout);      emit_ancillary_info (PROGRAM_NAME);   }  exit (status);}
intmain (int argc, char **argv){  struct passwd *pw;  uid_t uid;  uid_t NO_UID = -1;
 initialize_main (&argc, &argv);  set_program_name (argv[0]);  setlocale (LC_ALL, “”);  bindtextdomain (PACKAGE, LOCALEDIR);  textdomain (PACKAGE);
 atexit (close_stdout);
 parse_gnu_standard_options_only (argc, argv, PROGRAM_NAME, PACKAGE_NAME,                                   Version, true, usage, AUTHORS,                                   (char const *) NULL);
 if (optind != argc)   {      error (0, 0, _(“extra operand %s”), quote (argv[optind]));      usage (EXIT_FAILURE);   }
 errno = 0;  uid = geteuid ();  pw = (uid == NO_UID && errno ? NULL : getpwuid (uid));  if (!pw)    die (EXIT_FAILURE, errno, _(“cannot find name for user ID %lu”),         (unsigned long int) uid);  puts (pw->pw_name);  return EXIT_SUCCESS;}

其中使用的即为uid = geteuid ();

谁?who

.. note::  物是人非事事休,欲语泪先流。  李清照《武陵春·春晚》

知道了我是谁,接下来就要知道谁是谁了。

who将显示谁在登录,显示的内容可能包括用户名、终端登录口,登录的时间等等信息。

官方定义为:

who – show who is logged on

用法为:$ who [OPTION]… [ FILE | ARG1 ARG2 ]

常用的参数为:

  • -q , --count:只显示登入系统的帐号名称和总人数;
  • -s:此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题;
  • -a, --all:效果为加上 -b -d --login -p -r -t -T -u
  • -b, --boot:上一次系统的重启时间
  • -d, --dead:打印dead进程
  • -H, --heading:打印每一列的表头
  • -q, --count:所有登录的用户名以及用户登录的数量
  • -s, --short:打印USER/LINE/WHEN(默认为这个参数)

默认使用

显示当前登录系统的用户$ who       user     pts/0  2012-03-02 10:12 user2     pts/1  2012-03-10 09:12

系统的运行时间

这个信息显示系统自上一次重启后的运行时间。$ who -bsystem boot 2012-02-16 14:05

显示表头信息

使用-H或者--heading可以看到表头信息$ who -HUSER     LINE     WHEN         user     pts/0  2012-03-02 10:12 user2     pts/1  2012-03-10 09:12

显示登录的人员及总数

$ who -quser1 user1 user2 user2 user3 user4# users=6

什么?谁?w (who & what)

w可以认为是加强版的who,果然越简洁越强大,就比如lessmore是功能更多的。

w不仅可以显示谁在登录,还可以打印他们在做什么。w显示的信息如下:

  • 登录的用户;
  • 运行的程序;
  • 第一行显示的信息:当前时间、系统运行的时间、多少用户登录、系统的负载(分贝为1,5,15分钟)

官方定义为:

w – Show who is logged on and what they are doing.

用法为:$ w [options] user […]

常用的两个选项为:

  • -h  不显示各栏位的标题信息列。
  • -s  简洁格式列表,不显示用户登入时间,JCPU或者PCPU的时间

默认的显示

显示当前用户的登录信息及执行的命令$ w16:29:03 up 26 days,  2:49, 6 users, load average: 1.00, 0.97, 0.96USER     TTY     FROM LOGIN@   IDLE   JCPU   PCPU WHATuser     pts/4   :1   07Sep21 20days  9:59   1:53m bashuser     pts/0   :2   08Sep21 6days  0.70s  1:53m zshuser     pts/1   :3   08Sep21 20days  1:13m  1:53m bashuser     :0     :0   15Sep21 6days 27days 21.36s zshuser     pts/2   :0   15Sep21 14days  0.25s  0.25s zshuser     pts/3   :3   16Sep21 24:45m  0.22s  0.22s bash

不显示标题行

$ w -h16:29:16 up 26 days,  2:49, 6 users, load average: 1.20, 0.67, 0.76USER     TTY     FROM LOGIN@   IDLE   JCPU   PCPU WHATuser     pts/4   :1   07Sep21 20days  9:59   1:53m bashuser     pts/0   :2   08Sep21 6days  0.70s  1:53m zshuser     pts/1   :3   08Sep21 20days  1:13m  1:53m bashuser     :0     :0   15Sep21 6days 27days 21.36s zshuser     pts/2   :0   15Sep21 14days  0.25s  0.25s zshuser     pts/3   :3   16Sep21 24:45m  0.22s  0.22s bash

简洁模式显示

$ w -s16:29:26 up 26 days,  2:49, 6 users, load average: 1.50, 0.67, 0.36USER     TTY     FROM   IDLE   WHATuser     pts/4   :1     20days  bashuser     pts/0   :2     6days  zshuser     pts/1   :3     20days  bashuser     :0     :0     6days   zshuser     pts/2   :0     14days  zshuser     pts/3   :3     24:45m  bash

不要告诉别人的passwd

passwd用于创建或者更新用户密码,是管理员必备的命令之一。

这个命令最终的实现是通过调用Linux-PAM 和Libuser API来实现的。

官方的定义为:

passwd – update user’s authentication tokens

使用的方法为:$ passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [–stdin] [username]

其中很常用的options为:

  • -S, --status:显示密码的状态信息
  • -d, --delete:删除用户密码,此时该用户将处于无密码状态

不太常用的options为:

  • --stdin:可以通过标准输入,亦可以为一个pipe
  • -l, --lock:锁定账号,不过也不是完全锁定,因为用户可以通过ssh key来继续访问
  • -u, --unlock:与上面的-l选项相反,属于解锁用户
  • -w, --warning DAYS:口令到期前通知用户,具备password lifetime的才支持

修改或更新密码

这个是最常用的用法,用于设置或者修改更新用户密码$ sudo passwd user #设置用户user的密码Enter new UNIX password: #输入新密码,输入的密码不显示Retype new UNIX password: #再次输入确认密码passwd: password updated successfully# 此时设置成功

删除用户密码

$ sudo passwd -d user passwd: password expiry information changed.

此时用户处于无密码的状态,很类似最近说的,没有密码就是最安全的密码。

查看密码的状态

$ sudo passwd -S user[sudo] password for oper: user PS 2013-02-11 0 99999 7 -1 (Password set, SHA512 crypt.)

说到密码,有两个比较重要的原则

  1. 保护好你的密码,不写下来而是记在脑海里,定时修改;
  2. 选择一个很难猜的密码,而不是最容易被攻破的top密码;

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/389727.html

(0)
联系我们
联系我们
分享本页
返回顶部