当前位置: 首页 > news >正文

Linux研学-用户解析

一 root用户

1 介绍

  root是Linux系统中唯一的超级管理员账户,拥有系统的最高权限(UID=0),可执行任何操作,包括修改系统文件、安装/卸载软件、管理用户权限等。
  如普通用户无法在根目录下创建文件,而root账户可以。

2 su 命令 – 切换当前登录用户身份

  ① 语法

# 用户名 可省略(默认切换到root)。
# 选项:
# -(或-l/--login)加载目标用户的环境变量(如.bashrc、.profile等配置文件)模拟完整登录。
# -c 以目标用户身份执行指定命令后退出(适合快速执行特权操作)。
su [选项] [用户名]

  ② 例子

su - root

3 exit 命令 – 退出当前用户

  ① 语法:退出当前用户会话,返回上一个用户或终端。

# 快捷键 Ctrl + D(发送EOF信号,效果同exit)。
# 输入logout命令(部分Shell支持)。
exit

  ② 注意:普通用户切换到其他用户(包括root)需输入目标用户密码。root用户切换到其他用户无需密码(因root拥有最高权限)。
sudo 命令详解

3 sudo 命令 – 必要时授予root权限执行单条命令

  ① 作用:允许普通用户以root权限执行单条命令,而无需切换到root用户或知道root密码。遵循最小权限原则,仅在必要时授予临时特权,降低误操作或恶意攻击的风险。
  并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证
  ② 语法:

sudo [选项] 命令 [参数]

  ③ 例子:

# 以 root 权限查看日志
sudo cat /var/log/syslog

4 配置sudo认证

  ① 步骤: 切换到 root 用户;

# - 表示加载该用户的环境变量
su - root

  ② 使用 visudo 安全编辑配置文件;

visudo

  ③ 在 /etc/sudoers 中添加用户权限,⚠️ 若需限制命令范围,可替换为具体路径,例如:dahuang ALL=(ALL) /usr/bin/ls, /usr/bin/mkdir;

# dahuang :目标用户名。
# ALL=(ALL):允许从任何主机切换为任何用户执行命令。
# NOPASSWD: ALL:执行所有命令时无需输入密码(谨慎使用)。
dahuang ALL=(ALL) NOPASSWD: ALL

  ④ 保存并退出,在 vi 编辑器中按 Esc,输入 :wq 保存并退出。;切换回普通用户验证

exit  # 退出 root 用户
su - dahuang # 切换回普通用户

  ⑤ 测试 sudo 权限,由于配置了 NOPASSWD,执行时无需输入密码。所有通过 sudo 执行的命令均以 root 权限运行。

sudo ls /root       # 以 root 权限列出 /root 目录内容
sudo mkdir /test    # 以 root 权限创建目录

二 用户与用户组

1 介绍

  用户:系统独立实体,有唯一 UID 和家目录(如 root UID=0)。
  用户组:用户集合,便于批量授权,有唯一 GID。
  关系:用户可属于多个组(主组+附加组),权限可按用户或组分配。

2 用户组管理 – 需要 root 权限

  ① 创建用户组

# root可直接使用 否则需要加上sudo
sudo groupadd [用户组名]

  ② 删除用户组

sudo groupdel [用户组名]

3 用户管理 – 需要 root 权限

  ① 创建用户

# -g 组名:指定用户的主组(需组已存在)。若不指定,默认创建与用户名同名的组并加入。
# 用户名dahuang 组名也为dahuang
# -d 家目录路径:自定义用户的家目录路径(默认:/home/用户名)。
# 使用 -m 后,系统会按默认规则创建家目录,并复制基础配置文件
sudo useradd [-g 组名] [-d 家目录路径] [-m] 用户名

  ② 删除用户

# -r:删除用户时同时删除其家目录(默认保留)。
sudo userdel [-r] 用户名

  ③ 查看用户所属组

# 不提供用户名时,默认查看当前用户所属组
id [用户名]

  ④ 修改用户所属组

# -aG:将用户追加到附加组(不覆盖原有组关系)。
sudo usermod -aG 用户组 用户名

  ⑤ 例子

