linux用户管理

1、了解用户和用户组的概念

2、可以添加useradd

3、删除userdel用户

4、修改用户密码passwd

5、可以添加groupadd

6、删除groupdel用户组

用户与用户组管理

==部门:运维,开发,人事==

用户和用户组管理,就是添加用户和用户组,针对每个用户设置不同的密码。

大家平时的笔记本电脑,会设置多个账户吗?为什么?

服务器要添加多账户的作用

针对不同用户分配==不同的权限==,不同权限可以限制用户==可以访问到的系统资源==

提高系统的安全性,帮助系统管理员对使用系统的用户进行跟踪

多用户多任务

Linux 系统是一个多用户多任务的操作系统,所谓多用户多任务,是指支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。

小明所在的运维团队一共有四个人,分别有大毛,二毛,三毛,大毛负责网站,他的账户叫wangzhan, 二毛负责数据库,他的账户叫shujuku。

在同一时间,大毛和二毛都可以登录这台服务器,大毛可以查询网站的日志,二毛可以处理数据库的问题,他们之间互不影响。

由于我们设置了权限,大毛只能访问网站的日志,无法访问数据库;二毛可以处理数据库问题,但是不能访问网站的日志。这就实现了我们的多用户多任务的运行机制。

Linux作为一种多用户的操作系统(服务器系统),允许多个用户同时登陆到系统上,并响应每个用户的请求。

任何需要使用操作系统的用户,都需要一个系统账号,账号分为:管理员账号与普通用户账号。

在Linux中,根据UID来判断用户! 而不是用户名!只要id为0就是管理员,哪怕有多个id为 0 的账号;

系统在新建账号时,会根据账号类型,自动分配递增账号的UID与GID(用户身份编号,组编号),也可自行分配。通常情况下,应当保证UID与GID唯一且不重复。

用户

任何一个运维人员想要登录服务器,都必须先申请一个账号,然后以这个账号的身份进入系统,就像我们前面说的wangzhan这个账号。

每个账号都拥有一个==唯一的用户名和各自的密码==,用户在登录时输入正确的用户名和密码后,就能够进入系统,默认会进入到这个用户自己的主目录。

root -> /root

普通用户 -> /home/用户名

用户在系统中是分角色的,在Linux系统中,由于角色的不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过UID和GID识别的;

特别是UID,在运维工作中,一个UID是唯一标识一个系统用户的账号。

创建软件的时候需要创建对应的用户

mysql数据库 -> mysql

mycat软件 -> mycat

Linux系统的用户账户:

超级用户root(0)

程序用户(1~499)

普通用户(500~65535)

超级用户:

默认是root用户,其UID和GID均为0。在每台unix/linux操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限。在生产环境,一般禁止root账号远程登录SSH连接服务器,以加强系统安全。

普通用户:

这类用户一般是由具备系统管理员root的权限的运维人员添加的

程序用户: 与真实用户区分开来,这类用户的最大特点是安装系统后默认就会存在的,且默认情况不能登录系统,它们是系统正常运行必不可少的,他们的存在主要是方便系统管理,满足相应的系统进程都文件属主的要求。例如系统默认的bin、adm、nodoby、mail用户等。由于服务器角色的不同,有部分用不到的系统服务被禁止开机执行,因此,在做系统安全优化时,被禁止开机启动了的服务对应的虚拟用户也是可以处理掉的(删除或注释)。

用户组

有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件或目录,如果不用用户组,这种需求在授权时就很难实现。

如果使用用户组就方便多了,只需要把授权的用户都加入到同一个用户组里,然后通过修改该文件或目录的对应的用户组的权限,让用户组具有符合需求的操作权限,这样用户组下的所有用户对该文件或目录就会具有相同的权限,这就是用户组的用途。

将用户分组是linux系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了运维管理工作。

简单来说,就是具有相同==权限==的用户的集合。

