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

news2024/11/23 10:26:19

文章目录

  • 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,果然越简洁越强大,就比如lessmore是功能更多的。

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.)

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

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

更多信息

Hi,XDJM们,更多信息欢迎移步我的主页、CSDN或微信公众号letsProgramming.

  • 🐱 github
  • 🏠 Homepage https://shaoguangleo.github.io
  • CSDN CSDN http://blog.csdn.net/shaoguangleo
  • 微信公众号:letsProgramming

微信公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1361365.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何理解Transformer论文中的positional encoding,和三角函数有什么关系?

大家好&#xff0c;我分享交流下这个问题。 Positional Encoding 掏出一张被无数人讲述的架构图。 Transformer 模型中的位置编码&#xff08;Positional Encoding&#xff09;是为了让模型能够考虑单词在句子中的位置。 由于 Transformer 的自注意力&#xff08;Self-Atte…

(适趣AI)Vue笔试题

&#x1f4d1;前言 本文主要是【Vue】——&#xff08;适趣AI&#xff09;Vue笔试题的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 …

Sqlmap参数设置

Sqlmap参数设置 &#x1f388;&#x1f388;&#x1f388;&#x1f388;&#x1f388;&#x1f388;&#x1f388;&#x1f388;&#x1f388;&#x1f388;&#x1f388;&#x1f388;&#x1f388;&#x1f388; --------------------------------------------注意---------…

设计模式Java实战,彻底学会

​这是全网最强的Java设计模式实战教程。此教程用实际项目场景&#xff0c;结合SpringBoot&#xff0c;让你真正掌握设计模式。 网址是&#xff1a;Java设计模式实战专栏介绍 - 自学精灵&#xff08;也可以百度搜索“自学精灵”&#xff09;。 本设计模式专栏的威力 用Java实…

将有序数组转换为二叉搜索树[简单]

一、题目 给你一个整数数组nums&#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过1」的二叉树。 示例 1&#xff1a; 输入&#xff1a;nums [-10,-3,0,5…

nginx下日志配置和排查错误

目录 一&#xff1a;配置 二&#xff1a;排查日志 一&#xff1a;配置 在Nginx中&#xff0c;日志配置是记录服务器活动和排查问题的重要环节。以下是一些常见的Nginx日志配置选项&#xff1a; 日志级别&#xff1a;通过设置日志级别&#xff0c;可以控制日志的详细程度。常…

数据结构和算法-交换排序中的冒泡排序(过程 代码实现 算法效率 稳定性 适用链表?)

文章目录 总览冒泡排序冒泡&#xff1f;啥是冒泡排序冒泡排序过程算法实现算法性能分析稳定性冒泡排序是否适用于链表 小结 总览 冒泡排序 冒泡&#xff1f; 自然界的冒泡 啥是冒泡排序 冒泡排序过程 此时序列要求递增的 首先比较27和49&#xff0c;发现符号递增序列&…

四个模型建模及数据分析整理(基于Titanic数据集)

目录 介绍&#xff1a; 二、数据 2.1引用数据 2.2检查缺失数据 2.2.1手动检查缺失数据 2.2.2查看某一个特征值为空数据 2.3补充缺失数据 2.3.1盒图 2.3.2手动用均值填补缺失数据 2.3.3手动用类别填补缺失数据 三、数据分析 3.1男女生存比例 3.2男女生存数 3.3船舱级…

红队专题-Web安全/渗透测试-文件上传/下载/包含

文件上传/下载/包含 招募六边形战士队员利用目录穿越反弹SHELL实战测试2.2 提交报文修改检测3.2 文件内容检测绕过完整文件结构 检测 第四章&#xff1a;解析漏洞第一节 常见解析漏洞iis/nginx php fastcgi 取值错误 解析漏洞 &#xff08;配置错误&#xff09;nginx 文件名逻…

19.计数问题

