[Linux] Linux用户和组管理
目录
用户和组介绍
用户介绍
passwd文件
group文件
组的类型
本地用户管理
whoami命令
who和w命令
users命令
useradd命令
usermod命令
userdel命令
本地组管理
groupadd命令
groupmod命令
groupdel命令
groupmems命令
管理用户密码
shadow文件
chage命令
设置账户过期
增加一个uid为0的用户
用户和组介绍
用户介绍
用户帐户主要有三种类型:
-
superuser:用于管理系统,用户名称为root,UID为o,对系统具有完全访问权限。
-
system users:系统具有系统用户帐户,由提供支持服务的进程使用。这些进程或守护进程通常不需要以超级用户身份运行。它们是非特权帐户,用户保护自己文件和其他资源。系统用户帐户不用于交互方式登录系统。
-
regular users:大多数用户拥有常规用户帐户,用于日常工作。
passwd文件
/etc/passwd文件保存操作系统登录用户信息。每行包含一个登录用户信息,以冒号分隔7个域。
格式:
name:password:UID:GIDGECOS:directory:shell
解释如下:
-
name:用户登录名
-
password:用户密码,以x表示
-
UID:用户ID
-
GID:用户主组ID
-
GECOS:用户描述信息,通常为用户的真实姓名
-
directory:用户主目录,启动shell时的工作目录,默认位于/home/username
-
shell:用户打开终端时运行的程序,默认是shell。
group文件
组是用户的集合,组中用户继承组权限。与用户一样,组具有组名称以使其更易于使用。系统通过分配给它们的唯一标识号,组ID或GID来区分组。
/etc/group文件保存操作系统组信息。每行包含一个组信息,以冒号分隔4个域。格式:
group_name:password:GID:user_list
解释如下:
-
group_name:组名称
-
password:组密码,用x表示
-
GID:组ID,唯一表示组
-
user_ist:作为补充的成员
组的类型
-
主要组:每个用户只有一个主要组,/etc/passwd文件中的GID编号定义。默认情况下,用户创建的新文件组所有者为用户的主要组。通常,在创建新的常规用户时,会创建一个与该用户同名的新组。该组用作新用户的主要组,该用户是此用户专用组的唯一成员,有助于简化文件权限管理。
-
补充组:用户还可以拥有补充组。补充组的成员资格由/etc/group文件确定。根据用户的任何组是否具有访问权限,授予用户访问权限的权限。例如,如果用户user01具有主要组user01和补充组wheel和webadmin,则该用户可以读取这三个组中任何一个组可读的文件。
#查看用户信息
id
#查看用户uid
id -u demisse
本地用户管理
whoami命令
查看当前终端中登录的用户
whoami
who和w命令
查看当前系统中所有终端上登录的用户,以及用户登录的时间
users命令
users
useradd命令
#创建用户usertest
useradd usertest
grep usertest /etc/passwd
useradd -u 8888 -d /opt/usertest2 -c "user for software manager" -g wheel -s /sbin/nologin usertest2
各选项说明:
-
-u 8888
:指定用户ID(UID)为8888 -
-d /opt/usertest2
:设置家目录为/opt/usertest2
-
-c "user for software manager"
:添加用户描述信息(用于软件管理) -
-g wheel
:将用户的主组设为wheel
组(管理员组) -
-s /sbin/nologin
:设置登录shell为/sbin/nologin
表示这是一个服务账户,不能用于直接登录系统 -
usertest2
:要创建的用户名
#创建一个没有密码的账户
useradd -p '' tom
新用户家目录中的文件来源于/etc/skel/目录。创建用户的时候,用户属性默认参数配置在/etc/login.defs文件
usermod命令
修改用户属性
usermod usertest2 -u 1008 -md /home/usertest2 -s /bin/bash
grep usertest2 /etc/passwd
ls -d /home/usertest2/
su - usertest2#添加补充组,如果没有-a选项,则代表将补充组设置为usertest1,原先的补充组就被覆盖了
usermod -aG usertest1 usertest2
id usertest2
userdel命令
#删除
userdel usertest1
[10:50:36 root@rocky8-znf ~]# userdel usertest2
#无法删除
userdel: user usertest2 is currently used by process 4418
#强制删除
[10:51:21 root@rocky8-znf ~]# userdel -f usertest2
尽量不要强制删除,要找到无法删除的原因
本地组管理
groupadd命令
#创建名为admin的组
[10:52:35 root@rocky8-znf ~]# groupadd admin
#创建名为susadmin的组,组id为2000
[12:50:54 root@rocky8-znf ~]# groupadd sysadmin -g 2000
#查看
[12:51:14 root@rocky8-znf ~]# grep admin /etc/group
groupmod命令
#修改组名称
groupmod --new-name admins admin
#修改组id
groupmod -g 2002 admins
#验证
grep 'admins' /etc/group
groupdel命令
groupdel sysadmin
groupmems命令
#添加成员
groupmems -g admins -a demisse
groupmems -g admins -l
id demisse
#删除成员
groupmems -g admins -d demisse
#清空组中所有成员
groupmems -g admins -a demisse
groupmems -g admins -p
管理用户密码
shadow文件
/etc/shadow文件保存操作系统登录用户密码信息
-
login name:用户登录名。
-
encrypted password:加密的密码。
-
date of last password change:上一次密码更改日期,以距离1970-1-1过去的天数表示。设置为0,强制用户下次登录时更改密码。
-
minimumpasswordage:最小密码生命周期。设置为0,密码可以随时更改。
-
maximum password age:最大密码生命周期。
-
password warning period:密码过期前,提前多少天告警。设置为0,不提示过期。
-
password inactivity period:密码过期后,非活跃天数,在期间密码仍可以使用。
-
account expirationdate:账户过期时间,以距离1970-1-1过去的天数表示。
-
reserved field:保留域。
chage命令
#查看用户密码信息
chage -l demisse
#修改用户密码要求
chage -M 100 demisse
chage -m 10 demisse
#设置用户密码过期时间是过去的一个时间,以便确保用户密码过期,登录时强制用户更改密码
chage -d 0 demisse
#设置为1,确保密码很久未改动
chage -d 1 demisse
#设置用户账户过期时间是过去的一个时间,一边锁定用户账户
chage -E 1970-1-1 demisse
-
usermod -p 更改用户密码
-
usermod -s 限定用户shell
-
usermod -L 锁定用户密码
-
usermod -U 解锁用户密码
-
usermod -d 删除用户密码
设置账户过期
等效于passwd -e
usermod -e 1999-1-1 demisse
增加一个uid为0的用户
方法1:进入etc/passwd中将自己的用户id改为0,此时该账户就可以行使root权限了
demisse:x:0:1000:demisse:/home/demisse:/bin/bash
方法2:
useradd -o -u 0 demisse
demisse和root账户是两个不同的账户,但是demisse用户获得了root账户的权限。