让我惊讶的是,没有任何搜索让我想到这样一个简单的问题。我想要的只是获取用户和用户组的列表(无论第二件事实际上是什么)。
我发现了许多有关创建或删除用户帐户的资源,但听起来每个人都牢记系统上的所有帐户。我想不是那样的。
那么我如何列出他们,他们的权限以及如何列出组?
slm*_*slm 11
您还可以使用该getent
命令查询系统的用户、组等。
用户
$ getent passwd | head -5
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
Run Code Online (Sandbox Code Playgroud)
团体
$ getent group | head -5
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
Run Code Online (Sandbox Code Playgroud)
getent
与仅查看/etc/passwd
和/etc/group
文件相比,使用的优点是getent
将使用系统的 NSS - 名称服务开关来查询系统,该开关定义了在给定系统上应如何处理诸如此类的“数据库”。
大多数 Linux 系统上的 NSS 是通过文件/etc/nsswitch.conf
. 该文件定义了“数据库”,然后定义了它们的解析方式。
示例 在下面,您可以看到“数据库”密码和组应该由文件提供,但也可以由 LDAP、NIS 或任意数量的其他方法提供。
# /etc/nsswitch.conf
# Example:
#passwd: db files nisplus nis
#shadow: db files nisplus nis
#group: db files nisplus nis
passwd: files
shadow: files
group: files
#initgroups: files
Run Code Online (Sandbox Code Playgroud)
密码和组只有 2 个,有许多数据库可以通过getent
. 查看getent
手册页以获取完整列表。
您还可以从getent
的使用页面获取列表。
$ getent --help
...
Supported databases:
ahosts ahostsv4 ahostsv6 aliases ethers group gshadow hosts initgroups
netgroup networks passwd protocols rpc services shadow
...
Run Code Online (Sandbox Code Playgroud)
可能有更多用户友好的方式来显示它,但所有信息都在这两个文件中。对于完整的用户帐户列表,每行一个帐户:
less /etc/passwd
Run Code Online (Sandbox Code Playgroud)
对于完整的组列表,每行一个组:
less /etc/group
Run Code Online (Sandbox Code Playgroud)
查看man 5 passwd
和man 5 group
了解所有字段含义的详细信息。
另一方面,如果您的 Raspbian 是由熟练的管理员自定义配置的,目的是在网络范围内的机器之间共享用户和组帐户信息,那么我上面写的内容是不够的,您应该遵循@slm 的精心编写建议。