【Linux】用户管理
文章目录
- 1. 单个用户管理
- 1.1 记录用户信息的文件
- 1.2 查看用户
- 1.3 创建用户
- 1.4 删除用户
- 1.5 修改用户
- 1.6 切换用户
- 1.7 用户密码修改
- 2. 用户组管理
- 2.1 Intro
- 2.1.2 主用户组和附加用户组
- 2.1.2 用户组的配置文件
- 2.2 用户组管理
- 参考
1. 单个用户管理
1.1 记录用户信息的文件
# /etc/passwd:用户基本信息,一行一个账户
username:password:UID:GID:GECOS:home_directory:shell# /etc/shadow:用户密码和加密密码信息,root才能访问
username:encrypted_password:last_change:min_days:max_days:warning_days:inactive_days:expiration_date:reserved# /etc/group:用户组信息,用户组信息,一行一个用户组
group_name:password:GID:users# /etc/gshadow:用户组的加密密码和组管理信息,只有 root 用户可以访问
group_name:encrypted_password:admin_list:member_list
1.2 查看用户
# 查看当前用户
whoami
id
lslogins -u
echo $USER# 查看系统所有用户
cut -d: -f1 /etc/passwd # -d指定分隔符,-f指定提取第几个字段(-f1表示提取分割后的第一个字段)
getent passwd | cut -d: -f1
lslogins | awk '{print $2}'# 查看系统所有当前登录用户
who | awk '{print $1}'
w | awk 'NR>2 {print $1}' # NR是awk内置变量表示行号(NR>2:当前行号大于2)
users
1.3 创建用户
用户被创建后,在系统文件/etc/passwd, /etc/shadow, /etc/group,/etc/gshadow中新增与该用户相关的记录,会在主目录中新增文件(.bashrc,.bash_profile,.profile)。
<< C
useradd [op] username-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-m 创建用户主目录,系统不会自动创建
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
C# case1:创建用户sam
useradd –d /home/sam -m sam# case2:创建用户gem,它同时属于adm组和root组,因而它有这两个组的权限
useradd -s /bin/sh -g group –G adm,root gem
1.4 删除用户
<< C
userdel [op] username-r: -r:删除用户主目录
C
# case1:删除用户sam
userdel -r sam
1.5 修改用户
<<C
usermod [op] usernameop和useradd中的相同
C# case1: 用户sam登录shell改为/bin/ksh,主目录改为/home/z,用户组改为developer
usermod -s /bin/ksh -d /home/z –g developer sam
1.6 切换用户
# 切换到root,需要输入root密码
su - # -:模拟一个完全登录的会话,即会加载目标用户的环境变量等配置信息
su - root# 切换到普通用户,需要输入sam密码
su - sam# 使用sudo来切换用户,只需要输入当前用户密码,而不需要输入目标用户密码,要求当前用户要有sudo权限
sudo -i # 切换到root,-i使用交互式shell
sudo -i -u sam # 切换到sam,-u指定用户名# 查询用户是否具备sudo权限
1.7 用户密码修改
<<C
passwd [op] username-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
C# case1: 当前登录用户为sam,修改sam的密码
passwd
Old password:******
New password:*******
Re-enter new password:*******# case2: root修改其他用户密码
passwd sam# case3:锁定用户sam,让系统不允许sam登录
passwd -l sam# case4: 移除sam的密码,让用户登录sam时无需密码
passwd -d sam
2. 用户组管理
2.1 Intro
2.1.2 主用户组和附加用户组
用户的主用户组:创建用户时所指定的用户组,如果创建用户时没有显示指定用户组,则默认创建和用户名同名的用户组(gid和uid通常相同),并将其作为主用户组。
附加用户组:用户所属的除了主用户主之外的用户组。
2.1.2 用户组的配置文件
/etc/group
groupname:x:gid:member1,member2,...groupname:用户组名
x:密码占位符(实际密码存储在 /etc/gshadow 中)
gid:用户组 ID
member1,member2,...:属于该用户组的用户列表(仅显示通过 gpasswd 命令添加的附加用户组成员,主用户组成员不会显示在这里)
/etc/gshadow,用户组密码使用较少
groupname:password:admin1,admin2:member1,member2,...groupname:用户组名
password:用户组密码(如果有的话)
admin1,admin2:用户组管理员列表
member1,member2:用户组成员列表
2.2 用户组管理
# 查看所有用户组和gid
getent group | cut -d: -f1,3
cat /etc/group | cut -d: -f1,3groups # 查看当前用户所属的用户组
groups username # 查看指定用户所属的用户组
id # 查看当前用户UID、GID 以及所属的附加用户组
id username # 查看指定用户UID、GID 以及所属的附加用户组groupadd -g 1001 group0 # 添加用户组
# -g 101: 指定gid=101
# group0: group名
groupdel group0 # 删除用户组groupmod -n group1 group0 # 将用户组group0改名为group1
groupmod -g 1002 group0 # 更改用户组的gidgpasswd -a user0 group0 # 将用户user0添加到用户组group0
gpasswd -d user0 group0 # 将用户user0从用户组group0中删除usermod -aG group0 user0 # 将用户user0添加到gruop0附加用户组newgrp root # 变更用户的主用户组为root组,前提是root组是当前用户的主用户组或者附加用户组
参考
ref:https://www.runoob.com/linux/linux-user-manage.html