菜单

Administrator
发布于 2026-10-09 / 3 阅读
0
0

Linux 学习笔记 L6:权限与用户

刚学会网络诊断,这篇讲 Linux 里最有特色、也最容易踩坑的一块:权限。Windows 上你双击就能运行的东西,在 Linux 上经常报 Permission denied,别慌,这不是 bug,这是 Linux 在保护你。搞懂这篇,你才算真正入门了 Linux 的思维方式。

先理解:为什么 Linux 这么"较真"

Linux 生来就是多用户系统。一台服务器上可能同时有几十个用户登录,每个人只能动自己的东西,动不了别人的,更动不了系统文件。权限就是这套规则的执行者。

就算你的 VPS 只有你一个人用,这套机制也在默默工作:网站进程以低权限用户运行,被黑了也翻不起大浪;系统文件普通用户改不了,误操作也删不掉。

记住一句话:在 Linux 里,每个文件都有主人,每个主人都有地盘。

ls -l:读懂那串神秘的字母

ls -l /home
drwxr-xr-x 2 chris chris 4096 10-09 11:20 notes
-rw-r--r-- 1 chris chris  220 10-09 11:20 hello.txt
-rwxr-xr-x 1 chris chris  120 10-09 11:20 deploy.sh

第一列就是权限。拆开看 drwxr-xr-x:d=文件类型(目录),rwx=主人可读可写可执行,r-x=组可读可执行,r-x=其他人可读可执行。

rwx 对文件和目录意思完全不一样

权限

对文件

对目录

r

可以读内容

可以列出文件名(ls)

w

可以改内容

可以创建/删除文件

x

可以执行

可以 cd 进去

重点:目录没有 x 进都进不去;删文件看的是目录的 w,不是文件的 w。

chmod 数字模式:421 速记法

r=4,w=2,x=1。rwx=7,rw-=6,r--=4。

chmod 755 script.sh    # 自己全权,别人能看能跑
chmod 644 notes.txt    # 自己读写,别人只读
chmod 600 id_rsa       # 私钥:只有自己能看
chmod 700 ~/.ssh       # 私密目录:只有自己能进

SSH 私钥必须是 600,太开放 SSH 会拒绝使用。

chmod 符号模式:精细微调

chmod u+x deploy.sh      # 只给主人加执行权限
chmod g-w notes.txt      # 拿掉组的写权限
chmod o-r secret.txt     # 别人不许看

u=主人 g=组 o=其他人 a=所有,+=加上 -=拿掉 ==设为。

chown / chgrp:换主人

sudo chown nginx:nginx /var/www/html/index.html
sudo chown -R nginx:nginx /var/www/html/

网站 403 十有八九是主人不对,改成 nginx(或 www-data)就好。

sudo:为什么不直接用 root

sudo apt update        # 临时提权执行一条命令
sudo usermod -aG sudo newuser   # 给新用户 sudo 权限(别漏 -a)

umask:新建文件的默认权限

umask
0022

目录默认 755,文件默认 644。umask 077 则新建文件默认 600。

实战:Permission denied 三连查

ls -l deploy.sh          # 1. 有 x 吗?没有就 chmod +x
chmod +x deploy.sh
./deploy.sh

实战:网站 403 排查套餐

sudo chown -R nginx:nginx /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;

小结

命令

作用

ls -l

看权限主人组

chmod 755

数字模式改权限

chmod u+x

符号模式微调

chown

改主人

sudo

临时提权

umask

默认权限掩码

下一篇 L7:软件包管理——apt 的 update 和 upgrade 区别,换源加速,一条命令装 Nginx。


评论