例如:人事部有20名员工,他们都需要访问一个文件夹,如果我们给这20个用户的账号分别设置权限,这样太麻烦了,所以我们会建立一个用户组叫HR,对这个组设置权限,将这20个用户加入这个组就可以了。

用户和用户组

A 一个用户可以属于一个用户组,具有此用户组的权限

HR组可以访问/hrfile的文件夹,当user01属于HR组,那么user01就可以访问/hrfile这个文件夹

B 一个用户可以属于多个用户组,此时具有多个组的共同权限

HR可以访问/hrfile的文件夹,运维可以访问/yunweifile的文件夹,当user01同时属于HR组和运维组,那么user01可以访问 /hrfile和/yunweifile

C 多个用户可以属于一个用户组,多个用户都具有此用户组的权限。

属组: 只能有一个

附加组: 可以有多个

创建用户的时候如果没有任何指定

uid是自增的,gid也只自增的

默认的组和用户的名称一致

主组:指用户创建时默认所属的组,==每个用户的主组只能有一个==。创建用户时会同时创建一个和用户名相同的组

例如:添加用户xiaoming,在建立用户 xiaoming 的同时,就会建立 xiaoming 组作为 xiaoming 用户的初始组。

附加组:每个用户只能有一个主组,除主组外,用户再加入其他的用户组,这些用户组就是这个用户的附加组。

==每个用户的附加组可以有多个==,而且用户可以有这些附加组的权限。

用户组管理命令

groupadd:创建用户组

语法:

groupadd [选项] 组名

常用选项:

-g GID:指定组ID(默认自动生成)。

-r 选项:表示创建系统组,系统会自动分配一个 系统级 GID(通常在 1-9991-499,具体范围取决于发行版)。

示例:

  1. 基础创建

    groupadd dev  # 创建名为 "dev" 的组,系统自动分配GID

    场景:快速创建默认配置的组,适用于简单开发环境。

  2. 指定GID

    groupadd -g 1001 dev  # 创建GID为1001的组 "dev"

    场景:需要固定GID时(如与第三方服务权限绑定)。

  3. 创建系统组

    groupadd -r system_group  # 创建系统组(GID范围通常为1-999)

    场景:为系统服务(如Nginx、MySQL)分配专用组。

groupmod:修改用户组

语法:

groupmod [选项] 组名

常用选项:

-g 新GID:修改组ID。 -n 新组名:修改组名称。

示例:

  1. 修改组名

    groupmod -n developers dev  # 将组 "dev" 重命名为 "developers"

    场景:项目名称变更后同步调整组名。

  2. 修改GID

    groupmod -g 2000 developers  # 将组GID从1001改为2000

    场景:修复GID冲突或适配外部权限系统。

  3. 同时修改组名和GID

    groupmod -g 3000 -n dev_team developers

    场景:全面调整组的标识信息。

groupdel:删除用户组

语法:

groupdel 组名

注意:组内不能有用户作为主组,否则删除失败。

示例:

  1. 基础删除

    groupdel test_group  # 删除空组 "test_group"

    场景:清理临时测试组。

  2. 强制删除依赖组

    userdel -r user1 && groupdel dev  # 先删除用户再删组

    场景:组内有用户时,需先移除用户。

  3. 删除系统组

    groupdel system_group  # 删除无用的系统组

    场景:卸载软件后清理残留组。

  4. 错误处理示例

    groupdel dev  # 若失败,输出:groupdel: cannot remove the primary group of user 'user1'

    场景:提示用户需先处理关联用户。

用户管理

useradd:创建用户

语法:

useradd [选项] 用户名

常用选项:

-g GID:指定主组。 -G GID1,GID2:指定附属组。 -s Shell路径:指定登录Shell。 -d 家目录:自定义家目录。 -u UID:指定用户ID。 -c "注释":添加描述。

useradd -G dev,ops -d /wxq -c '这是员工魏小全' wxq

解释器shell:等待用户进入系统之后,用户输入指令之后,该解释器会收集用户输入的指令,转换成机器语言,传递给内核处理;

