用户和用户组-10.18
用户和用户组
概念
在Linux系统中,用户(User)和用户组(Group)是权限管理的核心概念,用于控制系统资源的访问和操作权限。
用户(User)
用户是Linux系统中的一个账户,每个用户都有一个唯一的用户ID(UID)。用户可以是系统用户或普通用户。
-
用户ID(UID):每个用户都有一个唯一的用户ID,系统通过UID来标识用户。
- 一般来说,UID为0的是超级用户(root),拥有系统所有的权限。
- 普通用户的UID通常从1000开始。
-
主目录:每个用户都有自己的主目录(通常在/home下),用户在自己的主目录下有完全的读写权限。
-
shell:每个用户都有一个默认的命令解释器(Shell),用户可以通过Shell与系统交互。
类型:
-
超级用户 :
- 拥有最高权限(uid=0,gid=0)。
- 不建议在生产环境中使用,因为权限过大而容易导致安全问题。
-
普通用户:
- uid 通常为 1000 或更高(具体值可能因发行版而异)。
- 用于日常系统管理,具有一定权限,但可以通过授权提升权限。
-
程序用户:
- uid 在 1 到 999 范围内。
- 用于守护进程或服务的资源访问。
- 一般无法登录系统,默认 shell 为 /sbin/nologin。
- 服务运行需要这些用户存在。
作用:
- 确保多用户系统中的安全性,每个用户只能访问自己有权限的资源。
- 提供独立的工作环境,用户可以保存个人配置、文件和工作进程。
用户组(Group)
用户组是用户的集合,用于简化和集中管理用户权限。每个组都有一个唯一的组ID(GID),一个用户可以属于一个或多个用户组。
-
组ID(GID):每个组都有一个唯一的组ID,用来标识用户组。
-
初始组和附加组:
- 初始组(Primary Group):用户默认所属的组,当用户创建文件时,文件的所属组为初始组。
- 附加组(Supplementary Group):用户可以属于多个附加组,提供更多的资源访问权限。
-
组文件:用户组信息存储在/etc/group文件中,用户信息存储在/etc/passwd文件中。
类型:
基本组(主组):
- 用户创建时自动生成,可以称为主组。
- 允许其他用户加入,不一定是该用户自己创建的。
- 有些用户可能没有独立的主组,而是属于一个共享的基本组。
附加组:
- 独立创建,与用户无关。
- 附加组不能作为用户的主组。
配置文件位置:
- 用户组信息存储在 `/etc/group` 文件中。
- 文件格式包括:用户组名称、密码占位符、组 ID 和成员列表。
作用:
- 通过将多个用户添加到同一个组,简化权限的管理。用户组可以对文件、目录或设备赋予读、写、执行权限,使得同组用户能够共享访问权限。
- 在权限设置上,文件或目录可以指定所属的用户和用户组,以便更细粒度地控制资源访问。
相关查询
- 查询当前用户的uid和gid:id

- 查询系统所有用户:/etc/passwd

- 格式:用户名:密码占位符:uid:gid:用户备注:用户家目录:用户shell类型
- 其中如果取消密码占位符则可实现本地免密登录,但是不能远程登陆
- 真正的密码存储在/etc/shadow
- 用户备注通常为空
- 查询保存用户的账号、密码、有效期等:/etc/shadow

- 格式:用户名:加密的密码:密码最近更改时间:密码修改冷却时间:密码最长有效期:警告时间(默认无限长,提示修改时间):不活动时间:失效时间:标志
相关命令
用户相关
添加用户
格式:useradd [option] 用户名
选项:
- -u :自定义UID,但是不能超过/etc/login.defs中设置的UIDMAX
- -g :自定义GID或者组名,前提是这个GID已经存在。如果删除某个组,要先删除其组中的成员。
- -d :自定义用户的家目录,需要使用绝对路径,且目录不存在
- -M :不使用用户的家目录,是系统账号的默认值,在创建程序用户时使用
- -s :自定义shell,默认为/etc/default/useradd中定义的shell
- -G :指定附加组,可指定多个
- -r :创建UID小于1000的系统用户,此用户默认没有家目录


修改用户属性信息
格式:usermod [option] 用户名
选项:
- -l :修改用户名,格式为usermod -l newname oldname
- -u :修改用户uid
- -g :放弃当前组,加入其他组,适用于主组
- -G :修改并替换当前的附加组
- -a :将用户追加进某个组,配合-G使用,不覆盖原组
- -L :锁定用户
- -U :解锁用户

-g修改

-G修改一个组

-G修改多个附加组

删除用户
被删除的用户不能处于登录状态,不能是别的用户的主组。
-
解释:
在Linux系统中,每个用户都有一个主组(Primary Group),这是用户在创建时默认被分配的组。通常,用户的主组与用户名相同。例如,当创建用户user1时,系统会默认创建一个同名的组user1,并将该用户的主组设置为user1。
当使用userdel命令删除用户时,如果该用户是某个组的“主组成员”(即该组是用户的主组),则该组会和用户一起被删除(前提是没有其他用户属于这个组)。不过,如果有其他用户也属于这个组,或该用户被指定为其他组的主组成员,就会产生冲突。这时,系统不允许直接删除该用户,因为这会导致组的管理出现问题。
格式:userdel [-r] 用户名
-r 参数为同时删除用户的目录
修改密码
格式:passwd
普通用户只能修改自己的密码,超级用户可以修改任何用户的密码
使用方法:
-
passwd username
- 修改username的密码
-
passwd --stdin username <<< password
- 使用重定向的方法修改密码

用户组相关
添加用户组
格式:groupadd [-g GID] 用户组
如果添加-g则按照用户自定义的标识符GID,不添加则系统默认创建

修改用户组
格式:groupmod [option] 用户组名
选项:
- -g :修改现有的组的GID
- -n :修改现有的组的组名

删除用户组
格式:groupdel 用户组名
如果删除的用户组为某个用户的基本组(主组),那么不能对其进行删除
其他命令
id
格式:id [option] [username]
选项:
- -u :显示用户的ID
- -g :显示用户所属组的ID
- -G :显示用户附加组的ID
- -n :显示用户、所属组、所属附加组的名称,不能单独使用

su
主要用于切换用户
su USER:非登录切换
su - USER:登陆切换,读取相应信息的配置文件

pwck
审计密码文件的完整性

chage
修改用户和密码的有效期

chsh
修改指定用户的shell


浙公网安备 33010602011771号