1:什么是用户

Linux的用户是集一定的权限与身份的实体,是linux安全管理的基础,通过用户,系统可以控制资源的访问和权限分配

用户的权限主要是对文件或者目录的权限,包括r(读),w(写),x(执行)三个权限,每一个执行文件(也就是程序)执行时,都会拥有执行者,也就是执行它的用户,执行它的用户会影响到程序执行过程中对系统某些文件资源的访问情况。

1.1用户的分类:

- 超级用户:root,拥有对系统所有资源的访问权限

- 普通用户:拥有一定的系统资源访问权限

- 系统用户:一般用来运行服务或者程序创造出来的用户,是这些服务和程序的运行者,通过系统用户防止普通用户染指服务,一般不用于交互式登录

每一个用户都会被分配独一无二的标识UID(user id),并且会定义密码,所有的用户信息都会存储在/etc/password文件里面。

/etc/passwd里面的每个条目格式如下:

1.2关于UID的分配规律

UID的范围

UID 0:保留给超级用户(root),拥有最高权限。

UID 1-499:通常分配给系统用户(System Users),这些用户通常用于运行系统服务或守护进程,例如bin、sys、mail等。

UID 500-65535:分配给普通用户(Regular Users)。系统默认从500开始为普通用户分配UID

备注:这个根据linux的不同版本有所不同,可以在/etc/login.defs查看

UID的分配可以手动也可以自动定义,默认分配普通用户UID

手动分配UID:useradd -u (分配UID) username

修改UID:usermod -u (新UID) username

备注:修改UID后,原来属于用户的所有资源的UID都不会发生自动更新,也就是说不再属于修改UID后的用户。所以修改UID要谨慎

1.3 关于用户的所有操作命令

-查看用户信息:id 用户名

-查看当前登录用户名:whoami

-查看登录用户信息:id

-新建一个用户:useradd 选项 用户名

选项主要有以下:

-u, --uid UID

指定新用户的用户ID(UID)。如果未指定,系统会自动分配一个未使用的UID。

案例:sudo useradd -u 1005 newuser

-g, --gid GROUP

指定新用户的初始登录组(用户组)。可以使用组名或组ID。

案例:sudo useradd -g users newuser

-G, --groups GROUPS

指定新用户的附加组(多个组用逗号分隔)。

案例:sudo useradd -G sudo,users newuser

-d, --home HOME_DIR

指定新用户的主目录。如果不指定,系统会自动创建默认的主目录(通常是 /home/username)。

案例:sudo useradd -d /home/newuser newuser

-s, --shell SHELL

指定新用户的登录Shell。如果不指定,默认使用系统的默认Shell(通常是 /bin/bash 或 /bin/sh)。

案例:sudo useradd -s /bin/tcsh newuser

-c, --comment COMMENT

添加用户注释(如全名、电话等)。

案例:sudo useradd -c "John Doe, Developer" newuser

-m, --create-home

创建用户的主目录(如果主目录不存在)。这是默认行为,但可以显式指定。

案例:sudo useradd -m newuser

-M, --no-create-home

不创建用户的主目录。

案例:sudo useradd -M newuser

-r, --system

创建一个系统用户。系统用户的UID通常在较低的范围内(如 1-499),并且默认不创建主目录。

案例:sudo useradd -r newuser

-e, --expiredate EXPIRE_DATE

设置用户账户的过期日期(格式为 YYYY-MM-DD)。

案例:sudo useradd -e 2025-12-31 newuser

-f, --inactive INACTIVE

设置密码失效后的天数。如果设置为 -1,密码永不过期。

案例;sudo useradd -f -1 newuser

-p, --password PASSWORD

设置用户密码(通常不推荐直接在命令行中设置密码,建议使用 passwd 命令)。

2:什么是用户组

用户组是linux系统中需要共享文件或者其它系统资源访问权限用户的集合,每个组都有一个唯一的标识GID(group id)表示。所有的组信息都存储在/etc/group文件中

/etc/group的条目格式如下:

备注:第四个字段标出的用户是将这个组作为附加组,主要组的用户不在此列

另外,一个用户只能拥有一个主要组,默认自动创建与用户同名,但后面可以修改,多个用户拥有同一个主要组,主要组中用户创建的文件或者目录默认拥有组就是主要组。

-如何查看用户的主要组和附加组

命令:id 用户名

第一个是主要组,其它都是附加组

3:如何获取超级用户权限

获取超级用户权限在很多时候非常必要,系统不建议以root用户登录,所以很多时候,系统管理员是以普通用户登录,并且通过su,sudo等等方式临时获得超级用户权限进行一些必要操作。

第一种方式:su -

Su - 可以帮助用户切换到其它用户的登录环境,如果后面加入用户名参数并且输入那个用户的密码,那么就会登录到那个用户的shell环境,如果不加参数,默认是登录到root环境,

