权限基础概念
-
权限类型
- 读(r):查看文件内容或目录列表
- 写(w):修改文件或增删目录内容
- 执行(x):运行程序或进入目录
- 数字表示:
r=4
,w=2
,x=1
(如rwxr-xr--
=754
)
-
权限对象
- 用户(Owner):文件创建者
- 组(Group):共享权限的用户组
- 其他(Others):系统所有其他用户
查看权限
使用 ls -l
命令查看:
$ ls -l /home/example.txt -rw-r--r-- 1 user group 1024 Jan 1 10:00 example.txt
-rw-r--r--
:- 首位 表示文件(
d
为目录) - 后续三组:用户(rw-)、组(r–)、其他(r–)
- 首位 表示文件(
修改权限(chmod命令)
方法1:符号模式(直观)
# 目录递归设置:用户读写执行,组读执行,其他无权限
$ chmod -R u=rwx,g=rx,o= private_dir/
方法2:数字模式(高效)
# 设置 example.txt 为 rw-r-----(用户读写,组读,其他无) $ chmod 640 example.txt # 目录递归设置 755(用户rwx,组和其他rx) $ chmod -R 755 public_dir/
修改所有者和组
-
更改文件所有者(chown)
# 将文件所有者改为 newuser $ sudo chown newuser example.txt # 递归修改目录所有者及组 $ sudo chown -R newuser:newgroup /data/
-
更改文件所属组(chgrp)
$ sudo chgrp developers project.conf
设置默认权限(umask)
- umask值 决定新建文件的默认权限(如
umask 022
使文件权限为644
,目录为755
) - 永久生效:编辑
/etc/profile
或用户~/.bashrc
高级权限设置
-
SUID(Set User ID)
- 文件运行时以所有者身份执行
$ chmod u+s /usr/bin/script.sh # 设置SUID(数字模式4000)
- 文件运行时以所有者身份执行
-
SGID(Set Group ID)
- 目录中新文件继承父目录组
$ chmod g+s /shared/ # 设置SGID(数字模式2000)
- 目录中新文件继承父目录组
-
粘滞位(Sticky Bit)
- 仅文件所有者可删除目录内文件(如
/tmp
)$ chmod +t /public_upload/ # 设置粘滞位(数字模式1000)
- 仅文件所有者可删除目录内文件(如
安全实践建议
- 最小权限原则:用户只赋予必要权限(避免
777
) - 关键目录权限:
/etc/
:755
(root所有)- 用户家目录:
700
- 定期审计:
# 查找全局可写文件 $ find / -type f -perm -o+w -exec ls -l {} \;
权威参考来源:
- Linux官方文档:The Linux Documentation Project
- POSIX标准文件权限规范(IEEE Std 1003.1)
- Red Hat系统管理指南(Red Hat Enterprise Linux Documentation)
- Ubuntu社区维基:File Permissions
通过精确控制权限,可有效隔离用户操作空间,降低误操作或恶意行为风险,建议结合业务场景设计权限策略,并定期审查关键文件权限设置。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7198.html