sudo?root?Linux 账号权限到底怎么回事
我第一次用 ssh 进入linux的世界时。刚想改个文件,就被 Linux 狠狠教育了:Permission denied我当时人都傻了:“我不是已经登录了吗?怎么还不让我动?”后来折腾了一圈才明白:Linux 的权限系统不是在恶心你,它是在救你命。如果你玩 VPS、搞服务器、装 Docker、搭网站,这篇文章你一定用得上。
全文省流:
以下为正文
1. Linux 里到底有哪些账号
Linux 里你做任何事情,背后都对应一个“身份”。
身份不同,权限不同。
常见账号主要分三类:a) root:Linux 的“上帝模式”
root 是系统里的超级管理员账号。它能做的事情包括但不限于:删除任何文件修改任何配置关闭任何服务格式化硬盘(真的)把系统搞成废铁(也是真的)root可以理解为:
“系统不会拦你,你做错了也不会提醒你。”
比如经典命令
rm -rf /
root 执行它,系统不会多说一句话。
所以 root 很强,也很危险。
b) 普通用户:最适合日常使用的账号普通用户权限有限,改不了系统核心目录。比如你试图编辑 /etc/hosts:
vim /etc/hosts
大概率会得到:
Permission denied
这不是 bug,而是 Linux 在告诉你:
“兄弟,这里不是你能随便改的地方。”
c) 系统用户:程序专属“打工人”你可能会在服务器里看到一些奇怪的账号:www-datamysqlredisnobody
这些不是给人登录用的,而是给服务运行用的。比如 Nginx 常用 www-data 身份运行。这么设计的意义是:
即使 nginx 被黑了,攻击者也只是 www-data 权限,没法直接把整个系统端走。
这就是运维圈天天挂在嘴边的四个字:最小权限原则
2. 为什么不建议用root
如果你问一个老运维“root 能不能用”,他通常会笑一下:
能用,但你别天天用。
原因主要有三条:
a)root 的“手滑成本”是毁灭级 普通用户误删文件,最多删掉自己目录。root 误删文件,那你删的不是文件,是未来的周末。比如:
rm -rf /var/log/*
日志全没了,排查问题直接瞎
b)root 是全世界爆破脚本最爱撞的账号 因为系统中几乎都存在root账号,本着有枣没枣打俩竿的原作,路过的扫描器都喜欢蹭一下
c)root 用久了,人会失去敬畏 root一旦用久了,就会觉得:
“哇,我好强。”
然后命令越来越随意: 直接删目录 直接改系统文件 直接覆盖配置 直接 kill -9
直到某天一个路径写错,服务器直接原地升天。
3. suodo是什么
sudo 可以理解成一句话:
“我现在是普通用户,但我临时借一下管理员权限。”
也就是说:你仍然是普通用户,只是这一条命令用管理员权限执行。比如安装软件:
sudo apt updatesudo apt install nginx
这就是 Linux 推荐的日常姿势:平时普通用户操作需要权限时 sudo 一下做完立刻回到普通状态
4.下篇预告
上手实验,充分理解权限