一、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 = 1
  • rwxrwxrwx = 777
  • rw-r--r-- = 644
  • rwxr-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. 权限优先级(重要)

拒绝权限高于一切

用户权限检查顺序:

  1. 用户自身的 ACL 规则(user:xxx)→ 最高优先级
  2. 所属所有组的 ACL 规则(取并集,有拒绝则拒绝)
  3. 文件所属组(group::)
  4. 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

更多推荐