linux阶段考核作品

如何同时添加多个用户:使用 for 循环
for user in user1 user2 user3 user4; do
    sudo useradd -m -s /bin/bash $user
    echo "设置 $user 的密码:"
    sudo passwd $user
done
修改用户权限的方法

1. 使用 chmod 命令(最常用)

数字表示法(八进制)

bash

# 基本格式
chmod [选项] 数字模式 文件/目录

# 常用权限示例
chmod 755 filename      # rwxr-xr-x
chmod 644 filename      # rw-r--r--
chmod 600 filename      # rw-------
chmod 777 filename      # rwxrwxrwx
chmod 750 filename      # rwxr-x---

# 递归修改目录及其内容
chmod -R 755 directory/

符号表示法

bash

# 基本格式:who operator permission
chmod [ugoa][+-=][rwx] 文件/目录

# 添加权限
chmod u+x filename      # 给所有者添加执行权限
chmod g+w filename      # 给所属组添加写权限
chmod o+r filename      # 给其他用户添加读权限
chmod a+x filename      # 给所有用户添加执行权限

# 移除权限
chmod u-w filename      # 移除所有者的写权限
chmod g-x filename      # 移除所属组的执行权限
chmod o-r filename      # 移除其他用户的读权限

# 设置精确权限
chmod u=rwx,g=rx,o= filename    # rwxr-x---
chmod a=rw filename             # 所有用户都是读写权限

基础部分

  1. su、su -、sudo之间的区别
    1. su基本用法:
# 切换到root用户(需要root密码)
su

# 切换到其他用户(需要目标用户密码)
su username

​ 特点:

  • 不加载目标用户的环境变量
  • 保持当前工作目录不变
  • 继承当前shell的环境变量
  • 需要知道目标用户的密码
    2. su - 基本用法:
# 切换到root用户并加载环境
su -

# 切换到其他用户并加载环境
su - usernam

​ 特点:

  • 完全加载目标用户的环境变量
  • 切换到目标用户的家目录
  • 创建一个新的登录会话
  • 需要知道目标用户的密码
    3. sudo 基本用法:
# 以root权限执行单条命令
sudo command

# 以其他用户权限执行命令
sudo -u username command

# 启动root shell(不推荐经常使用)
sudo -i
sudo -s

​ 特点:

- 使用当前的密码,不是root密码
- 细粒度的权限控制(通过/etc/sudoers配置)
- 命令级权限提升
- 记录审计日志
  1. 软链接和硬链接的创建

创建命令:

  • 硬链接:ln source target
  • 软链接:ln -s source target

关键区别:

  • 硬链接共享 inode,删除源文件不影响链接
  • 软链接是独立文件,存储目标路径,源文件删除后链接失效
  • 硬链接不能跨文件系统,不能链接目录
  • 软链接可以跨文件系统,可以链接目录
  1. docker save 和 load 的区别

. docker save - 导出镜像

基本语法

bash

docker save [选项] 镜像名[:标签] > 输出文件.tar
# 或
docker save [选项] -o 输出文件.tar 镜像名[:标签]

常用选项

  • -o, --output:指定输出文件
  • 多个镜像可以一起导出

使用示例

导出单个镜像

bash

# 方法1:使用重定向
docker save ubuntu:20.04 > ubuntu-20.04.tar

# 方法2:使用-o参数
docker save -o ubuntu-20.04.tar ubuntu:20.04

# 导出到指定目录
docker save -o /backup/nginx-latest.tar nginx:latest
导出多个镜像到一个文件

bash

# 导出多个镜像
docker save -o my-images.tar ubuntu:20.04 nginx:latest redis:alpine

# 或者使用镜像ID
docker save -o all-images.tar a1b2c3d4 e5f6g7h8 i9j0k1l2
导出所有镜像

bash

# 导出所有镜像到一个文件
docker save -o all-docker-images.tar $(docker images -q)

# 或者逐个导出
docker images --format "{{.Repository}}:{{.Tag}}" | xargs -I {} docker save -o {}.tar {}

验证导出文件

bash

# 查看tar文件内容
tar -tf ubuntu-20.04.tar

# 检查文件大小
ls -lh ubuntu-20.04.tar

# 验证文件完整性
file ubuntu-20.04.tar

2. docker load - 导入镜像

基本语法

bash

docker load < 输入文件.tar
# 或
docker load -i 输入文件.tar

常用选项

  • -i, --input:指定输入文件
  • -q, --quiet:安静模式,不输出详细信息

使用示例

导入镜像

bash

# 方法1:使用重定向
docker load < ubuntu-20.04.tar

# 方法2:使用-i参数
docker load -i ubuntu-20.04.tar

# 安静模式导入
docker load -q -i nginx-latest.tar
从指定目录导入

bash

# 导入指定文件
docker load -i /backup/ubuntu-20.04.tar

# 导入多个文件
for file in /backup/*.tar; do
    echo "导入: $file"
    docker load -i "$file"
done
  1. 匿名挂载和具名挂载

1. 匿名挂载 (Anonymous Volumes)

定义

  • 不指定名称的挂载
  • 由 Docker 自动生成随机名称
  • 难以管理和重复使用

创建匿名挂载

bash

# 语法:-v /容器内路径
docker run -v /container/path image_name

# 示例:匿名挂载
docker run -d --name nginx1 -v /usr/share/nginx/html nginx:latest

# 查看生成的匿名卷
docker volume ls

输出示例:

text

DRIVER    VOLUME NAME
local     1a2b3c4d5e6f7890abcdef1234567890...

2. 具名挂载 (Named Volumes)

定义

  • 指定具体名称的挂载
  • 易于识别和管理
  • 可以重复使用和共享

创建具名挂载

bash

# 语法:-v 卷名:/容器内路径
docker run -v volume_name:/container/path image_name

# 示例:具名挂载
docker run -d --name nginx2 -v nginx_html:/usr/share/nginx/html nginx:latest

# 查看具名卷
docker volume ls

输出示例:

text

DRIVER    VOLUME NAME
local     nginx_html

更多推荐