Linux学习笔记(角色,权限管理)1.21

一、Shell命令及运行原理

1. 核心概念

  • Linux内核 (kernel):操作系统的核心,直接控制硬件资源,提供基础功能(如内存管理、进程调度)。

  • Shell:命令行解释器,是用户与内核之间的"桥梁",负责解析用户命令并传递给内核执行,再将执行结果反馈给用户。

  • 通俗理解:内核是"幕后工作者",Shell是"沟通中介",用户通过Shell间接操作内核。常用的Shell是bash(Bourne Again Shell)。

2. 运行流程

  1. 用户在终端输入命令(如ls)。

  2. Shell解析命令,判断命令类型(内置命令/外部命令)。

  3. 若为外部命令,Shell查找命令的可执行文件(通过PATH环境变量)。

  4. 内核执行命令对应的操作,返回结果。

  5. Shell将结果格式化后显示给用户。

二、Linux用户与切换

1. 用户分类

  • 超级用户(root) :拥有系统最高权限,可执行所有操作,命令提示符为#

  • 普通用户 :权限受限,仅能操作自身目录及授权资源,命令提示符为$

2. 用户切换指令(su)

  • 语法su [用户名]

  • 功能:切换当前登录用户。

  • 示例

    bash 复制代码
    # 普通用户切换到root(需输入root密码)
    su root
    # 或简写(效果同上)
    su
    # root切换到普通用户(无需密码)
    su whb

三、Linux权限管理

1. 权限三要素

(1)访问者分类(人)
  • u(User):文件/目录的所有者(创建者)。

  • g(Group):所有者所在组的其他用户。

  • o(Others):既非所有者也非同组的其他用户。

  • a(All):所有用户(包含u、g、o)。

(2)文件类型标识
  • ++d++ ++:目录(文件夹)。++

  • ++-++ ++:普通文件(如文本、程序)。++

  • l:软链接(类似Windows快捷方式)。

  • b:块设备文件(如硬盘、光驱)。

  • c:字符设备文件(如屏幕、串口)。

  • ++p++ ++:管道文件。++

  • s:套接口文件。

(3)基本权限(操作权限)
  • r(Read,读权限,值为4):

    • 文件:可查看文件内容(如catless)。

    • 目录:可列出目录内文件(如ls)。

  • w(Write,写权限,值为2):

    • 文件:可修改文件内容(如编辑、删除)。

    • 目录:可在目录内创建、删除、移动文件/目录。

  • x(Execute,执行权限,值为1):

    • 文件:可运行该文件(如脚本、程序)。

    • 目录:可进入该目录(如 cd )。

  • -:无对应权限(值为0)。

2. 权限表示方法

(1)字符表示法
  • 格式:ugo对应的权限组合(如rwxr-xr--)。

  • 示例解析:rwxr-xr--

    • u(所有者):rwx(可读、可写、可执行)。

    • g(同组用户):r-x(可读、可执行,无写权限)。

    • o(其他用户):r--(仅可读)。

(2)8进制数值表示法
  • 原理:将rwx转换为对应数值求和(r=4、w=2、x=1)。

  • 常用组合:

    • 7(4+2+1):rwx(全权限)。

    • 6(4+2):rw-(读+写)。

    • 5(4+1):r-x(读+执行)。

    • 4(4):r--(仅读)。

    • 0(0):---(无权限)。

  • 示例:rwxr-xr-- 对应数值 754

3. 权限修改指令

(1)chmod:修改文件/目录权限
  • 语法

    • 字符格式:chmod [用户标识][+/-=][权限] 文件名

    • 数值格式:chmod [8进制权限] 文件名

  • 常用选项-R 递归修改目录及子目录/文件权限。

  • 示例

    bash 复制代码
    # 字符格式:给所有者添加写权限
    chmod u+w file.txt
    # 字符格式:给同组用户取消执行权限
    chmod g-x dir/
    # 字符格式:给所有用户设置读+执行权限
    chmod a=rx script.sh
    # 数值格式:设置文件权限为 rw-r--r--(所有者读+写,其他仅读)
    chmod 644 file.txt
    # 数值格式:递归设置目录权限为 rwxr-xr-x(所有者全权限,其他读+执行)
    chmod -R 755 project/
    # 给目录添加粘滞位(仅所有者可删除自身文件)
    chmod +t /home/
(2)chown:修改文件/目录所有者
  • 语法chown [选项] 新所有者 文件名

  • 常用选项-R 递归修改目录及子内容。

  • 示例

    bash 复制代码
    # 修改文件所有者为user1
    chown user1 file.txt
    # 递归修改目录所有者为user1
    chown -R user1 dir/
    # 同时修改所有者和所属组
    chown user1:group1 file.txt
(3)chgrp:修改文件/目录所属组
  • 语法chgrp [选项] 新组名 文件名

  • 常用选项-R 递归修改。

  • 示例

    bash 复制代码
    # 修改文件所属组为group2
    chgrp group2 file.txt
    # 递归修改目录所属组为group2
    chgrp -R group2 dir/
