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

从入门到精通:Linux 权限管理(rwx/chmod/chown)

目录

1. 引言:为什么需要文件权限?

2. 基础概念:理解 rwx 权限

(1)权限的三种角色

(2)权限的三种类型

(3)权限的两种表示法

(4) 目录的 rwx 权限详解

3. 实战操作:权限管理命令

(1)查看权限

(2)修改权限:chmod

(3)修改所有者:chown

(4) 常见场景与解决方案

附录:常用命令速查表

4.umask

1. 什么是 umask?

2. 权限计算规则

(1)普通文件的默认权限

(2)目录的默认权限

补充:粘滞位(Sticky Bit)详解

1. 什么是粘滞位?

2. 粘滞位的表示方法

3. 设置与查看粘滞位

4. 粘滞位的实际应用

5. 粘滞位的注意事项

6. 总结


1. 引言:为什么需要文件权限?
  • 用一句话场景引入:

    “想象一下,你的 Linux 服务器存放着重要数据,如何防止他人误删文件?如何让团队协作时部分文件可编辑、部分只读?这一切都依赖 Linux 的权限系统。”

  • 一句话点题:权限是 Linux 安全与协作的基石
2. 基础概念:理解 rwx 权限
(1)权限的三种角色
  • 用户(Owner):文件所有者
  • 组(Group):文件所属用户组
  • 其他(Others):既不是所有者,也不在组的用户