加不加-会影响到登录后的shell环境,如果加-,那么shell环境就是加载登录到用户的配置文件,如果不加-,就不会加载,那么还是原来的shell环境。

第二种方式:sudo +命令

在Linux系统中,sudo(Superuser Do)是一个非常重要的命令,用于允许授权的用户以超级用户(root)或其他用户的身份执行命令。它的主要目的是提供一种安全的方式来管理系统的高级权限,同时避免直接以root用户登录,从而减少误操作和安全风险。

1. sudo的主要功能

临时提升权限:普通用户可以通过sudo执行需要超级用户权限的命令,而无需切换到root用户。

权限控制:系统管理员可以通过配置文件(/etc/sudoers)来精细控制哪些用户可以执行哪些命令。

审计和日志记录:sudo会记录每次使用sudo执行的命令,便于审计和追踪。

2. sudo的工作原理

当用户运行sudo命令时,系统会提示用户输入自己的密码(而不是root密码)。

如果用户通过验证,并且在/etc/sudoers文件中有相应的权限配置,系统会以root用户的身份执行指定的命令。

如果用户没有权限,系统会拒绝执行命令。

3. 配置文件:/etc/sudoers

/etc/sudoers文件是sudo的核心配置文件,它定义了哪些用户可以执行哪些命令。编辑该文件时,建议使用visudo命令,因为它会在保存时检查语法错误,避免配置错误导致系统无法使用sudo。

示例配置:

root    ALL=(ALL) ALL

含义:root用户可以在任何主机上以任何用户的身份执行任何命令。

alice   ALL=(ALL) NOPASSWD: /usr/bin/reboot

含义:用户alice可以在任何主机上无需密码执行/usr/bin/reboot命令。

%wheel  ALL=(ALL) ALL

含义:属于wheel用户组的所有用户可以在任何主机上以任何用户的身份执行任何命令。

案例:以其他用户身份运行命令:

sudo -u otheruser command

5. sudo的优势

安全性:避免直接使用root用户登录,减少因误操作或恶意行为导致系统损坏的风险。

灵活性:通过/etc/sudoers文件,可以精细控制用户的权限,允许用户执行特定命令,而不是完全开放root权限。

审计:sudo会记录每次使用命令的详细信息,便于系统管理员追踪和审计。

6. 注意事项

编辑/etc/sudoers文件时要小心:错误的配置可能导致系统无法使用sudo,建议使用visudo命令进行编辑。

避免滥用权限:即使用户有权限使用sudo,也应尽量避免不必要的高权限操作。

密码策略:虽然可以配置某些命令无需密码,但建议谨慎使用NOPASSWD选项,以增强安全性

提示:最好使用visudo工具编辑sudoers文件,避免发生错误。

如果想要进入root交互shell环境:sudo -i再输入用户密码就可以进入rootshell环境

3:管理本地的用户,组账户

所谓管理账户,无非就是创建,修改,删除用户和组账户

3.1 管理用户账户

- 创建用户账户:useradd 选项 用户名

备注:主要信息在前面提到过

- 修改用户账户:usermod 选项 用户名

选项主要如下:

-删除用户账户

userdel 用户名:只删除/etc/passwd信息,不删除主目录

Userdel -r 用户名:删除用户信息与主目录

备注:如果不删除主目录的话,将来这个UID分配到其它用户的话,这个主目录也属于那个用户,容易造成资源泄露

3.2 管理组账户

- 创建组账户

Groupadd 选项 组名

选项如下:

-管理组账户

Groupmod 选项 组名

-删除组账户

Groupdel 选项 组名

临时改变主要组:newgrp 新主要组名

4:管理用户密码

原来的linux系统中,加密后的密码存储在/etc/passwd中,后来为了防止字典暴力式破解,将加密后的密码存储在了/etc/shadow中

/etc/shadow的条目格式如下:总共有9个字段,用:号隔开

跟上面的参数对应起来看

-m表示修改密码需要经历的最小天数

-M 表示过期的最大天数

-W 表示过期前多少天提示

-I 表示过期后几天才会锁定用户

-E 修改过期日期

-l 查看用户的密码策略

-d 设置上一次修改密码时间格式为‘YY-MM-DD’,如果设置为0或-1,下一次登录会要求更改密码

可以使用chage命令来调整用户的密码策略,默认单位为天 案例如下:

Chage -m 0 -M 90 -W 7 -I 4 用户名

如果你看到了这里,恭喜你少年,你已经掌握了管理用户和组的基本概念和理念,你又向记忆完全复苏的道路上迈出了一大步,假以时日,你就能卷土重来再称云原生大佬了,感受到正向反馈了吗少年。(给我点个赞,收藏一下博客,成为我的粉丝吗)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