(4)umask:设置默认权限掩码
  • 核心作用:新建文件/目录的默认权限 = 基础权限 & (~掩码权限)。//(按位与非运算)

  • 基础权限:

    • 普通文件:0666rw-rw-rw-)。

    • 目录:0777rwxrwxrwx)。

  • 默认掩码:

    • 超级用户(root):0022

    • 普通用户:0002

  • 示例

    bash 复制代码
    # 查看当前掩码
    umask
    # 设置掩码(仅当前终端有效)
    umask 002
    # 验证:新建文件默认权限为 0666 - 002 = 0664(rw-rw-r--)
    touch test.txt
    ls -l test.txt
    # 验证:新建目录默认权限为 0777 - 002 = 0775(rwxrwxr-x)
    mkdir testdir
    ls -ld testdir

4. 目录权限特殊说明

  • 仅有r权限:可列出目录内文件,但无法进入(cd)或操作文件。

  • 仅有x权限:可进入目录,但无法列出文件(ls)。

  • 仅有w权限:可删除目录内文件(即使没有该文件的权限),但无法列出或进入(需配合x权限)。

  • 关键组合:r+x(可浏览目录内容并进入)、r+w+x(完全控制目录)。

四、sudo权限分配(普通用户提权)

1. 作用

允许普通用户执行原本仅root可执行的命令(如useraddchmod 777),无需切换到root。

2. 配置方法

(1)修改sudoers文件(需root权限)
bash 复制代码
# 先修改文件权限(默认只读)
chmod 740 /etc/sudoers
# 用vim编辑
vim /etc/sudoers
(2)添加授权规则
  • 格式:授权用户 登录主机=(执行命令的用户) 可执行命令

  • 示例:

    bash 复制代码
    # 允许whb用户在任何主机执行所有root命令(无需密码)
    whb ALL=(ALL) NOPASSWD: ALL
    # 允许whb用户仅执行useradd和userdel命令(需输入自身密码)
    whb ALL=(root) /usr/sbin/useradd, /usr/sbin/userdel
(3)恢复sudoers文件权限
bash 复制代码
chmod 440 /etc/sudoers

3. 使用示例

bash 复制代码
# 普通用户用sudo执行root命令(添加新用户)
sudo useradd u2
# 切换到root执行命令(临时提权)
sudo -u root ls /root
# 查看当前用户可执行的sudo命令
sudo -l

五、粘滞位

1. 作用

解决"目录有写权限时,普通用户可删除他人文件"的问题。设置粘滞位后,目录内文件仅能被以下用户删除(在根目录的共享文件体现):

  • 超级管理员(root)。

  • 目录的所有者。

  • 文件的所有者。

2. 操作指令

  • 设置粘滞位chmod +t 目录名

  • 取消粘滞位chmod -t 目录名

  • 示例

    bash 复制代码
    # 给/home目录设置粘滞位
    chmod +t /home/
    # 验证:目录权限末尾会出现't'(如drwxrwxrwt)
    ls -ld /home/
    # 普通用户尝试删除他人文件(会提示无权限)
    rm /home/otheruser/file.txt

六、常用辅助指令

1. file:辨识文件类型

  • 语法file [选项] 文件名/目录

  • 示例

    bash 复制代码
    # 查看文件类型
    file test.txt
    # 查看软链接指向的原文件
    file link.txt
    # 解读压缩文件内容
    file -z test.tar.gz

2. 权限相关查询

bash 复制代码
# 查看文件详细权限(包含所有者、所属组)
ls -l file.txt
# 查看目录详细权限
ls -ld dir/
# 查看当前用户所属组
groups
# 查看指定用户所属组
groups whb
相关推荐
西京刀客2 小时前
macOS 打出来的 tar 包,Linux 常见告警(tar 包里带了 macOS 的扩展属性(xattr))
linux·运维·macos
遇见火星2 小时前
Linux综合性能监控工具dstat命令详解
linux·服务器·php·dstat
方见华Richard2 小时前
整数阶时间重参数化:基于自适应豪斯多夫维数的偏微分方程正则化新框架
人工智能·笔记·交互·原型模式·空间计算
好奇龙猫3 小时前
【人工智能学习-AI入试相关题目练习-第十六次】
人工智能·学习
舟舟亢亢3 小时前
JVM复习笔记——下
java·jvm·笔记
量子-Alex3 小时前
【大模型课程笔记】斯坦福大学CS336 课程环境配置与讲座生成完整指南
人工智能·笔记
咕噜咕噜啦啦3 小时前
ROS入门
linux·vscode·python
土拨鼠烧电路3 小时前
笔记04:价值链深度游:追踪一包纸巾的“数字一生”
笔记
Yana.nice3 小时前
证书格式的适用场景与核心对比
java·linux