# 创建用户
sudo useradd -m ppap
sudo ls
ppap
# 查看组别
su - ppap
sudo $ id
uid=1003(ppap) gid=1003(ppap) groups=1003(ppap)
# 创建ppbp入ppap组,并指定home目录
exitsudo useradd -m -g ppap -d /home/ppap ppbp
useradd: user 'ppbp' already existssudo id ppbp
uid=1004(ppbp) gid=1003(ppap) groups=1003(ppap)
# 删除用户同时删除home中文件夹
sudo userdel -r xiaohuang
# bighuang入dahuang组
sudo useradd bighuang
sudo id bighuang
uid=1006(bighuang) gid=1006(bighuang) groups=1006(bighuang)
sudo usermod -aG dahuang bighuang
sudo id bighuang
uid=1006(bighuang) gid=1006(bighuang) groups=1006(bighuang),1004(dahuang)

4 getent 命令 – 查看系统用户数据库

  ① 介绍:它会从 /etc/passwd 文件或其他配置的数据库(如 LDAP、NIS)中检索用户信息。

# 查用户
getent passwd
# 查用户组
getent group

  ② 例子

# 用户名:密码占位符:用户ID(UID):组ID(GID):描述信息:家目录:登录Shell
getent passwd
bighuang:x:1006:1006::/home/bighuang:/bin/sh# 组名称:组认证(显示为×):组ID
getent group
bighuang:x:1006:

三 权限控制

1 查看权限信息

# 文件权限信息 -rw-------.
# 文件所属用户 root (第一个)
# 文件所属用户组 root (第二个)
[root@localhost ~]# ls -l
total 4364
-rw-------. 1 root root    1203 Jul 28  2023 anaconda-ks.cfg
drwxr-xr-x. 2 root root      89 Aug 10  2023 app
drwxr-xr-x. 2 root root      92 Aug 10  2023 bin
drwxr-xr-x. 6 root root      71 Aug 25  2023 logs
-rw-r--r--  1 root root       0 Oct 24  2023 mkdir
drwxr-xr-x. 3 root root      20 Aug 25  2023 nacos
-rw-------. 1 root root 4405717 Aug 25  2023 nohup.out
drwxr-xr-x. 4 root root    4096 May 31 09:38 software
drwxr-xr-x. 6 root root     113 Aug 25  2023 store
-rw-r--r--  1 root root       0 Oct 24  2023 touch

2 权限细节的 10 个槽位解析

  在解析 Linux 文件或目录的权限时,权限细节通常由 10 个字符组成(在特定格式下,如 ls -l 的输出中),这些字符被分为几个部分,以表示文件或目录的类型、所属用户权限、所属用户组权限以及其他用户权限。

文件/目录类型(第1个字符):
-:表示这是一个普通文件。
d:表示这是一个目录。
l:表示这是一个软链接(符号链接)。
所属用户权限(接下来的3个字符):
第2个字符:r(读权限)或 -(无读权限)。
第3个字符:w(写权限)或 -(无写权限)。
第4个字符:x(执行权限)或 -(无执行权限)。
所属用户组权限(接下来的3个字符):
第5个字符:r(读权限)或 -(无读权限)。
第6个字符:w(写权限)或 -(无写权限)。
第7个字符:x(执行权限)或 -(无执行权限)。
其他用户权限(最后的3个字符):
第8个字符:r(读权限)或 -(无读权限)。
第9个字符:w(写权限)或 -(无写权限)。
第10个字符:x(执行权限)或 -(无执行权限)。

3 rwx说明

  1. r(读权限)
    文件:允许查看文件内容(如使用 cat、less)。
    目录:允许列出目录中的文件和子目录(如使用 ls)。
  2. w(写权限)
    文件:允许修改文件内容(如使用文本编辑器或命令修改)。
    目录:允许在目录中创建、删除或重命名文件和子目录(如使用 touch、mkdir、rm、mv)。
  3. x(执行权限)
    文件:允许将文件作为程序执行(如运行脚本或二进制程序)。
    目录:允许更改工作目录到该目录(即使用 cd 进入)。

4 修改权限控制 – chmod

  ① 语法:用于修改文件或目录权限

# -R 递归操作,对目录及其内部所有内容应用相同的权限修改。
chmod [-R] 权限 文件或目录

  ② 权限表示方法

符号模式
u:所属用户(user)权限。
g:所属用户组(group)权限。
o:其他用户(other)权限。
a:所有用户(all,等同于 ugo)。
操作符:
=:设置权限(覆盖原有权限)。
+:添加权限。
-:移除权限。
权限符号:
r:读权限。
w:写权限。
x:执行权限。

  ③ 例子

