chown · 转移主人
上游:ls(查看文件现在属于谁)· sudo(chown 几乎总是要 sudo)· chmod(权限已经设好,再设主人) 下游:systemctl(服务文件需要正确的主人) 参见:chmod(chmod 改权限,chown 改主人,两个是搭档)
一句话是什么
chown 把文件的主人从一个用户改成另一个用户——
就像房产转让,这个文件以后归谁管。
为什么需要它
Linux 每个文件都有一个主人(owner):
$ ls -la ~/mc-server/bedrock_server
-rwxr-xr-x 1 aaron aaron 120M bedrock_server
↑ ↑
主人 所在组大部分时候,你自己创建的文件,主人就是你自己。 但有几个场景需要改主人:
场景 1:用 sudo 创建的文件,主人会变成 root,你自己反而动不了:
sudo cp server.properties /etc/mc/
ls -la /etc/mc/server.properties
# -rw-r--r-- 1 root root server.properties
# 主人是 root,aaron 无法编辑场景 2:服务器程序需要用特定用户身份运行(安全隔离):
# Minecraft 服务器应该用 mc-user 运行,不是 root
sudo chown -R mc-user:mc-user ~/mc-server/核心用法
公式
sudo chown [新主人]:[新组] 文件或目录
常用命令表
| 操作 | 命令 | 说明 |
|---|---|---|
| 改主人 | sudo chown aaron 文件 | 改主人,组不变 |
| 同时改主人和组 | sudo chown aaron:aaron 文件 | 主人和组都改 |
| 递归改目录 | sudo chown -R aaron:aaron 目录/ | 目录及其所有内容 |
| 改回 root | sudo chown root:root 文件 | 还给系统管理 |
| 只改组 | sudo chown :组名 文件 | 主人不变,只改组 |
配合 chmod 使用
# 标准操作:先改主人,再设权限
sudo chown -R aaron:aaron ~/mc-server/
chmod -R 755 ~/mc-server/Linux 笑话
有个新手第一次搭服务器,每次都用 sudo 运行所有程序,
包括 Minecraft 服务器。
几周之后,他的 /home/aaron/ 目录长这样:
$ ls -la ~/ | head
drwxr-xr-x root root mc-server/
-rw-r--r-- root root server.log
-rw------- root root 我的笔记.txt他自己的文件,他自己打不开了。
cat ~/我的笔记.txt
# Permission denied全都是 root 的。他需要的命令是:
sudo chown -R aaron:aaron ~/把整个家目录还给自己。
教训:只在真正需要的地方用 sudo,
不然文件的主人会变成 root,你自己变成了客人。
例题精讲
📗 初探 Starter — 看清楚文件的主人
任务:查看不同文件的主人,理解主人概念。
# 查看你自己的文件
ls -la ~/学习基地/
# aaron aaron ... (你自己的)
# 查看系统文件
ls -la /etc/hosts
# root root ... (系统的)
# 查看 /tmp 里的文件
ls -la /tmp/
# 各种用户都有
# 查看当前登录用户是谁
whoami
# aaron
# 查看自己属于哪些组
groups
# aaron sudo你学到了什么:每个文件都有主人(owner)和所属组(group)。 系统文件属于 root,你的文件属于 aaron。
📘 应用 User — 修复 root 创建的文件
任务:用 sudo 复制一个文件之后,发现主人变成了 root,把它改回来。
# 模拟场景:用 sudo 创建一个文件
sudo bash -c 'echo "配置内容" > ~/练习/root-config.txt'
# 查看主人(变成 root 了)
ls -la ~/练习/root-config.txt
# -rw-r--r-- 1 root root root-config.txt
# 尝试修改(会失败)
echo "修改" >> ~/练习/root-config.txt
# Permission denied
# 改回 aaron
sudo chown aaron:aaron ~/练习/root-config.txt
# 验证
ls -la ~/练习/root-config.txt
# -rw-r--r-- 1 aaron aaron root-config.txt
# 现在可以修改了
echo "修改成功" >> ~/练习/root-config.txt你学到了什么:sudo 创建的文件归 root,用 chown 拿回来。
📙 管理 Admin — Minecraft 服务器权限完整设置
任务:给 mc-server 目录做完整的权限和主人设置。
# 假设服务器文件已经解压在 ~/mc-server/
# 第一步:查看当前状态
ls -la ~/mc-server/
# 第二步:确保整个目录属于 aaron
sudo chown -R aaron:aaron ~/mc-server/
# 第三步:设置目录权限(进入+读取+写入)
chmod 755 ~/mc-server/
# 第四步:设置主程序为可执行
chmod +x ~/mc-server/bedrock_server
# 第五步:配置文件只读(防止意外改动)
chmod 644 ~/mc-server/server.properties
chmod 644 ~/mc-server/whitelist.json
# 第六步:日志目录允许写入
chmod 755 ~/mc-server/logs/ 2>/dev/null || true
# 最终验证
ls -la ~/mc-server/
echo "主人确认:"
stat -c "%U:%G %n" ~/mc-server/bedrock_server你学到了什么:生产环境权限设置是 chown + chmod 组合拳,
而不是单独用一个命令。
官方文档参考
man chown # 完整手册
chown --help # 快速选项列表
chown user:group 文件;只改主人省略冒号后部分,只改组用:group。 在线:https://manpages.ubuntu.com/chown
节点链接
上游(先理解这些)
同层(权限体系的完整组合)
- chmod ← 一个改主人,一个改权限,两者是搭档
下游(正确的主人才能做这些)
- systemctl ← 系统服务需要特定用户运行
- shell-script ← 脚本的主人决定了谁能编辑它
实战
- Minecraft-Bedrock-Server ← 服务器文件权限配置的重要一步