Linux 权限与 Chmod 基础
在 Linux 和 Unix
系统中,每个文件和目录都有一组访问权限,用于控制谁可以读取、写入或执行它们。chmod (Change Mode) 是用来修改这些权限的命令。
读取 (Read, r)
允许读取文件内容,或列出目录中的文件。
4
写入 (Write, w)
允许修改文件内容,或在目录中创建/删除文件。
2
执行 (Execute, x)
允许作为程序运行文件,或进入目录。
1
常用权限代码对照表
| 权限值 | 符号表示 | 常见用途 |
|---|---|---|
| 777 | rwxrwxrwx | 所有用户拥有全部权限(不安全,慎用)。 |
| 755 | rwxr-xr-x | 所有者可读写执行,其他人只读执行(常见于 Web 目录/脚本)。 |
| 644 | rw-r--r-- | 所有者可读写,其他人只读(常见于普通文件/配置文件)。 |
| 600 | rw------- | 仅所有者可读写(常见于 SSH 密钥、私密文档)。 |
| 400 | r-------- | 仅所有者可读(只读保护)。 |
常见问题
什么是递归 (Recursive) 权限?
当您对目录使用
-R (Recursive)
选项时,该目录下的所有文件和子目录都会被赋予相同的权限。例如,chmod -R 755 /var/www 会将 /var/www 及其内部所有内容都设为 755。
Web 服务器文件的最佳权限是什么?
通常建议目录使用 755,普通文件 (如 PHP, HTML) 使用 644,而配置文件 (如 wp-config.php)
应该更严格,如 600 或 400。尽量避免在生产环境使用 777。
Chmod +x 是什么意思?
chmod +x script.sh 是符号模式写法,意思是给所有用户(所有者、组、其他人)添加“执行”权限。它是让脚本可直接运行的常用命令。
如何只让文件所有者拥有权限?
使用 600 (rw-------) 或 700
(rwx------)。这表示只有文件的拥有者可以读/写(或执行),组和其他用户没有任何权限。
目录没有执行权限 (x) 会怎样?
对于目录来说,执行权限 (x) 意味着“进入”或许可。如果你对目录没有 x 权限,你将无法
cd 进入该目录,也无法访问其内部文件的元数据,即使你有读权限也是如此。
Sudo chmod 是什么?
如果文件不属于你(例如系统文件),你需要超级用户权限才能修改它。这时需要在命令前加
sudo,如
sudo chmod 755 /etc/init.d/myscript。
Setuid 和 Setgid 是什么?
这是一些高级权限位。Setuid (4) 允许用户以文件拥有者的身份运行程序;Setgid (2) 则是以组的身份。本基础计算器目前主要处理标准的读写执行权限。
权限数字是怎么算出来的?
它是八进制加法:r=4, w=2, x=1。例如 7 = 4+2+1 (rwx),5 = 4+0+1 (r-x)。三个数字分别代表所有者、组和其他人的权限总和。