Linux 运维学习笔记:Docker NFS 数据卷与权限管理
·
一、Docker NFS 数据卷
1. 配置 Docker 软件源(阿里云)
cd /etc/yum.repos.d/
rm -rf docker-ce.repo
添加阿里云 Docker CE 源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2. 创建 NFS 类型的 Docker 卷
通用语法:
docker volume create --driver local \
--opt type=nfs \
--opt o=addr=<NFS服务器地址>,nolock,soft,rw,sync \
--opt device=:<共享目录全路径> \
<卷名>
示例 1:挂载 192.168.1.133 的 /web 目录
docker volume create --driver local \
--opt type=nfs \
--opt o=addr=192.168.1.133,nolock,soft,rw,sync \
--opt device=:/web \
nfs-web-1
示例 2:只读挂载 192.168.10.229 的 /data/nfs_share
docker volume create --driver local \
--opt type=nfs \
--opt o=addr=192.168.10.229,nolock,soft,ro,sync \
--opt device=:/data/nfs_share \
nfs-web-1
3. 查看与验证 NFS 卷
# 列出所有卷
docker volume ls
查看卷详细信息
docker volume inspect nfs-web-1
输出示例:
[
{
"Driver": "local",
"Name": "nfs-web-1",
"Options": {
"device": "/data/nfs_share",
"o": "addr=192.168.10.229,nolock,soft,ro,sync",
"type": "nfs"
}
}
]
4. 容器使用 NFS 卷
docker run -d --name lizl-1 -p 9005:80 \
-v hunan:/usr/share/nginx/html \
nginx:1.28.3
二、Linux 用户与权限基础
1. 核心概念
| 英文 | 中文 |
|---|---|
| permission / privilege | 权限 |
| permit | 允许 |
| deny / denied | 拒绝 |
| access | 访问 |
| Operations (Ops) | 运维 |
| DevOps | 开发运维工程师 |
Linux 权限模型: 用户 → 归属(user/group)→ 权限(rwx)
2. 磁盘到文件系统的流程
磁盘 → 分区 → 格式化(创建文件系统)→ 挂载 → 使用
三、文件权限管理
1. chmod — 修改文件权限
符号模式:
# 递归修改:所有者rwx,组rx,其他无权限
chmod -R u=rwx,g=rx,o=--- /laiheng/
数字模式(八进制):
r= 4,w= 2,x= 1rwxrwxrwx= 777rw-r--r--= 644rwxr-xr-x= 755
特殊:粘滞位
chmod o+t /huochezhan/ # 其他用户位加粘滞位
# 结果:drwxrwxrwt
2. chown — 修改文件归属
# 同时修改所有者和所属组
chown feng:feng /laiheng/
只修改所属组
chown :wenyao /laiheng
文件属性包括: 权限、大小、所有者/组、时间
3. touch — 修改文件时间戳
atime:访问时间(access time)mtime:内容修改时间(modify time)ctime:属性变更时间(change time)
四、用户与组管理
1. 常用命令
| 命令 | 作用 |
|---|---|
useradd | 新建用户 |
userdel -r | 删除用户(连同家目录) |
groupadd | 新建组 |
groupdel | 删除组 |
passwd | 修改密码 |
chpasswd | 批量改密码(管道方式) |
usermod | 修改用户属性 |
id | 查看用户 uid/gid/组信息 |
newgrp | 临时切换有效组(立即生效) |
2. 相关配置文件
| 文件 | 作用 |
|---|---|
/etc/passwd | 用户基本信息(x 是密码占位符) |
/etc/shadow | 用户密码(加密存储) |
/etc/group | 组信息 |
3. useradd 完整参数
useradd -g wudang \ # 主要组 primary group
-G shaolin \ # 次要组/附属组
-s /bin/bash \ # 指定 shell
-d /home/wuji \ # 指定家目录
-c "mingjiao master" \ # 描述信息(comment)
zhangwuji
/etc/passwd 字段示例:
laiheng:x:1005:1006::/home/laiheng:/bin/bash
4. 修改用户组
# 添加附属组(会覆盖原有附属组,多个用逗号分隔)
usermod -G wudang lizl
usermod -G shaolin,wudang lizl
修改主要组(-g 小写)
usermod -g shaolin lizl
注意:
usermod修改的是/etc/passwd配置,需重新登录才生效;newgrp是临时切换,立即生效但只对当前 shell 有效。
5. 设置密码
# 交互式
passwd lizl
非交互式(适合脚本批量)
echo "caoeq:123456" | chpasswd
五、ACL 访问控制列表
ACL 可以对单个用户或单个组设置独立权限,突破传统 ugo 三类权限的限制。
1. 安装 ACL 工具
# 查询 setfacl 由哪个包提供
yum provides setfacl
安装
yum install acl -y
2. setfacl — 设置 ACL 规则
# -m 修改/添加规则
# 给用户 laiheng 设置 rwx
setfacl -m u:laiheng:rwx /baoxiang
给用户 lizl 设置无权限(拒绝)
setfacl -m u:lizl:--- /baoxiang
给组 wudang 设置 rwx
setfacl -m g:wudang:rwx /baoxiang/
-x 删除某条规则
setfacl -x u:laiheng /baoxiang
3. getfacl — 查看 ACL 规则
getfacl /baoxiang
输出示例:
# file: baoxiang
# owner: root
# group: root
user::rwx
user:laiheng:rwx
user:lizl:---
group::r-x
group:wudang:rwx
group:shaolin:rwx
mask::rwx
other::r-x
4. 权限优先级(重要)
拒绝权限高于一切
用户权限检查顺序:
- 用户自身的 ACL 规则(user:xxx)→ 最高优先级
- 所属所有组的 ACL 规则(取并集,有拒绝则拒绝)
- 文件所属组(group::)
- other 其他用户
用户可以加入多个组,继承所有组的权限;但只要用户自身被显式拒绝(---),组权限再高也无效。
六、特殊权限位
1. SUID(Set User ID)— 4xxx
- 作用:执行文件时,以文件所有者的身份运行,而不是执行者身份
- 标记:
-rwsr-xr-x(所有者 x 位变成 s)
chmod 4755 /usr/bin/mkdir
# 结果:-rwsr-xr-x
2. SGID(Set Group ID)— 2xxx
- 作用:执行文件时,以文件所属组的身份运行;对目录则新建文件继承目录的组
- 标记:
-rwxr-sr-x(组 x 位变成 s)
chmod 2755 /usr/bin/mkdir
# 结果:-rwxr-sr-x
3. SUID + SGID 同时设置
chmod 6755 /usr/bin/mkdir
# 结果:-rwsr-sr-x(风险极大,慎用)
4. 恢复正常权限
chmod 0755 /usr/bin/mkdir
# 结果:-rwxr-xr-x
5. Sticky Bit 粘滞位 — 1xxx(o+t)
- 作用: 对目录设置后,任何用户只能删除自己创建的文件/目录,不能删除别人的
- 标记:
drwxrwxrwt(其他用户 x 位变成 t) - 典型目录:
/tmp
# 设置粘滞位
chmod o+t /huochezhan/
# 或 chmod 1777 /huochezhan/
效果:laiheng 创建的 xiaolai 目录,lizl 无法删除
rm: cannot remove 'xiaolai': Operation not permitted
七、sudo 授权
1. sudo 是什么
root 用户可以授权普通用户执行高权限命令(如 useradd、yum 等)。
配置文件:/etc/sudoers
2. sudoers 规则格式
用户/组 主机=(运行身份) 允许的命令
示例解读:
root ALL=(ALL) ALL
- 第一个
ALL:在所有主机上生效 (ALL):可以切换成任意用户/组执行- 最后一个
ALL:允许执行所有命令
3. 授权单个用户所有权限
# 编辑 /etc/sudoers,添加:
caoeq ALL=(ALL) ALL
4. 授权单个用户指定命令
# chenxingyu 只能执行 useradd 和 userdel
chenxingyu ALL=(ALL) /usr/sbin/useradd, /usr/sbin/userdel
注意: 命令必须写绝对路径
5. 授权整个组
# % 开头表示组
%sanchuang ALL=(ALL) /usr/sbin/useradd, /usr/sbin/userdel
6. 命令别名(Cmnd_Alias)
把多条命令打包成一个别名,方便复用:
# 定义别名
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
Cmnd_Alias USERM = /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/groupadd, /usr/sbin/groupdel, /usr/sbin/usermod
使用别名
%sanchuang ALL=(ALL) USERM
7. 使用 sudo
# 普通用户加 sudo 执行
sudo useradd liupeng
首次使用会有经典提示:
1) 尊重他人隐私
2) 三思而后行
3) 能力越大责任越大
八、Shell 相关
1. Shell 是什么
Shell 是命令解释器,介于用户和系统内核之间:
- 接收用户输入的命令(ll、cd 等)
- 解释并查找命令
- 交给内核执行
- 把结果输出给用户
bash 是最常用的 shell。
2. 常见 shell 路径
/bin/bash
更多推荐


所有评论(0)