一、基本概念
1、基本介绍
linux作为一种多用户的操作系统(服务器系统),允许多个用户同时登录到系统上,并响应每个用户的请求。任何需要使用操作系统的用户,都需要一个系统账号,账号分为:管理员账号与普通用户账号。在Linux中,操作系统根据UID来判断用!根据UID来判断用户!而不是用户名!只要id为0就是管理员,哪怕有多个id为0 的账号;系统在新建账号时,会根据账号类型,自动分配递增账号的UID与GID (用户身份编号,组编号),也可自行分配。通常情况下,应当保证UID与GID唯一且不重复。
2、Linux的单用户任务和多用户任务
在Linux下,当你登录后,你也可以同时开启很多的服务任务和进程,而各自服务都会跑的很好却对其他任务没有任何影响,这种登录一个用户登录系统执行多个服务任务和进程的情况,就称为单用户多任务。多用户任务——有时可能是很多用户同时用同一个系统,如公司几十个运维人员,每台机器都可以和被若干个运维人员登录部署或解决相关故障问题,但并不是所有的运维人员都要做同一件事,所以就有了多任务、多用户的情况。注:多用户、多任务并不是大家同时挤到一起,在一台机器的键盘和显示器前来操作机器,多用户可能是通过SSH客户端工具等远程工具等远程登录服务器来进行,比如对服务器的运程控制,只要具有相关用户的权限,任何人都是可以上去操作访问服务器。
3、Linux系统用户角色划分
用户在系统中是分角色的,在Linux系统中,由于角色的不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过UID和GID识别的;特别是UID,在运维工作中,一个UID是唯一标识一个系统用户的账号。
用户账户:
超级用户root(0)
程序用户(1~499)
普通用户(500~65535)
超级用户:
默认是root用户,其UID和GID均为0。在每台unix/linux操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限。在生产环境,一般禁止root账号远程登录SSH连接服务器,以加强系统安全。
普通用户:
这类用户一般是由具备系统管理员root的权限的运维人员添加的
程序用户:
与真实用户区分开来,这类用户的最大特点是安装系统后默认就会存在的,且默认情况不能登录系统,它们是系统正常运行必不可少的,
他们的存在主要是方便系统管理,满足相应的系统进程的文件属主的要求。例如系统默认的bin、adm、nodoby、mAIl用户等。由于服务器角色的不同,有部分用不到的系统服务被禁止开机执行,因此,在做系统安全优化时,被禁止开机启动了的服务对应的虚拟用户也是可以处理掉的(删除或注释)。
4、用户和用户组介绍
二、用户及用户组配置文件介绍
在Linux中,万物皆文件,所以用户与组也以配置文件的形式保存在系统中,以下为用户和组的主要配置文件详解:
- /etc/passwd:用户及其属性信息(名称、 UID、主组ID等)
- /etc/group:组及其属性信息
- /etc/shadow:用户密码及其相关属性
- /etc/gshadow:组密码及其相关属性
1、/etc/passwd详解
作用:
用于存储系统上的用户账户信息。每一行代表一个用户账户,包含了一些关于该用户的基本信息。
每行格式:
username:password:UID:GID:GECOS:home directory:shell
解释
1.username:用户名,用于识别用户。
2.password:加密后的用户密码,现在通常是一个占位符,实际的加密密码保存在 /etc/shadow 文件中。
3.UID:用户标识号,是一个唯一的数字,用于标识用户在系统中的身份。
4.GID:用户所属的组标识号,指示用户属于哪个主要的用户组。
5.GECOS:一般的用户信息,包括用户的全名、电话号码、地址等。
6.home directory:用户的主目录,用户登录时所在的默认目录。
7.shell:用户登录时使用的默认shell,用于执行命令和交互。
每当创建一个新用户时,系统会将该用户的信息添加到 /etc/passwd 文件中。用户可以使用该文件中的信息来验证身份、分配资源和执行其他权限控制操作。
2、/etc/group详解
作用:
用于存储系统上的用户组信息。每一行代表一个用户组,包含了一些关于该用户组的基本信息。
每行格式:
groupname:password:GID:userlist
解释:
1.groupname:用户组名,用于识别用户组。
2.password:用户组密码,现在通常是一个占位符,实际的加密密码保存在 /etc/gshadow 文件中。
3.GID:用户组标识号,是一个唯一的数字,用于标识用户组在系统中的身份。
4.userlist:属于该用户组的用户列表,多个用户名之间用逗号分隔。
每当创建一个新用户组时,系统会将该用户组的信息添加到 /etc/group 文件中。用户组可以用于管理和组织用户,例如分配文件和目录的访问权限,以及在用户之间共享资源。
3、/etc/shadow详解
用于存储系统用户的加密密码。它包含了用户账户的散列密码和其他与安全相关的信息。
每行格式:
username:password:lastchanged:minage:maxage:warnexpire:inactive:expire:reserved
解释:
1.username:用户的登录名。
2.password:用户的加密密码。现在通常是一个散列值,实际的密码保存在 /etc/passwd 文件中。
3.lastchanged:用户密码上次更改的日期,以自UTC 1970年1月1日以来的天数计算。
4.minage:用户密码被更改之前必须保持的最小天数。
5.maxage:用户密码过期之前的最大天数。
6.warnexpire:在密码过期之前给用户的警告天数。
7.inactive:在用户账户被禁用之前的非活动天数。
8.expire:用户账户的过期日期,以自UTC 1970年1月1日以来的天数计算。
9.reserved:保留字段,目前未使用。
/etc/shadow 文件通常只对特定的权限用户可读,以保护用户密码的安全性。只有具备特定权限的用户才能修改、查看或操作该文件。
4、/etc/gshadow详解
用于存储系统用户组的加密密码。它类似于 /etc/shadow 文件,但是用于用户组而不是用户。
每行格式
groupname:encryptedpassword:administrators:members
解释:
1.groupname:用户组的名称。
2.encryptedpassword:用户组的加密密码。通常是一个散列值,实际密码通常不直接存储在此文件中。
3.administrators:具有管理权限的用户列表,以逗号分隔。
4.members:属于该用户组的用户列表,以逗号分隔。
三、用户管理
1、添加用户
语法:useradd 选项 用户名
选项:
-u 指定用户的uid
-g 指定用户的gid
-G 指定附属组,可以有多个, 但是这些附属组必须是系统内已经存在的
-c 指定描述
-d 指定家目录
-M 不建立家目录
-s 指定shell
-e 指定用户过期时间, 日期
-f 指定用户过期时间, 天数
注意:若不带任何选项默认创建与用户同名的用户主组和家目录,用户的用户主组在passwd文件查看,用户附加组在group文件查看;
2、修改用户
语法:usermod 选项 用户名
选项:
-g 指定用户的用户主组,选项值为id号或组名
-G 指定用户的用户附加组,选项值为id号或组名
-u 指定用户的uid(不指定默认从500开始向后分配)
-l 修改用户的用户名
3、设置密码
语法:passwd 用户名
选项:
-k,--keep-tokens 保留未过期的认证令牌
-d,--delete 删除指定账户的密码(仅限root)
-l,--lock 锁定指定帐户的密码(仅限root)
-u,--unlock 解锁指定账户的密码(仅限root用户)
-e,--expire 指定指定账户的密码过期(仅限root)
-f,--force 强制操作
-x,--maximum=DAYS 最大密码生存期(仅限root用户)
-n,--minimum=DAYS 密码最短生存期(仅限root用户)
-w,--warning=DAYS 用户在密码过期前收到警告的天数(仅限root用户)
-i,--inactive=DAYS 密码过期后禁用帐户的天数(仅限root用户)
-S,--status 报告指定帐户的密码状态(仅限root)
回车后即可输入新密码,需要输入两次密码且没有输入提示,修改密码也是这个语法
注意:没有密码的用户是不能登录Linux系统的,没有设置密码的新创建用户处于锁定状态,需要设置密码后才能登录系统;
免交互修改密码:
echo "密码" | passwd --stdin 用户名
4、切换用户
语法:su [用户名]
若不指定用户名,默认切换为root用户
注意:root用户切换到其他用户不需要密码,反之需要密码;切换用户前后当前目录不变;普通用户不能进入root用户家目录,反之可以;
5、删除用户
语法:
userdel 选项 用户名
选项:
-r 表示删除用户的同时删除其家目录
四、用户组管理
1、用户组添加
语法:
groupadd 选项 用户组名
选项:
-g 指定用户组的id,若不指定默认从500开始向后分配
2、用户组修改
语法:
groupmod 选项 用户组名
选项:
-g 指定用户组id
-n 修改用户组名称
3、用户组删除
语法:groupdel 用户组名
注意:若该用户组是某个用户的主组时无法被删除,除非将用户移出该用户组;