列出根用户
在 Linux / Unix 系统中,通常只有一个 root 用户。
我们可以使用以下命令:
$ grep 'x:0:' /etc/passwd
另一种方法是检查 /etc/group 文件:
$ grep root /etc/group
此外,我们可以通过检查 /etc/sudoers 文件来检查是否有任何用户可以以 root 身份执行命令:
$ cat /etc/sudoers
列出在特定日期或者时间登录的用户
如何在特定日期或者时间列出用户的登录信息?
为此,我们使用last命令,但带有 -t 参数:
$ last -t YYMMDDHHMMSS
例如:
$ last -t 20190926110509
哪个文件包含 Linux 上的用户列表?
用户存储在系统上称为 passwd 文件的文本文件中。
$ /etc/passwd
在此文件中,我们可以找到有关系统中用户的所有信息。
列出组中的所有用户
在 Linux 中有两种列出组成员的方法,最简单和最直接的方法是从 /etc/group 文件中获取用户,如下所示:
$ cat /etc/group | grep onitroad
另一种方法是使用像基于 Debian 的发行版中的 members 命令这样的命令。
但是,Linux 发行版中默认不安装它。
要在 Ubuntu/Linux Mint 19 中安装它,只需使用 APT:
$ sudo apt install members
或者在 CentOS 的情况下:
$ sudo dnf install members
安装后,我们可以运行该命令,然后运行要列出用户的组的名称:
$ members [group_name]
例如:
$ members oirgroup
在CentOS / RedHat中我们可以使用以下命令:
$ getent group onitroad
Linux 列出最近登录系统的用户
我们看到了如何获取当前登录的用户,那么列出用户的登录历史呢?
我们可以使用last命令来获取有关发生的登录的更多信息:
$ last
或者特定用户的登录
$ last [username]
例如:
$ last angelo
这些是用户登录活动以及它何时开始以及花费了多长时间。
Linux 中有两种类型的用户,系统用户是系统默认创建的。
另一方面,也有系统管理员创建的普通用户,可以登录系统使用。
按磁盘使用情况列出用户
根据home目录使用大小列出用户
$ sudo du -smc /home/* | sort -n
通过这种方式,我们将按照 /home 目录的磁盘使用情况对用户进行排序。
列出当前登录的用户
要列出当前登录的用户,我们有几种方法可以做到。
第一种方法我们可以使用users命令:
$ users
它将列出系统中打开会话的用户。
使用另一个命令w可以提供更多详细信息。
$ w
最后,有一个命令叫who。
它适用于整个 Unix 家族。
所以你可以在其他系统上比如 FreeBSD使用它。
$ who
使用 who 命令,我们还有一些当前登录用户的信息。
当然,我们可以添加选项 -a 并显示所有详细信息。
$ who -a
列出锁定(禁用)的用户
要锁定用户,我们可以使用以下命令:
$ usermod -L myuser
现在名为 myuser 的用户将无法再登录或者使用系统。
要列出系统的所有锁定用户,只需使用以下命令:
$ cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S "$ awk -F: ' >= 1000 {print }' /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S ") }' | grep locked$ cat /etc/passwd) }' | grep locked
使用 Awk,我们可以像这样锁定普通用户:
$ cut -d: -f1 /etc/passwd
列出所有用户
要列出所有用户,我们可以使用 cat 命令:
$ getent passwd
1在第一个字段中,我们将看到用户名。
2第二个字段(x 字符)是加密密码的表示。
加密后的密码存储在 /etc/shadow 文件中。
3 UID 或者用户 ID。
4 用户的主要组。
5 显示用户 ID 信息,例如地址、电子邮件等。
6 用户的主目录。
7 该用户使用的shell。
只列出用户名
$ getent group
列出远程用户 (LDAP)
好的,现在可以列出所有系统用户(本地用户),但是远程用户或者 LDAP 用户呢?
嗯,我们可以使用像 ldapsearch 这样的工具,但还有其他方法吗?
我们可以使用一个名为 getent 的命令列出本地和远程用户
$ awk -F: '{printf "%s:%s\n",,}' /etc/passwd
此命令列出本地系统用户和 LDAP 或者 NIS 用户或者任何其他网络用户。
此外, getent 命令可以像这样列出组帐户:
$ members sudo
列出具有 UID 的用户
在 Unix 系统中,每个用户都有一个用户标识符或者 ID。
它用于在操作系统内部管理和管理帐户。
通常,0 到 1000 之间的 UID 用于系统用户。
在 Unix 系统上,UID 0属于 root 用户(我们可以拥有多个 UID 为0的用户)。
我们可以使用 Awk 列出具有各自 UID 的用户。
AllowUsers user1 user2 user3
列出 sudo 用户
Linux 系统有一个名为 sudo 的实用程序,它允许我们执行命令,就好像我们是另一个通常是 root 用户的用户一样。
列出属于 sudo 组的用户:
AllowGroups group1 group2 group3
列出具有 SSH 访问权限的用户
SSH 允许用户通过网络访问远程计算机。
它非常安全,是作为 Telnet 的替代品而诞生的。
默认情况下,所有普通用户都可以登录并使用 SSH。
如果要对此进行限制,可以使用 SSH 配置文件 (/etc/ssh/ssh_config) 并添加以下指令:
$ cut -d: -f1 /etc/passwd | wc -l
此外,我们可以允许组而不是仅允许用户使用 AllowGroups 指令:
$ awk -F: ' >= 1000 {print }' /etc/passwd
获取用户总数
$ sudo getent shadow | grep -Po '^[^:]*(?=:.?:)'
获取普通用户(UID大于1000):
$ setfacl -m u:newuser:rwx myfile
Linux 列出没有密码的用户
在Linux中列出没有密码的用户:
$ getfacl myfile
列出对文件或者目录具有权限的用户
我们可以通过两种方式授予多个用户访问或者修改文件和目录的权限。
第一种方法是将用户添加到文件或者目录的组中。
这样,我们可以使用如上所示的成员实用程序列出组成员。
我们可以使用 setfacl 命令为该文件设置 ACL,如下所示:
$ cut -d: -f1 /etc/passwd | sort
现在该文件可以被所有者访问或者修改,用户名为 newuser。
那么如何列出它们呢?
我们可以使用 getfacl 命令列出它们,如下所示:
##代码##此命令将列出所有对文件具有相应权限的用户。
按名称列出和排序用户
根据用户名进行排序
##代码##