Linux用户账号和组账号概述
用户账户和组账号是操作系统中用于管理用户和组身份的基本组件。它们的主要目的是为了方便对系统资源的访问和管理。
1.用户账号(UID)
- 定义:用户账户是操作系统中为每个用户分配的唯一标识符。它允许用户登录到系统,并访问系统资源。
- 类型:
- 普通用户:拥有基本的系统访问权限,通常不能对系统进行重大更改。一般只能在自己的宿主目录中拥有完整权限。
- 管理员/超级用户:拥有对系统的完全控制权,可以执行任何操作,包括修改系统设置、安装软件等。##最高权限
- 程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如 bin、daemon、ftp、mail 等。
- 属性:
- 用户名:用于登录系统的唯一名称。
- 密码:用于验证用户身份的安全信息。
- 用户ID(UID):系统内部用于标识用户的数字。
- 主目录:用户存储个人文件和设置的位置。
- 登录Shell:用户登录后默认执行的命令行界面。
- 创建与删除:系统管理员可以创建新用户账户或删除现有账户,以控制对系统的访问。
2.组账号(GID)
-
定义:组账号是操作系统中为一群具有相似权限需求的用户创建的集合。通过将用户添加到特定的组中,可以简化权限管理。
-
类型:
- 基本组(私有组):基本组账号只有一个,一般为创建用户时指定的组,通常包含系统服务或守护进程所需的权限。(用户创建时会创建个基本组,组名和用户名一样)
●在/etc/passwd文件中第4字段记录的即为该用户的基本组GID号。 - 附加组(公共组):根据用户需求创建,用于共享文件或资源。可有可无,可以有多个。
●更改、查看用户的分组
添加用户示例:
- 基本组(私有组):基本组账号只有一个,一般为创建用户时指定的组,通常包含系统服务或守护进程所需的权限。(用户创建时会创建个基本组,组名和用户名一样)
[root@localhost ~]# gpasswd -a HHF 66 将用户名HHF添加到组666中
查看用户示例:
[root@localhost ~]# id hhh
uid=1100(dn) gid=1100(dn)组=1100(dn),1101(test)
其中1100为基本组或私有组,1101为附加组或公共组。
3. 属性:
- 组名:组的唯一名称 。
- 组ID(GID):系统内部用于标识组的数字。
- 组成员:属于该组的所有用户。
- 权限管理:通过为组分配权限,可以一次性更改多个用户的权限,而无需单独更改每个用户的设置。(可以设置权限集合)
- 创建与删除:系统管理员可以创建新的组或删除现有组,以更好地组织和管理用户。
关联与影响
- 用户与组的关系:每个用户都可以被分配到多个组中,但通常有一个主组。用户的主组通常与其用户名相同。
- 权限继承:在Linux系统中,文件和目录的权限可以基于用户、组和其他用户的权限来设置。通过合理配置这些权限,可以实现细粒度的访问控制。
- 安全性:正确管理用户账户和组账号对于确保系统的安全性至关重要。限制不必要的访问权限可以降低潜在的安全风险。
总之,用户账户和组账号是操作系统中不可或缺的组成部分,它们共同支持了对系统资源的有效管理和访问控制。
2.有关用户信息的文件
1)用户账号文件 – /etc/passwd
●作用:
用于保存用户名称、宿主目录 、登录 Shell等基本信息
**##**所有用户都能访问passwd里面的内容,但只有超级用户能进行修改
●文件结构及各字段含义
root:x:0:0:root:/root:/bin/bash
字段1:用户帐号的名称
字段2:用户密码占位符"x
字段3:用户帐号的UID号
字段4:所属基本组帐号的GID号
字段5:用户全名
字段6:宿主目录
字段7:登录Shell信息(/bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁止用户登陆系统)
2)用户账号文件 – /etc/shadow
●作用:
保存用户的密码 、账号有效期等信息
●各字段含义
- 用户名:与
/etc/passwd
文件中的用户名相对应。 - 加密密码:存储的是加密后的密码,当为***** 或**!**时表示此用户不能登录到系统。
- 密码修改时间:记录用户最后一次修改密码的日期。
- 最小修改间隔:用户必须等待的最小天数才能再次修改密码。默认为零,表示不限制。
- 最大有效期:密码有效的最大天数。即每多长时间需改一次密码。默认为99999,表示无限制。
- 警告期:表示密码还有多长时间过期,默认为7。
- 不活动期:密码过期后,用户还可以继续使用的天数。
- 账号失效日期:账号被禁止登录的日期,表示指定用户作废的天数。
- 保留字段:目前未使用,保留供将来使用。
3.用户账号的增、删、改、查
1)添加用户账号
● useradd 命令基本用法
useradd [选项] 用户名
● 常用选项
-m: 自动为新用户创建家目录(默认为 `/home/username`)。
-M: 不建立宿主目录。
-d: 指定新用户的家目录路径。##当与`-M`一起使用时不生效。
-s: 指定新用户的登录 shell。指定用户的登录 Shell,(比如/bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁止登陆的系统。
-u: 指定新用户的UID号。需此UID号未被使用。
-g: 指定新用户的主要组ID(GID)。需指定组名或GID号,需是存在的组。
-G: 指定新用户应属于的附加组列表。需指定组名或GID号,需是存在的组。
-c: 为新用户提供描述性注释。
-e: 指定新用户的账号到期日期(格式为 YYYY-MM-DD)。
示例:
useradd -m -d /home/username username 创建一个新用户并指定主目录
useradd -s /bin/bash username 创建一个新用户并设置默认的shell
useradd -G groupname username 创建一个新用户并添加到某个用户组
useradd -u UID -g GID username 创建一个新用户并设置用户ID(UID)和组ID(GID)
2)设置/更改用户口令(密码)
● passwd命令
passwd [选项] 用户名
● 常用选项
-d: 清除密码,使密码无效,但保留用户账户。仅使用用户名即可登录。
-l: 锁定用户账户,使其无法登录。图形化界面可登录,文字界面不行。
-S: 显示用户密码的状态(是否锁定、过期等)。
-u: 解锁用户账户,使其可以重新登录。
● 非常用选项
-n: 设置密码的最小修改间隔。
-x: 设置密码的最大有效期。
-w: 设置密码过期的警告天数。
-i: 设置密码过期后的不活动天数。
-a: 允许所有用户修改自己的密码(仅用于某些系统配置)。
-e: 使密码加密,即使用更强的加密算法。
示例:
passwd 为当前用户设置新密码:
passwd -l username 锁定该用户
##部分选项需管理员权限
3)修改用户账号的属性
usermod 命令
usermod [选项] 用户名
● 常用选项
-d: 修改用户的宿主目录位置。
-s: 指定用户登录的 shell。
-u: 修改用户的用户名(UID号)。
-g: 更改用户的基本组名(或用GID号)。
-G: 修改用户附加组名(或用GID号)。
-L: 锁定用户账号。
-U: 解锁用户账号。
● 非常用选项
-l: 更改用户名。
-m: 如果指定了新的家目录,使用此选项会将现有家目录中的内容移动到新家目录中。
-c: 更新用户的描述性注释。
-e: 更改用户的账号到期日期。
-f: 更改用户在密码过期后还能登录的天数。
-p: 更改用户的初始密码(加密形式)
示例:
usermod -d /home/new_home_directory username 修改用户的主目录
usermod -s /bin/bash username 修改用户的默认shell
usermod -G groupname username 将用户添加到某个用户组
usermod -d username groupname 从某个用户组中删除用户
usermod -u new_uid -g new_gid username 修改用户的用户ID(UID)和组ID(GID)
usermod -L username 锁定用户的密码
##通常需管理员权限
4)删除用户账号
● userdel命令
userdel [选项] 用户名
● 常用选项
-r: 删除用户账户的同时,也删除该用户的家目录及其中的所有文件。
-f: 强制删除用户账户,即使该账户仍在登录状态或有未关闭的会话。
-h: 显示帮助信息。
示例:
sudo userdel username 删除一个用户
sudo userdel -r username 删除一个用户及其主目录
## 执行userdel命令时通常需root权限,删除用户时,该用户不能在使用状态。
5)用户账号的初始配置文件
①文件来源
- useradd 命令添加一个新的用户账号后通常会在改用户的宿主目录中建立一些初始的配置文件
- 这些文件来与账号模板目录/etc/skell/,基本都是隐藏文件。
②主要的用户初始配置文件
~/.bash_profile: 每次登录时执行。
~/.bashrc: 每次进入新的Bash环境时执行。
~/.bash_logout: 每次退出登录时执行。
~/.profile: 与`.bash_profile`类似,但可以在非Bash shell中使用。
4.有关于用户组账号的文件
1)用户账号文件 – /etc/group
作用:
用于保存组账号的基本信息
●文件结构及各字段含义
文件中的每一行代表一个组,各字段之间用冒号分隔。以下是各字段的含义:
- 组名:组的名称。
- 组密码:用于某些系统上的组认证。在大多数现代系统中,这个字段通常为空或设置为 “x”,表示密码存储在
/etc/gshadow
文件中。 - 组ID(GID):组的唯一标识符。
- 组成员列表:以逗号分隔的用户列表,表示属于该组的用户。
示例:
developers:x:1001:user1,user2,user3
在这个例子中,“developers”是组名,“x”表示密码字段被省略,“1001”是组的唯一标识符,“user1,user2,user3”是属于该组的用户列表。
2)用户账号文件 – /etc/gshadow
作用:
保存组账号的密码信息,用于安全性管理和权限管理
●文件结构及各字段含义
文件中的每一行代表一个组,各字段之间用冒号分隔。以下是各字段的含义:
- 组名:组的名称。
- 加密的组密码:存储的是加密后的组密码。
- 组管理员:可以管理该组密码的用户列表。
- 组成员列表:以逗号分隔的用户列表,表示属于该组的用户。
示例:
developers:encrypted_password:admin1,admin2:user1,user2,user3
在这个例子中,“developers”是组名,“encrypted_password”是加密后的组密码,“admin1,admin2”是可以管理该组密码的用户列表,“user1,user2,user3”是属于该组的用户列表。
5.组账号的增、删、改、查
1)创建新组
● groupadd 命令
groupadd [选项] 组账号名
● 常用选项
-g: 指定新组的组名(GID)。
-o: 允许创建具有重复 GID 的组(不推荐,因为这可能导致冲突)。
-r: 创建一个系统组,其 GID 小于 500(通常用于系统服务)。
-f: 如果指定的 GID 已经存在,则强制创建组而不报错。
示例
- 创建一个名为
developers
的新组:
groupadd developers
- 创建一个 GID 为 1001 的名为
testgroup
的新组:
groupadd -g 1001 testgroup
- 创建一个系统组,名为
systemgroup
:
groupadd -r systemgroup
##请注意,执行 groupadd
命令通常需要 root 权限。
2)添加删除组成员
● gpasswd 命令
gpasswd [选项] 组账号名
● 常用选项
-a: 向组内添加一个用户
-d: 从组内删除一个用户
-M: 定义多个组成员列表,以逗号分隔。
示例:
-
更改组密码:
gpasswd groupname(组名)
这会提示您输入新密码,然后再次输入以确认。
-
将用户添加到组:
gpasswd -a username groupname
这会将指定的用户添加到给定的组中。
-
从组中删除用户:
gpasswd -d username groupname
这会从给定的组中删除指定的用户。
-
添加多个用户到组:
gpasswd -M username1,username2,... groupname
username1,username2,...
:用逗号分隔的用户列表,这些用户将被设置为组的组管理员。 -
禁用组密码:
gpasswd -r groupname
这会移除组密码,使组成员无需密码即可加入或留在组中。
-
启用组密码:
gpasswd -R groupname
这会重新启用组密码,要求组成员输入密码才能加入或留在组中。
-
从组中删除用户:
gpasswd -d username groupname
这会从给定的组中删除指定的用户。
执行 gpasswd
命令通常需要 root 权限,除非您是组管理员或正在更改自己的组密码。
3)删除组账号
● groupdel命令
useradd 组账号名
示例
●删除名为 oldgroup
的组:
groupdel oldgroup
请注意,执行 groupdel
命令通常需要 root 权限。
6.查询账号信息
① groups 命令
groups [用户名]
groups
命令在 Unix 和类 Unix 系统(如 Linux)中用于显示用户所属的用户组。这个命令可以帮助你了解用户在不同组中的成员资格。(查询用户所属的组)
基本用法
groups username
其中,username
是要查询的用户名。
示例
- 查询用户
huhu
所属的用户组:
groups huhu
输出可能如下:
huhu : 123 456
这表示用户 huhu
属于 123
和 456
两个组。
2.如果你想查看当前登录用户所属的用户组,可以省略 用户名
:
groups
② id 命令
id [选项] [用户名]
作用:查询用户身份表示
常用选项:
-u: 显示用户ID(UID)。
-g: 显示主要组ID(GID)。
-G: 显示所有组ID(GID)。
-n: 显示用户名而不是用户ID(UID)或组ID(GID)。
-r: 显示实际的ID而不是有效的ID。
-u: 显示用户ID(UID)。
-g: 显示主要组ID(GID)。
-G: 显示所有组ID(GID)。
-n: 显示用户名而不是用户ID(UID)或组ID(GID)。
-r: 显示实际的ID而不是有效的ID。
-u: 显示用户ID(UID)。
-g: 显示主要组ID(GID)。
-G: 显示所有组ID(GID)。
-n: 显示用户名而不是用户ID(UID)或组ID(GID)。
-r: 显示实际的ID而不是有效的ID。
-u: 显示用户ID(UID)。
-g: 显示主要组ID(GID)。
-G: 显示所有组ID(GID)。
-n: 显示用户名而不是用户ID(UID)或组ID(GID)。
-r: 显示实际的ID而不是有效的ID。
● 其它相关命令及知识
1.修改主机名:
`hostname 主机名` ##临时修改,重启失效
`vim /etc/hostname` ##永久修改
`hostnamectl set-hostname` 主机名 ##永久修改
2. echo命令
●在命令行和脚本中常用的命令,用于在终端或标准输出上显示文本或变量的值。
useradd [选项] 用户名
3. ctel + d
作用 回退至上个 切换 的用户
4.su 命令
su nameuser
切换至nameuser用户
注意事项:
- 在切换用户时,需要输入新用户的密码,以确保只有授权用户可以访问系统。
- 如果当前用户是root用户,可以使用
su -
命令切换到root用户,无需输入密码。 - 如果要切换到的用户不存在或密码错误,系统会提示“authentication failure”。
- 在切换用户后,可以使用
exit
命令返回到原用户。
5.关于用户和组方面的命令总结
1. useradd: 用于创建新的用户账户。可以指定用户名、用户ID、组ID、家目录、登录Shell等参数。
2. usermod: 用于修改现有用户账户的属性,如用户名、家目录、Shell等。
3. userdel: 用于删除用户账户。可以选择是否同时删除用户的家目录。
4. passwd: 用于更改用户密码。可以为自己或指定用户更改密码,并设置密码的各种限制。
5. gpasswd: 用于更改组密码。可以将用户添加到组、从组中删除用户、设置组管理员等。
6. groupadd:用于创建新的用户组。可以指定组名、组ID等参数。
7. groupmod: 用于修改现有用户组的属性,如组名、组ID等。
8. groupdel: 用于删除用户组。
9. id: 用于显示用户的身份和权限信息,包括用户ID、组ID等。
10. group: 用于显示用户所属的用户组。
11. su: 用于切换用户。可以从当前用户切换到另一个用户。
6.shell 有哪些环境
/bin/bash 允许登录
/sbin/nologin 禁止登录
/bin/sh/
/sbin/sync