# 文件权限为rwxr-x--x
chmod u=rwx,g=rx,o=x hello.txt

  ④ 数字表示法,权限可以用三位八进制数表示,每一位分别对应所属用户、所属用户组和其他用户的权限。数字与权限对应:r=4,w=2,x=1,无权限=0。

0:无任何权限(---)
所属用户:无权限
所属用户组:无权限
其他用户:无权限
1:仅有 x 权限(--x)
所属用户:无权限
所属用户组:无权限
其他用户:仅有执行权限
2:仅有 w 权限(-w-)
所属用户:无权限
所属用户组:仅有写权限
其他用户:无权限
3:有 w 和 x 权限(-wx)
所属用户:无权限
所属用户组:有写和执行权限
其他用户:无权限
4:仅有 r 权限(r--)
所属用户:仅有读权限
所属用户组:无权限
其他用户:无权限
5:有 r 和 x 权限(r-x)
所属用户:有读和执行权限
所属用户组:无权限
其他用户:无权限
6:有 r 和 w 权限(rw-)
所属用户:有读和写权限
所属用户组:无权限
其他用户:无权限
7:有全部权限(rwx)
所属用户:有读、写和执行权限
所属用户组:无权限(此示例仅说明数字7的含义,实际中7可能用于所属用户、组或其他用户)

  ⑤ 例子:751

第一位(7):所属用户权限(rwx)
r(4) + w(2) + x(1) = 7
第二位(5):所属用户组权限(r-x)
r(4) + x(1) = 5
第三位(1):其他用户权限(--x)
x(1) = 1
最终权限:rwxr-x--x
[root@localhost games]# ls -l
-rw-r--r-- 1 root root  0 May 31 12:12 test.txt[root@localhost games]# chmod 666 test.txt 
[root@localhost games]# ls -l
-rw-rw-rw- 1 root root  0 May 31 12:12 test.txt

5 修改权限控制 – chown

  ① 语法:用于修改文件或目录的所属用户和用户组的命令,普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行

# -R 递归操作,对目录及其内部所有内容应用相同的所属用户和用户组修改。
# 用户 指定新的所属用户。
# 用户组 指定新的所属用户组。
# : 用于分隔用户和用户组。
chown [-R] [用户][:用户组] 文件或目录

  ② 例子

# 修改文件所属用户
chown root hello.txt# 修改所属用户组
chown :root hello.txt# 同时修改所属用户和用户组:
chown root:dahuang hello.txt# 递归修改目录及其内容的所属用户
chown -R root test# 第一个root为用户 第二个root为用户组
[root@localhost games]# ls -l
-rw-rw-rw- 1 root root 65 May 21 12:29 hello.txt

相关文章:

  • 【Java笔记】Spring IoC DI
  • ApiHug 1.3.9 支持 Spring 3.5.0 + Plugin 0.7.4 内置小插件升级!儿童节快乐!!!
  • 新闻数据加载(鸿蒙App开发实战)
  • flowable候选人及候选人组(Candidate Users 、Candidate Groups)的应用包含拾取、归还、交接
  • neo4j 5.19.0安装、apoc csv导入导出 及相关问题处理
  • 内容中台构建数字化管理新路径
  • 每日c/c++题 备战蓝桥杯(P1204 [USACO1.2] 挤牛奶 Milking Cows)
  • 【多线程初阶】死锁的产生 如何避免死锁
  • 每日c/c++题 备战蓝桥杯(P2240 【深基12.例1】部分背包问题)
  • 湖北理元理律师事务所:债务管理中的人本主义实践
  • 如何在 Ubuntu22.04 上安装并开始使用 RabbitMQ
  • 【代码坏味道】无用物Dispensables
  • 如何查看电脑电池性能
  • 92. Java 数字和字符串 - 字符串
  • 跟单业务并发量分析
  • 将 node.js 项目作为后台进程持续运行
  • 强网杯 2024 PyBlockly
  • RuoYi前后端分离框架实现前后端数据传输加密(一)之后端篇
  • 【PhysUnits】15.5 引入P1后的标准化表示(standardization.rs)
  • Python:操作Excel公式
  • 哪家公司做网站比较好/网络营销的方式与手段
  • 建设营销型网站的目的有哪些/网络广告策划的内容
  • 潍坊专业网站建设哪家便宜/站长网站
  • 大连华南网站制作公司/网站百度seo关键词优化
  • 上海最专业的网站设计制/小学生班级优化大师
  • 做网站需要编程么/搜索引擎营销的分类