如果解释器是==/bin/bash 表示用户可以登录到系统==,==/sbin/nologin表示该用户不能登录到系统==

示例:

  1. 基础用户创建

    useradd user1  # 创建用户 "user1",自动生成同名组

    场景:快速创建普通用户。

  2. 指定主组和附属组

    useradd -g 1001 -G 2000,2001 dev_user

    场景:开发人员需要同时访问多个项目组资源。

  3. 创建系统用户

    useradd -r -s /sbin/nologin service_user  # 创建无登录权限的系统用户

    场景:为后台服务(如Apache)分配专用用户。

  4. 自定义家目录和UID

    useradd -d /opt/app_user -u 1500 app_user

    场景:将用户家目录部署到非标准路径,并固定UID。

id:查看用户信息

语法:

id [用户名]

示例:

  1. 查看当前用户信息

    id  # 输出:uid=1000(user) gid=1000(user) groups=1000(user),4(adm)

    场景:快速确认当前用户权限。

  2. 检查用户所属组

    id dev_user  # 确认用户是否在 "developers" 组中

    场景:权限调试时验证组绑定。

  3. 验证UID/GID冲突

    id -u user1  # 输出:1001

    场景:脚本中判断用户是否存在。

用户修改命令 usermod

语法:

usermod [选项] 用户名

示例:

  1. 修改用户名

    usermod -l new_user old_user  # 将用户 "old_user" 重命名为 "new_user"

    场景:员工更名后同步账户信息。

  2. 追加附属组

    usermod -aG docker dev_user  # 添加用户到docker组(保留原有附属组)

    场景:为用户授予新权限(如容器管理)。

  3. 禁用登录

    usermod -s /sbin/nologin dev_user  # 禁止用户登录Shell

    场景:保留用户但禁止交互式访问。

  4. 锁定与解锁

    L lock

    U unLock

    usermod -L dev_user  # 锁定账户
    usermod -U dev_user  # 解锁账户

    场景:临时封禁可疑账户。

  5. 迁移家目录

    usermod -d /new_home -m dev_user  # 移动家目录并更新配置

    场景:服务器存储扩容后调整目录。

密码管理命令 passwd

语法:

passwd [用户名]

示例:

  1. 普通用户改密

    passwd  # 根据提示输入新密码

    场景:定期更新个人密码。

  2. root重置他人密码

    passwd dev_user  # 直接设置新密码

    场景:用户忘记密码后管理员协助重置。

    Linux ==不允许没有密码的用户登录到系统==,因此前面创建的用户目前都处于锁定状态,需要设置密码之后才能登录计算机。

  3. 清空密码

    passwd -d dev_user  # 删除密码(允许无密码登录,需配置SSH)

    场景:内部测试环境中简化登录。

  4. 强制密码策略

    passwd -x 30 -w 7 dev_user  # 密码30天后过期,提前7天警告

    场景:企业合规性要求。

用户切换命令 su

语法:

su [-] 用户名

示例:

  1. 加载环境变量切换

    su dev_user  # 完全模拟dev_user登录环境

    场景:调试用户环境问题。

  2. 执行单条命令

    su dev_user -c "whoami"  # 输出:dev_user

    场景:脚本中以特定用户身份运行命令。

  3. root快速切换

    su  # 省略用户名时默认切换到root

    场景:管理员执行特权操作。

  4. 受限切换

    su dev_user  # 不加载环境变量,可能导致路径错误

    场景:临时切换但保留原环境(谨慎使用)。

  5. 结合sudo使用

    sudo su dev_user  # 非root用户通过sudo切换

    场景:普通用户获得临时权限后切换身份。

用户删除命令 userdel

语法:

userdel [-r] 用户名

示例:

  1. 保留家目录删除

    userdel dev_user  # 删除用户但保留/home/dev_user

    场景:保留用户数据以备后续审计。

  2. 彻底删除用户

    userdel -r dev_user  # 删除用户及家目录

    场景:清理离职员工账户。

  3. 强制删除锁文件

    userdel -f dev_user  # 强制删除(用户已退出登录)

    场景:处理僵尸账户。

  4. 删除系统用户

    userdel -r system_user  # 删除系统用户及其配置

    场景:卸载服务后清理残留用户。

