权限基础概念
Linux为每个文件/目录定义三类用户:
- 所有者(Owner):文件创建者或指定用户
- 所属组(Group):共享权限的用户组
- 其他用户(Others):系统所有其他账户
权限类型分为三种:
- 读(r):查看文件内容/目录列表
- 写(w):修改文件/在目录增删文件
- 执行(x):运行程序/进入目录
查看当前权限
使用 ls -l
命令查看:
ls -l file.txt``` - **首段符号解析**: `-rw-r--r--` → `-`(文件类型)`rw-`(所有者权限)`r--`(组权限)`r--`(其他用户权限) --- ### **三、修改权限(chmod命令)** #### **1. 数字模式(推荐)** 权限用数字表示:`r=4`, `w=2`, `x=1`,组合相加: ```bash chmod 755 file.txt # 所有者:rwx(7),组:r-x(5),其他:r-x(5) chmod 644 dir/ # 所有者:rw(6),组:r(4),其他:r(4)
- 常用场景:
755
:可执行程序/目录644
:普通文件(禁止其他用户修改)
符号模式
通过 u/g/o/a
(用户/组/其他/所有)和 操作:
chmod u+x script.sh # 给所有者添加执行权限 chmod g-w file.txt # 移除组的写入权限 chmod o=r-- dir/ # 设置其他用户为只读
修改所有者与组
- 更改所有者(需
sudo
):sudo chown user1 file.txt # 设置所有者 sudo chown user1:group1 dir/ # 同时设置所有者和组
- 更改所属组:
sudo chgrp developers project/ # 将目录所属组设为developers
设置默认权限(umask)
umask
决定新建文件/目录的初始权限:
umask 022 # 默认值:文件权限=644,目录权限=755 umask 007 # 组和其他用户无权限(文件=660,目录=770)
- 计算规则:目录权限 =
777 - umask
,文件权限 =666 - umask
特殊权限
- SUID(
4xxx
):用户以所有者身份运行程序chmod 4755 /usr/bin/program # 设置SUID
- SGID(
2xxx
):目录中新文件继承组权限chmod 2775 shared_dir/ # 设置SGID
- 粘滞位(
1xxx
):仅所有者可删除目录内文件(如/tmp
)chmod 1777 public_upload/
安全实践与注意事项
- 避免过度授权:
- 禁止随意使用
chmod 777
,否则所有用户可任意修改文件。 - 目录需
+x
权限才能访问内部文件。
- 禁止随意使用
- 最小权限原则:
- 普通用户文件建议设为
644
,敏感数据用600
。
- 普通用户文件建议设为
- 特殊权限风险:
SUID/SGID程序需审计,避免提权漏洞。
- 递归修改:
- 批量修改目录权限时用
-R
参数:chmod -R 750 /data/ # 递归设置/data下所有内容
- 批量修改目录权限时用
引用说明: 基于Linux核心工具集(GNU coreutils)官方文档及Linux man手册(
man chmod
,man chown
,man umask
),权限设计遵循POSIX标准,适用于所有主流Linux发行版(Ubuntu/CentOS等)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7032.html