本文最后更新于:2023年12月5日 晚上
getent
用来察看系统的数据库中的相关记录,系统数据库包括:ahosts、ahostsv4、ahostsv6、aliases、ethers、group、gshadow、hosts、initgroups、netgroup、networks、passwd、protocols、rpc、services、shadow
getent 通过 key 查询整条数据,当然,一条数据并非只能对应一个 key,例如 passwd,一条数据的 key 可以是用户名, 也可以是 UID
vipw \ vigr \ pwck \ grpck
尽量不要直接修改/etc/passwd
、/etc/group
、/etc/shadow
、/etc/gshadow
这四个文件
vipw
可以用来编辑/etc/passwd
,vigr
可以用来编辑/etc/group
,它俩都有语法检查功能
pwck
用来验证/etc/passwd
和/etc/shadow
的内容和格式的完整性,grpck
用于验证组文件的完整性
虽然用这四个命令会比直接使用 vim 修改这四个文件更安全,但是也不推荐使用,了解即可
推荐使用:useradd、groupadd、chage 等命令,当然本质还是修改这四个文件
useradd
用户创建,useradd
等于 adduser
创建用户相关文件
useradd 命令默认值设置在 /etc/default/useradd
/etc/skel/
是模板目录,骨架目录。每新建一个用户的家目录,就会把/etc/skel/
下的文件拷贝一份到家目录下。
/etc/login.defs
配合 /etc/passwd
和 /etc/shadow
来对用户进行一些限制 但是优先级低于 /etc/passwd
和 /etc/shadow
如果有冲突的地方,系统会以 /etc/passwd
和 /etc/shadow
为准
newusers
批量创建用户
用户文件:指定包含用户信息的文本文件,文件格式要与 /etc/passwd
相同
chpasswd
批量修改用户密码
生成密码:
CentOS 6
CentOS 7
CentOS 8
Ubuntu
usermod
修改用户属性,不过用户一旦创建完了,很少会再修改,所以这个命令几乎不用
userdel
删除用户
id
查看用户相关 ID 信息
su
su:switch user,切换用户
两种切换的方式:
- su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换
- su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换
注意:su 切换新用户后,使用 exit 退回至旧的用户,而不要再用 su 切换至旧用户,否则会生成很多的 bash 子进程,环境可能会混乱
passwd
修改用户密码
chage
修改用户密码策略
其他命令
chfn
指定个人信息,这个命令修改的是/etc/passwd 的第 5 个字段
chsh
指定 shell,相当于 usermod -s
flnger
可以查看用户个人信息
这几个命令用的不多,了解即可,flnger 命令在 CentOS8 中已经没有了
groupadd
创建组,groupadd
等于 addgroup
- -g GID : 指明 GID
- -r : 创建系统组, CentOS 6 之前: ID<500,CentOS 7 以后: ID<1000
范例: groupadd -g 48 -r apache
groupmod
修改组
groupmod 修改组的属性, 用的不多
- -n group_name : 新名字
- -g GID : 新 GID
groupdel
删除组
只有当组下没有用户后, 才能删除成功
gpasswd
gpasswd 命令,可以更改组密码,也可以添加删除附加组成员
newgrp
临时切换主组,把用户的主组临时切换到附加组
这个命令用的不多,了解一下就行
groupmems
更改和查看组成员,管理附加组的成员关系(只有 root 用户可以执行这个命令)
示例:
groups
查看用户所属组的列表
练习
1.创建用户 gentoo,附加组为 bin 和 root,默认 shell 为/bin/csh,注释信息为”Gentoo Distribution”
2.创建下面的用户、组和组成员关系:
名字为 webs 的组
用户 nginx,使用 webs 作为附加组
用户 varnish,使用 webs 作为附加组
用户 mysql,不可交互登录系统,且不是 webs 的成员,nginx,varnish,mysql 密码都是 magedu