案例

公司新员工lisi,属于gzhr部门,用户ID1200,不允许登录系统

创建用户lisi,默认lisi属于自己同名的主组,让lisi 属于附加组gzhr,用户ID 1200,注释为"hruser lisi",解释器为/sbin/nologin

公司员工wangwu,属于shhr部门,现在要休产假,产假期间,暂时停止她登陆电脑的权限,同时原来属于gzhr部门的员工lisi,负责wangwu的工作。

所以,需要把lisi加入到shhr的组,同时,修改lisi的账户注释为“gzhr shhr user”

对于wangwu用户,我们要执行锁定和解锁操作

对于lisi用户,我们要将lisi加入到shhr的附加组,同时修改lisi账户的注释

王五产假休完回到公司上班,需要将王五的账户解锁,在使用usermod -U解锁时,我们看到一个错误信息如下:

usermod: unlocking the user's password would result in a passwordless account.

解锁这个账户,将导致一个没有密码的账户,因为之前王五的账户没有密码。

这时候,我们就需要使用passwd命令,给王五的账户设置一个密码。

相关文件

 /etc/passwd 存放用户的账号等相关信息(密码除外)
 /etc/shadow 保存用户的密码 
 /etc/group:组及其属性信息 
 /etc/gshadow:组密码及其相关属性

/etc/passwd

/etc/passwd文件中每行定义一个用户账号,有多少行就表示多少个账号,在一行中可以清晰的看出,各内容之间又通过”:”号划分了7个字段。

这7个字段分别定义了账号的不同属性,passwd文件实际内容如下:

  

img

字段1:帐号名,这是用户登陆时使用的账户名称,在系统中是唯一的,不能重名
字段2:密码占位符x;早期的unix系统中,该字段是存放账户和密码的,由于安全原因,后来把这个密码字段内容移到/etc/shadow中了。这里可以看到一个字母x,表示该用户的密码是/etc/shadow文件中保护的。
字段3:UID;范围是0-65535
字段4:GID;范围是0-65535;当添加用户时,默认情况下会同时建立一个与用户同名且UID和GID相同的组。
字段5:用户说明;这个字段是对这个账户的说明
字段6:宿主目录;用户登陆后首先进入的目录,一般与"/home/用户名"这样的目录
字段7:登录Shell   当前用户登陆后所使用的shell,在centos/rhel系统中,默认的shell是bash;如果不希望用户登陆系统,可以通过usermod或者手动修改passwd设置,将该字段设置为/sbin/nologin 即可。大多数内置系统账户都是/sbin/nologin,这表示禁止登陆系统。

/etc/shadow

img

字段1:帐号名称
字段2:加密的密码(通常使用shad512加密)
字段3:最近更改密码的时间;从1970/1/1到上次修改密码的天数
字段4:禁止修改密码的天数;从1970/1/1开始,多少天之内不能修改密码,默认值为0
字段5:用户必须更改口令的天数;密码的最长有效天数,默认值为99999
字段6:警告更改密码的期限;密码过期之前警告天数,默认值为7;在用户密码过期前多少天提醒用户更改密码
字段7:不活动时间;密码过期之后账户宽限时间 3+5;在用户密码过期之后到禁用账户的天数
字段8:帐号失效时间,默认值为空;从1970/1/1日起,到用户被禁用的天数
字段9:保留字段(未使用),标志

/etc/group

  

img

字段1:组账户名称
字段2:密码占位符x;通常不需要设置该密码,由于安全原因,该密码被记在/etc/gshadow中,因此显示为'x'。这类似/etc/shadow。
字段3:组账户GID号,用户组ID
字段4:本组的成员用户列表;加入这个组的所有用户账号

/etc/gshadow

  

img


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值