题目 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int res 0;int x sc.nextInt();for(int i1;i<n;i) {String s i "";for(int j0;j<s.length();j) {…

文本批量替换谁更强:Python VS. Excel公式

一、问题缘起 有人在Emeditor群里提问:有下面两张表&#xff0c;一张被替换表&#xff0c;一张参照表&#xff0c;想把替换表的内容根据对照表进行替换&#xff0c;如果对照表没有对应数据就用替换表中原有的内容。 被替换表 对照表 经过替换后的表格如下&#xff1a; 替换结…

【总线接口】1.以Xilinx开发板为例,直观的认识硬件板卡和接口

初接触硬件&#xff0c;五花八门的总线、接口一定会让你有些疑惑&#xff0c;我尝试用一系列文章来解开你的疑惑 系列文章 【总线接口】1.以Xilinx开发板为例&#xff0c;直观的认识硬件接口 【总线接口】2.学习硬件这些年接触过的硬件接口、总线 大汇总 【总线接口】…

【设计模式之美】面向对象分析方法论与实现(一):需求分析方法论

文章目录 一. 需求举例二. 对案例进行需求分析1. 第一轮基础分析2. 第二轮分析优化3. 第三轮分析优化4. 第四轮分析优化5. 最终确定需求 三. 小结 本文主要描述&#xff1a; 面向对象的需求分析方法论 一. 需求举例 假设&#xff0c;你正在参与开发一个微服务。微服务通过 HTT…

十五:爬虫-Scrapy-redis分布式

一&#xff1a;python操作redis 1.redis的安装与连接 安装 pip install redis 连接 r redis.StrictRedis(hostlocalhost,port6379,db0)2.redis数据类型相关操作 &#xff08;1&#xff09;字符串相关操作 import redis class TestString(object):# 初始化 连接redis数据库…

小游戏实战丨基于Tkinter的五子棋小游戏

文章目录 写在前面Tkinter五子棋系列文章写在后面 写在前面 本期内容&#xff1a;基于tkinter的五子棋小游戏 下载地址&#xff1a;https://download.csdn.net/download/m0_68111267/88700190 实验环境 python3.11及以上pycharmtkinter Tkinter Tkinter是Python的一个标准…

ssm基于BS的项目监管系统+jsp论文

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自古…

AP2813 双路降压恒流驱动IC 一路内置1A一路外置3A LED储能指示灯线路

产品描述 AP2813 是一款双路降压恒流驱动器,高效率、简单、内置功率管&#xff0c;适用于 5-80V 输入的高精度降 压 LED 恒流驱动芯片。内置功率管输出功率可达 12W&#xff0c;电流 1.2A。 AP2813 一路直亮&#xff0c;另外一路通过 MODE1 切换 全亮&#xff0c;爆闪。AP2813…

异常..

1.开发过程中的错误 在开发Java程序的过程中 会遇到各种各样的错误 一下是对错误的分类&#xff1a; 1.语法错误 如果产生了语法错误的话 那么就会导致编译失败 程序无法正常运行 2.逻辑错误 比如原本我想要进行加法运算 但是我将加法运算符写成了减法运算符 但是这个错误并不…

linux磁盘管理实验1

1.在安装好的linux系统中新加一块硬盘&#xff0c;将硬盘分成2个主分区&#xff0c;和2个逻辑分区&#xff0c;将其中一个逻辑分区设置成vfat&#xff08;FAT32&#xff09;分区&#xff0c;并实现开机自动挂载所有分区。 答&#xff1a;添加一个硬盘为sdb 分成2个主分区&#…

Ubuntu 本地部署 ChatGPT-Next-Web

Ubuntu 本地部署 ChatGPT-Next-Web 文章目录 Ubuntu 本地部署 ChatGPT-Next-Web ChatGPT-Next-Web 项目地址&#xff1a;https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web 本文主要演示如何在 Ubuntu 本地&#xff08;默认是端口 3000&#xff09;部署 ChatGPT-Next-Web&am…