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):

    • 文件:可查看文件内容(如cat、less)。

    • 目录:可列出目录内文件(如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:设置默认权限掩码
  • 核心作用:新建文件/目录的默认权限 = 基础权限 & (~掩码权限)。//(按位与非运算)

  • 基础权限:

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

    • 目录:0777(rwxrwxrwx)。

  • 默认掩码:

    • 超级用户(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可执行的命令(如useradd、chmod 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
相关推荐
Soneswy1 小时前
Linux系统篇--重定向与文件操作命令
linux
有毒的教程1 小时前
Linux底层存储路由配
linux·运维·网络
派大鑫wink2 小时前
纯前端实现软考中级·软件设计师备考学习网站
前端·学习
smartpi_ai2 小时前
51 单片机写好了,大模型语音怎么接?17T 全驱动的现成方案、双板串口分工的边界与画板前的三项硬件确认
单片机·嵌入式硬件·学习
Linux系统运维工程师_郭主任2 小时前
运维人还在被拒offer?现在能考的,只有 RHCE 10.0。
linux
wujiuhsu3 小时前
图片里的简体中文怎么翻译成繁体?商品图、详情页和海报批量转换方法
经验分享·笔记
自养Agent3 小时前
MCP Server Boundary Audit Report
linux·服务器·人工智能·windows·大模型·llm
辣知3 小时前
辣知·化智82 人类文明演化规律文化传承
学习
Coisinier4 小时前
docker命令管理镜像及容器
linux·运维·nginx·docker·容器·操作系统
A心有千千结4 小时前
通过 SSH 反向代理让服务器借用本机网络访问 GitHub 的最佳实践
linux·服务器·网络·git·ssh·github