文章目录
- linux中最常用的用户信息命令
- 还有谁 last
- 语法
- 一般使用方法
- 查看最近登陆的三个用户
- 省略hostname
- 显示最后一列显示主机IP地址
- 我是谁 whoami
- 谁?who
- 默认使用
- 系统的运行时间
- 显示表头信息
- 显示登录的人员及总数
- 什么?谁?w (who & what)
- 默认的显示
- 不显示标题行
- 简洁模式显示
- 不要告诉别人的passwd
- 修改或更新密码
- 删除用户密码
- 查看密码的状态
- 更多信息
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
限制登入讯息包含终端机代号
一般使用方法
$ last
username2 pts/17 192.168.100.123 Wed Mar 23 22:14 still logged in
username3 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 in
username3 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 -R
username2 pts/17 Wed Mar 23 22:14 still logged in
username3 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 -i
username3 pts/17 Wed Mar 23 22:14 still logged in 192.168.100.123
username5 pts/20 Wed Mar 23 14:26 - 15:48 (01:21) 0.0.0.0
username6 pts/23 Wed Mar 23 14:26 - 15:48 (01:21) 0.0.0.0
username7 pts/19 Wed Mar 23 13:46 - 15:48 (02:01) 192.168.100.123
username8 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")
void
usage (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);
}
int
main (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 -b
system boot 2012-02-16 14:05
显示表头信息
使用-H
或者--heading
可以看到表头信息
$ who -H
USER LINE WHEN
user pts/0 2012-03-02 10:12
user2 pts/1 2012-03-10 09:12
显示登录的人员及总数
$ who -q
user1 user1 user2 user2 user3 user4
# users=6
什么?谁?w (who & what)
w
可以认为是加强版的who
,果然越简洁越强大,就比如less
比more
是功能更多的。
w
不仅可以显示谁在登录,还可以打印他们在做什么。w
显示的信息如下:
- 登录的用户;
- 运行的程序;
- 第一行显示的信息:当前时间、系统运行的时间、多少用户登录、系统的负载(分贝为1,5,15分钟)
官方定义为:
w - Show who is logged on and what they are doing.
用法为:
$ w [options] user [...]
常用的两个选项为:
-
-h
不显示各栏位的标题信息列。 -
-s
简洁格式列表,不显示用户登入时间,JCPU或者PCPU的时间
默认的显示
显示当前用户的登录信息及执行的命令
$ w
16:29:03 up 26 days, 2:49, 6 users, load average: 1.00, 0.97, 0.96
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user pts/4 :1 07Sep21 20days 9:59 1:53m bash
user pts/0 :2 08Sep21 6days 0.70s 1:53m zsh
user pts/1 :3 08Sep21 20days 1:13m 1:53m bash
user :0 :0 15Sep21 6days 27days 21.36s zsh
user pts/2 :0 15Sep21 14days 0.25s 0.25s zsh
user pts/3 :3 16Sep21 24:45m 0.22s 0.22s bash
不显示标题行
$ w -h
16:29:16 up 26 days, 2:49, 6 users, load average: 1.20, 0.67, 0.76
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user pts/4 :1 07Sep21 20days 9:59 1:53m bash
user pts/0 :2 08Sep21 6days 0.70s 1:53m zsh
user pts/1 :3 08Sep21 20days 1:13m 1:53m bash
user :0 :0 15Sep21 6days 27days 21.36s zsh
user pts/2 :0 15Sep21 14days 0.25s 0.25s zsh
user pts/3 :3 16Sep21 24:45m 0.22s 0.22s bash
简洁模式显示
$ w -s
16:29:26 up 26 days, 2:49, 6 users, load average: 1.50, 0.67, 0.36
USER TTY FROM IDLE WHAT
user pts/4 :1 20days bash
user pts/0 :2 6days zsh
user pts/1 :3 20days bash
user :0 :0 6days zsh
user pts/2 :0 14days zsh
user 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.)
说到密码,有两个比较重要的原则:
- 保护好你的密码,不写下来而是记在脑海里,定时修改;
- 选择一个很难猜的密码,而不是最容易被攻破的top密码;
更多信息
Hi,XDJM们,更多信息欢迎移步我的主页、CSDN或微信公众号letsProgramming.
- 🐱 github
- 🏠 Homepage https://shaoguangleo.github.io
- CSDN CSDN http://blog.csdn.net/shaoguangleo
- 微信公众号:letsProgramming