![在 Solaris 中获取密码过期前的天数](https://linux22.com/image/193723/%E5%9C%A8%20Solaris%20%E4%B8%AD%E8%8E%B7%E5%8F%96%E5%AF%86%E7%A0%81%E8%BF%87%E6%9C%9F%E5%89%8D%E7%9A%84%E5%A4%A9%E6%95%B0.png)
我想知道我的帐户密码在 Solaris 中过期之前“剩余”的天数。
我chage
在 Linux 中使用命令来获取此信息。
passwd -S <userid>
可以获取 Linux 和 Solaris 上密码到期的剩余天数,但不幸的是,这passwd
需要sudo
提升权限。
笔记:我需要知道我自己登录的帐户(而不是任何其他用户)的密码到期的剩余天数
我最终将使用这里的解决方案到 ansible 工具中。
答案1
/etc/passwd
如果您的登录是基于文件的 ( / /etc/shadow
) 并且您没有读取 的权限/etc/shadow
,那么显然无法在 Solaris 上获取此信息。(请注意,阅读/etc/shadow
使您可以访问 中的散列密码/etc/shadow
。然后您就可以执行暴力攻击来破解它们......)
如果您有 root 访问权限,则可以使用
logins -x -l username
结果看起来像这样:
-bash-4.4# logins -x -l ahenle
ahenle 1024 users 100
/home/ahenle
/usr/bin/bash
PS 101720 -1 -1 -1
如果您没有 root 访问权限(或类似的 read 权限/etc/shadow
),最后一行将是
LK 010170 0 0 0
该数值为零(010170
1970 年 1 月 1 日后零天)。
登录(8)
姓名
登录 - 列出用户和系统登录信息
概要
/usr/bin/logins [-S repository] [ -admoprstux] [-g group...] [-l login_name...]
描述
此命令显示系统已知的用户、角色和系统登录信息。输出内容由命令选项控制,可以包括以下内容:用户、角色或系统登录名;用户 ID 号;
passwd
账户字段值(用户名或其他信息);主要组名称;主要组 ID;多个组名;多个组 ID;主目录;登录外壳;和四个密码老化参数。 ......
选项
选项可以一起使用。如果是这样,则会显示符合任何条件的任何登录。
支持以下选项:
...
–l 登录名...
选择请求的登录。
...
-X
打印有关每个选定用户的一组扩展信息。扩展信息包括主目录、登录 shell 和密码时效信息,每项信息都显示在单独的行上。密码信息当前由密码状态组成:
NP账户没有密码
LK 帐户已被锁定以进行 UNIX 身份验证
AL账户因超过配置的认证失败次数而被自动锁定。
NL账户是一个无需登录的账户
UP 该帐号尚未被管理员激活,无法使用。
PS 帐户可能有一个有效的密码
UN 帐户密码状态未知。也就是说,它不是可识别的散列密码或任何上述条目。请参阅 crypt(3C) 了解有效的密码哈希值。
如果登录有密码,则状态后面是上次更改密码的日期、更改之间所需的天数,以及需要进行更改之前允许的天数。密码时效信息显示用户在密码过期之前收到密码过期警告消息(登录时)的时间间隔。