(2)权限的三种类型
符号权限对文件的含义对目录的含义
r读(Read)查看文件内容列出目录中的文件(如 ls
w写(Write)修改文件内容在目录中创建/删除文件
x执行(Execute)执行文件(如脚本)进入目录(如 cd
(3)权限的两种表示法
  • 符号表示rwxr-xr--(三组权限:用户/组/其他)
rwx = 4 (r) + 2 (w) + 1 (x) = 7  
r-x = 4 + 0 + 1 = 5  
r-- = 4 + 0 + 0 = 4  
组合后:755 → rwxr-xr-x
(4) 目录的 rwx 权限详解

对目录而言,rwx 的含义与文件不同:

权限操作示例说明
rls /dir列出目录内容(需配合 x 权限)
wtouch /dir/newfile在目录中创建/删除文件
xcd /dir 或 cat /dir/file进入目录或访问目录内文件内容
3. 实战操作:权限管理命令
(1)查看权限
ls -l  # 显示详细信息,如:-rwxr--r-- 1 user group 1024 Jan 1 10:00 script.sh
(2)修改权限:chmod

符号模式

chmod u+x script.sh    # 给用户添加执行权限  
chmod go-w data.txt   # 移除组和其他用户的写权限  

数字模式

chmod 755 script.sh   # rwxr-xr-x  
chmod 644 config.txt  # rw-r--r--  
(3)修改所有者:chown
chown user:group file.txt  # 修改所有者和所属组  
chown -R user:group /dir   # 递归修改目录下所有文件(-R 参数)  
(4) 常见场景与解决方案

场景 1:让脚本可执行

chmod +x script.sh  # 添加执行权限  
./script.sh         # 运行脚本  

场景 2:共享目录的权限设置

mkdir /project  
chmod 775 /project    # 用户和组可读写执行,其他人只读执行  
chown dev:team /project  # 归属开发者组  
附录:常用命令速查表
命令作用
ls -l查看权限
chmod 755 file修改权限(数字模式)
chmod u+x file添加用户执行权限
chown user:group修改所有者和组
chmod -R递归修改目录权限

4.umask

1. 什么是 umask?

umask(权限掩码)是 Linux 中一个关键参数,用于控制新创建文件或目录的默认权限。它通过“屏蔽”某些权限位,确保新建文件或目录的权限符合安全规范。

umask  #输出例如0002  0022(八进制)
2. 权限计算规则

默认权限 = 起始最大权限 - umask
注意:这里实际是按位取反后做“按位与”运算,但为了方便记忆,可简化为“减法”。

(1)普通文件的默认权限
  • 起始最大权限666(即 rw-rw-rw-),因为普通文件默认不应有执行权限(避免安全隐患)。

  • 为什么你的情况是 664?

  • 计算示例(假设 umask=0022):

最大权限:  6 6 6   → rw-rw-rw-  
umask:     0 2 2   → ----w--w-  
实际权限:6 4 4   → rw-r--r--  

解释

  • 用户权限:6 - 0 = 6 → rw-
  • 组权限:6 - 2 = 4 → r--
  • 其他用户权限:6 - 2 = 4 → r--

(2)目录的默认权限
  • 起始最大权限777(即 rwxrwxrwx),因为目录需要 x 权限才能进入(cd)。
最大权限:7 7 7   → rwxrwxrwx  
umask:   0 2 2   → ----w--w-  
实际权限:7 5 5   → rwxr-xr-x  

特殊规则

  • 仅拥有目录的 w 权限而无 x:无法创建或删除文件(因为操作依赖 x 权限)。
  • 仅拥有目录的 x 权限而无 r:可以访问目录内已知文件(如 cat /dir/known.txt),但无法列出文件列表。
  • umask 的默认值

    • Root 用户:通常 umask=022(安全优先,限制组和其他用户权限)。
    • 普通用户:通常 umask=002(允许同组用户读写协作)。

  •  

补充:粘滞位(Sticky Bit)详解

1. 什么是粘滞位?

粘滞位是一种特殊的权限位,主要用于目录。它的作用是:

  • 限制文件删除权限:即使目录对所有用户开放写权限(w),只有文件的所有者、目录的所有者或超级用户(root)才能删除或重命名文件。
  • 典型应用场景:共享目录(如 /tmp),防止用户随意删除他人文件。
2. 粘滞位的表示方法
  • 符号表示:在权限位的最后一位显示为 t 或 T
    • 如果目录有执行权限(x),显示为 t(如 rwxrwxrwt)。
    • 如果没有执行权限,显示为 T(如 rwxrwxrwT)。
  • 数字表示:在权限数字前加 1,如 1777
3. 设置与查看粘滞位

(1)查看粘滞位
使用 ls -l 查看目录权限,粘滞位显示在权限位的最后一位:

ls -ld /tmp  
# 输出示例:drwxrwxrwt 10 root root 4096 Oct 10 12:00 /tmp

(2)设置粘滞

符号模式

chmod +t /shared_dir  # 添加粘滞位  
chmod -t /shared_dir  # 移除粘滞位  

数字模式

chmod 1777 /shared_dir  # 添加粘滞位,权限为 rwxrwxrwt  
chmod 0777 /shared_dir  # 移除粘滞位,权限为 rwxrwxrwx  
4. 粘滞位的实际应用

场景:共享目录权限控制
假设有一个共享目录 /shared,希望:

  • 所有用户可以在目录中创建文件;
  • 只有文件所有者或 root 可以删除文件。

操作步骤

mkdir /shared  
chmod 1777 /shared  # 添加粘滞位,权限为 rwxrwxrwt  
ls -ld /shared      # 检查权限  
# 输出:drwxrwxrwt 2 root root 4096 Oct 10 12:00 /shared  
5. 粘滞位的注意事项
  • 仅对目录有效:粘滞位对普通文件无意义。
  • 与写权限的关系:粘滞位通常与目录的写权限(w)结合使用。如果目录没有写权限,粘滞位的作用有限。
  • 安全性:粘滞位不能完全替代其他权限控制(如 ACL),但可以有效防止误删文件。
6. 总结
  • 一句话总结:粘滞位是共享目录的“守护者”,确保只有文件所有者或 root 可以删除文件。
  • 扩展建议:结合 chmod 和 chown,灵活控制目录权限,满足团队协作需求。

    http://www.kler.cn/a/567850.html

    相关文章:

  • 论文写作指南
  • 绕过信息过滤与注入限制
  • [预订酒店]
  • Android Activity启动流程详解
  • yunedit-post ,api测试比postman更好
  • 使用tkinter有UI方式来拷贝Excel文件
  • 软件工程----4+1架构模型
  • C# .NET Core HttpClient 和 HttpWebRequest 使用
  • anythingLLM和deepseek4j和milvus组合建立RAG知识库
  • kubernetes 初学命令
  • PostgreSQL10 物理流复制实战:构建高可用数据库架构!
  • 建易WordPress
  • 基于PHP+MySQL校园新闻管理系统设计与实现
  • 如何在Windows环境下安装Docker
  • Mysql-如何理解事务?
  • Vue 3 状态管理实战:构建用户登录注册功能 - 掌握 Vuex 集中管理应用状态
  • I/O多路转接之select:定义、原理及应用场景
  • git rebase 和 merge的区别
  • sklearn中的决策树-分类树:泰坦尼克号生存预测
  • 全面了解机器学习:监督、无监督、半监督、深度和强化学习