用户和组管理

Linux用户类型分为三类:超级用户、系统用户和普通用户

  • 超级用户:用户名为root或USERID(UID)为0的账号,具有一切权限,可以操作系统中的所有资源。Root用户可以进行基础的文件操作及特殊的系统管理,可以修改系统中的任何文件。
  • 系统用户UID为1~999:Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏围。
  • 普通用户UID从1000开始:是由管理员创建的用于日常工作的用户,能够使用Linux的大部分资源,一些特定的权限受到控制。用户只对自己的目录有写权限,读写权限受一定的限制,有效保证了系统安全性。
  • 需要注意的是,UID是不能冲突的,而且管理员创建的普通用户的UID默认是从1000开始的(即使前面有闲置的号码)。

有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,此时最好的方式是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中。那么,所有用户就具有了和组一样的权限,这就是用户组。

用户和用户组的对应关系有以下4种:

  • 一对一:一个用户可以存在一个组中,是组中的唯一成员;
  • 一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限;
  • 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限
  • 多对多:多个用户可以存在多个组中,也就是以上3种关系的扩展。

1、用户相关操作

id         查看当前用户身份信息
id user    查看user用户身份信息
whoami     查看当前登录用户名

sudo 以管理员身份执行命令,普通用户默认无法使用sudu命令,需要将用户加入wheel组
su -username是用来改变当前用户的
如:su -root,就是将当前用户切换为root连同环境变量一同切换到root用户,用了su-root之后,下面所有的命令就可以不用打sudo了,因为当前用户已经是管理员root了。
同时当从root用户切换到普通用户时不需要输入密码,而从普通用户切换成root用户需要进行验证
useradd 命令用于创建新的用户,格式为"useradd [选项] 用户名"。默认的用户家目录会被存放在/home目录中,而且默认会创建一个与该用户同名的基本用户组。
选项
-d 指定用户的家目录         useradd -d /nome/aaa admin
-u 指定该用户的默认UID      useradd -u 2000 admin
-g 指定一个初始的用户基本组  useradd -g wheel admin
passwd命令用于修改用户密码、过期时间、认证信息等,格式为"passwd [选项]  [用户名]"。普通用户只能使用passwd 命令修改自身的系统密码,而root 管理员则有权限修改其他所有人的密码且root用户在Linux系统中修改自己或他人的密码时不需要验证旧密码。也就是说root用户既然可以修改其他用户的密码,也就表示完全拥有该用户的管理权限。
直接输入passwd为修改当前用户密码
参数
-l   锁定用户,禁止其登录
-u   解除锁定,允许用户登录
-d   使该用户可用空密码登录系统
-e   强制用户在下次登录时修改密码
userdel命令用于删除用户,格式为"userdel [选项] 用户名"。如果确认某个用户后续不再会登录到系统中,则可以通过userdel命令删除该用户的所有信息。
在执行删除操作时,该用户的家目录默认会保留下来,此时可以使用-r参数将其删除。
参数
-r   同时删除用户及用户家目录
usermod命令用于修改用户的属性,格式为"usermod [选项] 用户名"。
参数
-d -m     参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
-u        修改用户的UID
-g        变更所属用户组,主组
-G        变更附加用户组,附加组
-l        修改用户名称

2、用户配置及密码文件

Linux系统中的/etc/passwd文件,是系统用户配置文件,存储了系统中所有用户的基本信息,并且所有用户都可以对此文件执行读操作。

具体格式如下
用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell
密码字段的"x"表示此用户设有密码,但不是真正的密码,真正的密码保存在/etc/shadow文件中
/etc/shadow文件,用于存储Linux系统中用户的密码信息,又称为“影子文件”。由于/etc/passwd文件允许所有用户读取,易导致用户密码泄露,因此Linux系统将用户的密码信息从/etc/passwd文件中分离出来,并单独放到了此文件中。/etc/shadow文件只有root用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性。
格式如下
用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段

3、组操作相关命令

groupadd 命令用于创建用户组,格式为"groupadd [选项] 群组名"。
选项:
-g GID 组名	指定组ID
-r 组名		创建系统群组
groupdel命令可以删除指定组,格式为"groupdel 组名"如果目标组还是某用户的主组,则无法使用groupdel命令成功删除。
groupmod命令用于修改用户组的先关信息,命令格式如下
groupmod [选项] 组名
选项:
-g GID 组名    修改组ID
-n 新组名 组名  修改组名

4、组配置及密码文件

/ect/group文件是用户组配置文件,即用户组的所有信息都存放在此文件中
内容以":"作为字段之间的分隔符,分为4个字段,每个字段对应的含义为:
组名:密码:GID:该用户组中的用户列表
和/etc/passwd文件一样,这里的"x"仅仅是密码标识,真正加密后的组密码默认保存在/etc/gshadow文件中。
同样出于安全性考虑,组的密码信息存储在/etc/gshadow文件文件中,每行代表一个组的密码信息,各行信息用":"作为分隔符分为4个字段
每个字段的含义如下:
组名:加密密码:组管理员:组附加用户列表