权限位的三段式
$ ls -l deploy.sh
-rwxr-xr-- 1 app deploy 1024 Mar 18 10:00 deploy.sh
│└┬┘ └┬┘ └┬┘
│ │ │ └── 其他人 others:只读
│ │ └────── 属组 deploy:读 + 执行
│ └────────── 属主 app:读 + 写 + 执行
└──────────── 类型:- 文件 d 目录 l 软链接
$ chown app:deploy deploy.sh # 改属主与属组(root 权限)九个权限位其实只回答三个问题:属主能干什么、同组能干什么、其他人能干什么。排查「Permission denied」时,先 ls -l 看属主属组,再 id 看自己是谁,八成当场破案。
目录的 rwx 和文件不一样
这是权限理解的第一道坎,两套含义背下来:
文件:r 看内容、w 改内容、x 当程序执行。
目录:r 列目录(ls)、w 在目录里增删文件、x 进入目录(cd)。
由此得出经典面试题的答案:文件自己没开 w,为什么还是被删了?——删除看的是它所在目录的 w 权限。目录可写,里面的文件一律可删,文件自己管不着自己的「户口」。
数字法:755、644 与它们的场景
r=4 w=2 x=1,每组三位相加
755 = rwxr-xr-x 目录、脚本、程序(自己全权,别人只读 + 执行)
644 = rw-r--r-- 配置文件、普通文件(自己可写,别人只读)
600 = rw------- 私钥、证书(只有自己能碰)
$ chmod 755 deploy.sh
$ chmod +x deploy.sh # 懒人版:只补执行位特别注意:ssh 私钥必须是 600,权限太开放 ssh 会直接拒绝使用并提示 UNPROTECTED PRIVATE KEY——这是新手配置密钥登录失败的高频原因。
sudo:有边界地提权
$ sudo systemctl restart nginx # 以 root 跑这一条命令
$ sudo -l # 查看当前用户被允许的 sudo 清单
$ sudo -i # 切到 root shell(谨慎,用完 exit)sudo 规则配在 /etc/sudoers,必须用 visudo 编辑——它保存前会做语法检查,直接改文件一旦写错会把所有人锁在 root 门外。生产惯例:日常用普通账号,需要时 sudo 单条提权,每一步都留痕可审计,比长期挂在 root 下安全得多。
最小权限三军规
一、服务用专用用户跑——nginx 用 www-data,自己的应用建 app 用户,坚决不用 root。二、chmod 777 是偷懒的毒药——「先通再说」的代价是任何人都能改你的文件,配合公网可访问目录就是现成的 getshell 通道。三、排查权限问题先看三样——ls -l 的属主属组、id 看自己、sudo -l 看能提什么权。下一篇:进程管理——top 里 load average 三个数字怎么读,kill -15 和 -9 的区别什么时候会要命。
评论 (0)