4.7 KiB
4.7 KiB
1、文件权限概览
Linux 文件权限控制的核心对象有三类:
u:属主(user)g:属组(group)o:其他用户(others)
对应的基本权限有三种:
r:读,值为 4w:写,值为 2x:执行,值为 1
权限控制是 Linux 安全模型的基础之一,和文件访问、脚本执行、目录操作都直接相关。
2、文件权限与目录权限的区别
2.1 文件权限
对普通文件来说:
r:可以读取文件内容w:可以修改文件内容x:可以把该文件作为程序执行
2.2 目录权限
对目录来说,权限含义和普通文件不完全一样:
r:可以查看目录中的文件名列表w:可以在目录中创建、删除、重命名文件x:可以进入目录,也可以访问目录项的元数据
目录权限是很多初学者最容易搞混的地方。
3、ls -l 权限格式
root@lzc:/var/log# ls -l
-rw-r--r-- 1 root root 0 Dec 5 00:00 alternatives.log
这一行的主要含义:
-:文件类型,表示普通文件rw-:属主权限r--:属组权限r--:其他用户权限1:硬链接数root:属主root:属组0:文件大小Dec 5 00:00:最近修改时间alternatives.log:文件名
4、修改属主和属组
4.1 chown
用于修改文件属主,也可以同时修改属组。
chown root:root fileName
表示把文件的属主和属组都改为 root。
常见选项:
-R:递归处理目录及其内部文件
4.2 chgrp
用于单独修改文件属组。
常见选项:
-R:递归处理
示例:
chgrp devops fileName
5、修改权限 chmod
chmod 用于修改文件或目录权限。
5.1 数字方式
常见组合:
7=rwx6=rw-5=r-x4=r--
例如:
chmod 644 file.txt
chmod 755 script.sh
5.2 符号方式
可以使用 u、g、o、a 搭配 +、-、= 设置权限。
示例:
chmod u+x script.sh
chmod g-w file.txt
chmod o-r file.txt
5.3 递归修改
chmod -R 755 dirName
对目录递归改权限时要非常谨慎,避免把文件和目录都改成不合适的权限。
6、默认权限 umask
umask 决定新建文件和目录时默认去掉哪些权限。
6.1 常见规则
- 文件默认基准通常是
666 - 目录默认基准通常是
777
因此:
- 文件默认权限 ≈
666 - umask - 目录默认权限 ≈
777 - umask
6.2 常见默认值
root常见默认值:022- 普通用户常见默认值:
002或022
6.3 永久生效
如果想长期修改 umask,通常写入:
/etc/profile~/.bashrc~/.profile
具体取决于系统和登录方式。
7、特殊权限
除了普通的 rwx 外,Linux 还有 3 类常见特殊权限:
- SUID
- SGID
- Sticky Bit
7.1 SUID
SUID 主要作用在可执行文件上。
效果:普通用户执行该程序时,会临时以文件属主的身份运行。
典型例子:
ls -l /bin/passwd
可能看到:
-rwsr-xr-x
其中属主执行位上的 s 就表示设置了 SUID。
7.2 SGID
SGID 有两种常见作用:
- 作用在可执行文件上:以文件属组身份运行
- 作用在目录上:新建文件会继承该目录的属组
这在团队共享目录里非常常见。
7.3 Sticky Bit
Sticky Bit 主要作用在目录上。
效果:目录中的文件通常只能被文件所有者或 root 删除。
典型例子:
ls -ld /tmp
可能看到:
drwxrwxrwt
最后的 t 就表示设置了 Sticky Bit。
8、特殊属性 chattr 与 lsattr
除了权限位外,Linux 还支持一些额外文件属性。
8.1 chattr
常见属性:
+i:不可删除、不可改名、不可修改+a:只能追加内容,不能覆盖或删除
示例:
chattr +i important.conf
chattr +a app.log
8.2 lsattr
用于查看文件特殊属性。
lsattr important.conf
9、常见运维建议
- 给脚本加执行权限前,先确认内容安全
- 不要随意对系统目录做递归
chmod -R 777 - 团队共享目录可考虑配合 SGID 使用
- 核心配置文件可结合
chattr +i防误删或误改 - 处理目录权限时,一定要先区分“文件权限”和“目录权限”
10、小结
rwx是 Linux 权限的基础- 文件权限和目录权限含义不同
chown、chgrp、chmod是最常见的权限管理命令umask决定新建文件和目录的默认权限- SUID、SGID、Sticky Bit 是高频特殊权限知识点
chattr和lsattr用于管理更细粒度的文件属性