文章目录
1. Intro
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 用户组
用户组:用户的集合。一个用户可以属于多个用户组,一个用户组可包含多个用户。从一个用户所属的多个组中指定一个用户组作为主用户组,其他组为其附加用户组。
主用户组:创建用户时所指定的用户组,如没有指定,则系统默认创建同用户名的用户组(gid和uid通常相同),并将其作为主用户组。文件的权限分为三部分:owner、group、other,创建文件的用户是owner,该用户的主用户组是该文件的group。对文件而言,除了owner和group内的用户,其他用户都是other。
附加用户组:用户所属的除了主用户主之外的用户组。user1属于用户组grp1,文件的group为grp2,user1想以grp1权限访问文件,则只需要把grp2加到自己的附加用户组列表即可。
2. 单个用户管理
2.1 查看用户
# 查看当前用户
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
2.2 创建用户
用户被创建后,在系统文件/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
2.3 删除用户
<< C
userdel [op] username
-r: -r:删除用户主目录
C
# case1:删除用户sam
userdel -r sam
1.4 修改用户
<<C
usermod [op] username
op和useradd中的相同
C
# case1: 用户sam登录shell改为/bin/ksh,主目录改为/home/z,用户组改为developer
usermod -s /bin/ksh -d /home/z –g developer sam
1.5 切换用户
# 切换到root,需要输入root密码
su - # -:模拟一个完全登录的会话,即会加载目标用户的环境变量等配置信息
su - root
# 切换到普通用户,需要输入sam密码
su - sam
# 使用sudo来切换用户,只需要输入当前用户密码,而不需要输入目标用户密码,要求当前用户要有sudo权限
sudo -i # 切换到root,-i使用交互式shell
sudo -i -u sam # 切换到sam,-u指定用户名
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 用户组管理
# 查看所有用户组和gid
getent group | cut -d: -f1,3
cat /etc/group | cut -d: -f1,3
groups # 查看当前用户所属的用户组
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 # 更改用户组的gid
gpasswd -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