管理本地用户和组

21 篇文章 0 订阅
21 篇文章 0 订阅

描述用户和组概念

什么是 USER

用户账户为不同人员和运行的程序之间提供安全边界
用户使用 username 进行标识,操作系统为其分配唯一标识号(UID),
用户可能含有密码
系统中的每个程序都以一个特定用户运行,每个文件都有一个特定用户作为所有者
用户账户有三种主要类型:超级用户、系统用户和普通用户
- superuser 就是 root 用户,UID=0,具有系统的最高权限
- system user 用于系统管理,例如运行服务,不需要用于系统登录
- regular user 供用户进行日常系统管理,通常具有权限限制
id 命令查看当前登录的用户或某用户信息,可将其他用户名传递给id以查看其他用户基本信息

 ls -l 命令查看文件所属用户,ls -ld 命令查看目录所属用户

使用 ps 查看进程的信息, -a 选项显示当前 terminal 的进程, -u 选项显示进程关联的用户信息

 

虽然命令中显示用户名,但是系统中使用 UID 追踪用户, /etc/passwd 文件中存储有关用户的信息

①该用户的用户名

②用户密码曾以加密格式存储在这里,现在已经移至/etc/shadow文件,始终为x

③该用户账户的UID

④该用户账户的主要组的GID

⑤该用户的真实姓名

⑥该用户的主目录,shell启动时的初始目录,含有用户数据和初始设置

⑦该用户默认的shell程序,会在登录时运行。对于普通用户,通常是提供用户命令行提示符的程序

什么是 GROUP

组是用户的集合,组中用户共享文件和其他系统资源的访问权限
组有 group name 和 GID,使用  /etc/group 文件存储本地组的信息

①该组的组名称

② 过时的组密码字段,始终为x

③该组的GID

④属于作为补充组的该组成员的用户列表

主要组和补充组

每个用户只属于一个 primary group,对应 GID 在 /etc/passwd 中
创建新用户时同时创建同名的 primary group,用户作为此组的唯一用户
用户还可以属于 supplementary groups,对应 GID 在 /etc/group 中
同一组中的不同用户拥有组中对文件的相同权限
id 命令可以显示用户的组信息

 获取超级用户访问权限

切换用户

su 命令用于进行用户切换,普通用户之间切换需要输入密码, root 切换到普通用户不需要输入密码
su 启动非登录 shell(使用原始用户的环境设置), su - 启动登录 shell (导入该用户的环境设置,推荐)

通过 sudo 运行命令

普通用户使用 sudo 可以获取 root 用户的访问权限
sudo 需要用户输入普通用户自己的密码以进行身份验证

通过 sudo 运行的命令,会在 /var/log/secure 中记录日志 

sudo 的主配置文件是 /etc/sudoers,只能采用特殊的 visudo 命令进行编辑 

#以下来自/etc/sudoers文件的一行可为组wheel的成员启用sudo访问权限

%wheel 表示用户组 wheel,ALL=(ALL) 定义可以在任意包含此文件的主机上,wheel 可以运行任意命令,最后一个 ALL 表示 wheel 可以任意用户 身份运行此命令
/etc/sudoers包含 /etc/sudoers.d 目录中所有文件内容,可将相应的文件放入该目录中,为用户添加sudo权限
# 为用户user01启用完整的sudo访问权限,创建含有以下内容的 /etc/sudoers.d/user01

如果想不输入密码就可以运行 sudo 命令,设置NOPASSWD(在 ansible 中非常有用):

管理本地用户帐戶

创建用户

useradd username 创建新用户及其组,并创建用户家目录和用户信息 (暂无密码,无法登录)
useradd --help 显示选项和参数,与 usermod 命令的选项参数一致
/etc/login.defs 中定义新用户的 UID 范围和密码生命周期

修改用户

 usermod --help 命令显示可用于修改账户的基本选项

删除用户

userdel username 删除用户,但是保留家目录
userdel -r username 删除用户和家目录
rhel7 开始,普通用户的 UID 从 1000 开始
root用户可使用  find / -nouser -o -nogroup 可以搜索不属于任何用户和组的文件

设置密码

passwd username 设置密码,root 可以为任何用户设置密码,普通用户只可以修改自己的密码

UID 范围

UID 0 永远分配给 root
UID 1-200 分配给 system users(红帽的系统服务)
UID 201-999 分配给 system users,供文件系统中没有自己的文件的系统 进程使用。通常在安装需要它们的软件时,从可用池中动态分配。程序以这些“无特权”系统用户身份运行,它们仅访问运行所需的资源

管理本地用户和组

创建 group

groupadd 创建用户组
groupadd -g 可以指定 GID,建议使用 1000 以上的 GID

修改 group

groupmod 命令, -n 设置 groupname, -g 设置 GID

# 将组名称从group02 改到 group0022

# 将组group0022的 GID 改为 20000

删除 group

groupdel 删除组,如果是某用户的 primary group,则无法删除

修改 group 成员

usermod -g 修改用户的 primary group 

usermod -aG  将用户添加到某一补充组,-a 是 append 模式。如果 只有 -G ,则会从当前未包含在  -G 选项列表中的任何补充组中删除用户

 

 管理用户密码

shadow 密码和密码策略

密码现保存到只有 root 可读取的 /etc/shadow 文件中,文件格式如下:

 

 ①此密码所属账户的用户名

②此用户的加密密码

③上次更改密码的日期。其设置值为自1970年1月1日起的天数, ,并按UTC时区计算

④自用户上次更改密码以来到可以再次更改密码的最短天数

⑤在密码过期之前不进行密码更改可以经过的最长天数。空字段表示它不会根据上次更改以来的时间失效

⑥警告期。当用户在截止日期前登录到达该天数时,会收到有关密码过期的警告

⑦非活动期。一旦密码过期,在这些天数内仍可以登录,过日期后,账户将被锁定

⑧密码过期日。其设置值为自1970年1月1日起的天数, ,并按UTC时区计算。空字段表示不会在特定日期过期

⑨最后一个字段通常为空,预留给未来使用

加密秘钥的格式

秘钥由三部分构成, $哈希算法$salt$加密后的秘钥 ,中间以 $ 分隔。
- 6表示 sha512,RHEL7后默认值;1表示 md5;5表示 sha256
- 加密 password 用的 salt,来自于 random 文件
- 用 salt 加密 password 后,进行哈希的值
salt 用以防止不同用户使用相同密码

密码的验证

用户登录时,使用 salt 加密用户 password,然后进行哈希,之后进行比较

配置密码生命周期

chage 命令用以修改密码生命周期
-m 最小生命周期;-M 最大生命周期;-W 警告周期;-I 失效周期
举例:
# chage -d 0 user03 要求 user03 用户下次登录必须修改密码
# chage -l user03 显示 user03 密码生命详情
# chage -E 2025-08-05 user03 定义密码过期时间
在 /etc/login.defs 中 PASS_MAX_DAYS、PASS_MIN_DAYS 和 PASS_WARN_AGE 定义新用户的密码最大生命周期、最小生命周期和警 告周期

 

限制登录

使用 usermod -L 可以锁定用户, usermod -U 解锁用户

nologin shell

当有效的用户的账号不需要登录系统,可以将其登录 shell 设置为 nologin shell, 一旦用户尝试登陆, nologin shell 会关闭该连接 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值