下载工作台
Linux 与 Shell 入门

用户、权限与 sudo

试读上半部分 · 解锁后可读全文

第 3 章 · 用户、权限与 sudo

本章目标:理解 Linux 多用户模型rwx 权限位;熟练使用 chmod/chown;配置 sudo 安全提权;排查 Permission denied;为 api-go-demo 服务账号与配置目录权限打基础。

学时建议:4 小时(含 2 小时跟练)

前置:完成 linux-shell ch02;能在终端创建文件与目录。


3.1 场景说明:部署脚本为何无法写入 /opt

团队在 ~/dev-workspace/shop-demo 编写 scripts/deploy.sh,目标安装到 /opt/api-go-demo/bin/api。普通用户无权写 /opt,报错 Permission denied。生产环境 api-go-demo 由专用用户 api 运行:二进制 root 安装、进程非 root——本章学会读权限、改权限、何时 sudo

开发者 alice ──► 家目录 ~/dev-workspace  (rwx)
                    │
                    ▼ sudo 仅安装阶段
              /opt/api-go-demo/bin/api   (root:root 755)
                    │
                    ▼ 运行
              进程用户 api               (读 bin、写 logs)

3.2 用户、组与 id

Linux 每个进程以某个 UID 运行;文件有 属主属组

whoami
id
id alice
grep '^alice:' /etc/passwd
groups
/etc/passwd 字段示例含义
用户名alice登录名
UID10000=root
GID1000主组
家目录/home/alice~
Shell/bin/bash默认解释器

系统用户www-datanobody、服务账号 UID 通常 <1000,无登录 Shell。


3.3 ls -l 与 rwx 解读

cd ~/dev-workspace/shop-demo
mkdir -p configs scripts
touch configs/app.env
echo '#!/bin/bash' > scripts/deploy.sh
chmod 644 configs/app.env
chmod 755 scripts/deploy.sh
ls -l configs/app.env scripts/deploy.sh
ls -ld configs scripts

示例:-rw-r--r-- 1 alice alice ... app.env

位段含义
第1字符- 文件,d 目录,l 符号链接
2-4属主 u:rwx
5-7属组 g
8-10其他 o

数字 chmod

数字二进制权限
7111rwx
6110rw-
5101r-x
4100r--
chmod 600 configs/app.env      # 仅属主读写
chmod 750 scripts/deploy.sh    # 属主全、组读执行

3.4 目录权限:x 表示「可进入」

对目录,x 表示能否 cd 进入、能否访问其下 inode(还需文件自身权限)。

mkdir -p private
chmod 700 private
echo 'DB_PASS=teaching-only' > private/.env
ls -ld private
# 其他用户 ls private 应失败
禁止 chmod 777 生产目录;ops-deploy 安全基线要求最小权限。

3.5 chown 与部署属主

sudo chown root:root scripts/deploy.sh
sudo chown root:api configs/app.env   # 组 api 可读(需存在 api 组,教学可跳过)
ls -l scripts/deploy.sh
路径建议属主权限说明
/opt/.../bin/apiroot:root755防篡改
configs/*.yamlroot:api640含 DSN
logs/api:api755进程写日志

对照 gin-web ch14 Docker:容器内 non-root 用户对挂载卷需 w 权限。


3.6 sudo 提权

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。