🏠 首页 攻略 Linux权限chmod是什么?一张图搞定所有文件权限

Linux权限chmod是什么?一张图搞定所有文件权限

Linux文件权限是新手最大的坑之一。本文用生活例子讲透rwx权限和chmod数字用法,彻底搞懂777、644、755是什么意思。

文件权限是什么?用小区门禁来理解

你有没有去过高档小区?

小区门口有门禁,只有业主能进。访客、外卖小哥、快递员,各有各的权限范围。

Linux 的文件权限就是这个逻辑。每个文件都有三个角色的访问权限:

  • 所有者(owner):文件的创建者,权限最大
  • 所属组(group):和文件所有者同组的人
  • 其他人(others):既不是所有者,也不在组里的所有人

怎么看文件权限?

在终端输入 ls -l,你会看到这样的输出:

-rwxr-xr--  1 alice  dev  4096  Aug 12 10:00 script.sh

最前面那串 -rwxr-xr-- 就是权限。拆开来看:

- rwx  r-x  r--
  ↑    ↑    ↑
 文件类型  所有者  所属组  其他人

第一个字符 - 表示普通文件(如果是 d 就是目录)。后面每3个一组,分别对应所有者、所属组、其他人。

每个位置上的字母含义:

字母含义能做什么
rread(读)查看文件内容
wwrite(写)修改、删除文件
xexecute(执行)运行这个程序
-无权限什么都做不了

举个例子:rwxr-xr--

  • 所有者 alice:可以读、写、执行 ✅
  • 所属组 dev:可以读、执行,但不能写 🔍▶️
  • 其他人:只能读 📖

数字权限是怎么回事?

你可能会看到 chmod 755 这样的命令,755 是什么?

每个字母对应一个数字:

权限字母二进制数字
读+写+执行rwx1117
读+执行r-x1015
读+写rw-1106
只读r–1004
写+执行-wx0113
-w-0102
执行–x0011
无权限0000

所以 755 = rwx(所有者)+ r-x(组)+ r-x(其他人)

644 = rw-(所有者)+ r--(组)+ r--(其他人)

最常见的三个数字:

权限含义
777所有人可读写执行(最危险,别随便用)
755所有者可写,其他人只读(常用在目录和脚本)
644所有者可读写,其他人只读(常用在普通文件)

chmod 常用命令

修改权限

# 给所有者添加执行权限
chmod u+x script.sh

# 给所有人添加读权限
chmod a+r config.txt

# 设置文件为644(所有者读写,其他人只读)
chmod 644 index.html

# 设置目录为755(所有者全权限,其他人读和执行)
chmod 755 /var/www/html

权限修饰符:

符号含义
u所有者(user)
g所属组(group)
o其他人(others)
a所有人(all)
+添加权限
-撤销权限
=精确设置权限

递归修改权限

# 修改目录下所有文件为644
chmod -R 644 /path/to/dir

# 修改目录下所有目录为755
find /path/to/dir -type d -exec chmod 755 {} \;

注意:-R 是递归,会把目录下所有文件和子目录的权限都改掉。慎用。

实际场景:部署网站时该怎么设?

这是最常见的问题。以 Nginx 托管的网站为例:

# 网站根目录:755(可以浏览但不能修改)
chmod 755 /var/www/html

# 网站文件:644(可以读但不能修改)
chmod 644 /var/www/html/index.html

# 需要上传的目录:777(能读能写能执行,但危险)
chmod 777 /var/www/html/uploads

安全建议:能用 644 就别用 777。777 意味着任何人都能删除、修改你的文件,黑客最喜欢这种目录。

常见误区

误区一:chmod 777 最方便

确实方便,但安全风险极高。你的文件可能被任何人删除或植入恶意代码。

误区二:数字权限和字母权限是两回事

不是的,它们只是同一件事的两种写法。chmod 755 filechmod u+rwx,g+rx,o+rx file 效果完全一样。

误区三:改了权限就万事大吉

权限只是第一道防线。更重要的是:你的服务器有没有开放不必要的端口?有没有弱密码?软件有没有及时更新?

总结

Linux 文件权限用三个字母 rwx 控制。每个角色(所有者、组、其他人)各有独立权限。

记住这三个数字就够了:

  • 755:目录权限,常见于网站根目录
  • 644:文件权限,常见于网页文件
  • 777:危险值,尽量别用

下次遇到权限问题,先 ls -l 看看当前权限,再想清楚谁需要什么权限,最后用 chmod 精确设置。

你可以现在打开终端,cd 到你的项目目录,输入 ls -l,看看那些 rwxr-xr-x 到底是什么意思。