diff --git a/readme.md b/readme.md deleted file mode 100644 index ca26671cbe94778d918c2cc673d931a63f61705e..0000000000000000000000000000000000000000 --- a/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -## 22级实施运维4班 Linux基础笔记 - -上课录屏地址:https://www.alipan.com/s/WN7Foe2SAwB \ No newline at end of file diff --git "a/\345\274\240\346\236\227\346\235\260/20240520_\345\210\235\350\257\206.md" "b/\345\274\240\346\236\227\346\235\260/20240520_\345\210\235\350\257\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..660d0b3d1ec2ce148b838ba4d9341f109f8a01ea --- /dev/null +++ "b/\345\274\240\346\236\227\346\235\260/20240520_\345\210\235\350\257\206.md" @@ -0,0 +1,29 @@ +# 初识 Linux + +## Linux 介绍 + +Linux 是一种开源的类 Unix 操作系统内核,由 Linus Torvalds 在 1991 年创建。与其他操作系统不同,Linux 内核的开发是通过全球志愿者合作的方式进行的。 + +Linux 操作系统具有很高的灵活性和可定制性,因此被广泛用于各种计算设备,从个人电脑到服务器、嵌入式系统、移动设备等。Linux 操作系统有许多不同的发行版,如 Ubuntu、Debian、Fedora、CentOS 等,它们在 Linux 内核的基础上添加了不同的软件包和配置,以满足不同用户和应用程序的需求。 + +## 常见的发行版 + +1. Ubuntu:基于 Debian 的一种用户友好的 Linux 发行版,适合桌面和服务器使用。 + +2. Debian:稳定性和安全性为重点的发行版,被许多其他 Linux 发行版作为基础。 + +3. Fedora:由 Red Hat 支持的发行版,注重最新的软件和技术。 + +4. CentOS:以稳定性和长期支持为目标的企业级 Linux 发行版,是 Red Hat Enterprise Linux (RHEL) 的免费重建版本。 + +## Linux 的主要功能与特定 + +1. 开源性:Linux 是开源软件,其源代码可以被任何人查看、修改和分发。这使得 Linux 具有透明性、可审计性和可定制性。 + +2. 多用户和多任务:Linux 支持多用户同时登录并在同一时间运行多个程序,每个用户都可以拥有自己的独立工作环境。 + +3. 稳定性和可靠性:Linux 内核经过长期发展和测试,具有出色的稳定性和可靠性,通常可以长时间运行而不需要重新启动。 + +4. 安全性:Linux 具有强大的安全特性,包括权限管理、防火墙、加密等,使其能够抵御许多常见的网络攻击和安全威胁。 + +5. 丰富的软件生态系统:Linux 拥有庞大的开源软件库,涵盖了几乎所有领域的应用程序和工具,包括办公套件、图形设计、编程开发、服务器应用等。 diff --git "a/\345\274\240\346\236\227\346\235\260/20240523_\345\237\272\347\241\200\346\214\207\344\273\244.md" "b/\345\274\240\346\236\227\346\235\260/20240523_\345\237\272\347\241\200\346\214\207\344\273\244.md" new file mode 100644 index 0000000000000000000000000000000000000000..af8c0b6260cacca552f7b49ae8b17dc5728d2726 --- /dev/null +++ "b/\345\274\240\346\236\227\346\235\260/20240523_\345\237\272\347\241\200\346\214\207\344\273\244.md" @@ -0,0 +1,80 @@ +# Debian 基础知识 + +1. 如何设置一个针对所有用户都生效的环境变量,请问应该放在哪个目录中? + + - 环境变量可以放在 `/etc/profile` 或 `/etc/environment` 文件中。这些文件的配置对所有用户都生效。 + +2. 如何设置一个针对当前 root 用户生效的环境变量,请问可以放在哪个文件中? + + - 可以放在 `~/.bashrc` 或 `~/.bash_profile` 文件中,具体文件取决于所使用的 shell。对于 root 用户,这些文件的路径是 `/root/.bashrc` 或 `/root/.bash_profile`。 + +3. ls 命令的作用是什么?常用的一些选项,及其意义具体是什么,常用用法又有哪些? + + - `ls` 命令用于列出目录内容。常用选项有: + - `-l`:长格式显示文件信息 + - `-a`:显示所有文件,包括隐藏文件 + - `-h`:以人类可读的方式显示文件大小 + - `-R`:递归显示目录下所有文件 + +4. 切换当前工作目录的命令是什么? + + - `cd` 命令用来切换当前工作目录。例如:`cd /home/user` 切换到 `/home/user` 目录。 + +5. 如何查看当前工作目录? + + - 使用 `pwd` 命令可以查看当前工作目录。 + +6. 如何创建一个文件,如何用批量创建 100 个文件? + + - 创建一个文件可以使用 `touch filename`。 + - 批量创建 100 个文件可以使用 `touch file{1..100}`。 + +7. 用户信息查看的命令是什么? + + - `id` 命令可以查看用户的 UID、GID 等信息。 + - `whoami` 命令显示当前用户的用户名。 + +8. 如何删除一个文件?如果这个文件失控,受机如何删除? + + - 使用 `rm filename` 可以删除文件。 + - 使用 `rm -r /file` 递归删除文件夹及文件夹下内文件 + +9. 如何创建一个文件夹?如何创建嵌套的文件夹? + + - 使用 `mkdir files` 可以创建文件夹。 + - 使用 `mkdir -p /root/abc/hello` 可以一次创建嵌套文件夹。 + +10. 查看文件内容的命令,可以用到哪些命令?它们有什么区别? + + - `cat`:显示整个文件内容 + - `less`:分页显示文件内容,可以上下滚动查看 + - `more`:分页显示文件内容,只能向下滚动查看 + - `head`:显示文件开头部分 + - `tail`:显示文件结尾部分 + +11. 如何复制一个文件?如何移动一整个文件夹?请举例说明 + + - 移动文件:`cp source destination`。例如:`cp file1 /home/user/` + - 移动文件夹:`mv source_directory destination_directory`。例如:`mv dir1 /home/user/` + +12. 如何批量使用相同的命令?使用超级管理员执行某个命令该怎么做? + + - 批量使用相同的命令可以用循环或使用 `xargs`。例如:`ls *.txt | xargs -n 1 -I {} mv {} /new_directory/` + - 使用超级管理员执行命令可以用 `sudo`。例如:`sudo command` + +13. 如何查看 IP 地址?这些信息可以从哪些命令中得来? + + - 使用 `ip address` 命令查看 IP 地址。 + +14. vim 有几种模式,这些模式分别可以做些什么?模式之间切换又分别如何切换? + + - Vim 有三种主要模式:普通模式、插入模式和命令模式: + - 普通模式:默认模式,可以执行命令 + - 插入模式:按 `i` 进入插入模式,输入文本 + - 命令模式:按 `:` 进入命令模式,可以执行保存、退出等命令 + - 切换方式:普通模式下按 `i` 进入插入模式,按 `Esc` 退出到普通模式,普通模式下按 `:` 进入命令模式 + +15. 如何鉴定本机是否联网?如何检测网络的连通性? + + - 使用 `ping` 命令检测网络连通性。例如:`ping google.com` + - 使用 `curl` 或 `wget` 测试 HTTP 请求。例如:`curl http://google.com` diff --git "a/\345\274\240\346\236\227\346\235\260/20240529_\345\270\270\347\224\250\346\214\207\344\273\244.md" "b/\345\274\240\346\236\227\346\235\260/20240529_\345\270\270\347\224\250\346\214\207\344\273\244.md" new file mode 100644 index 0000000000000000000000000000000000000000..3b0c1622d8c157bf7110a5335c21890ffbd24fba --- /dev/null +++ "b/\345\274\240\346\236\227\346\235\260/20240529_\345\270\270\347\224\250\346\214\207\344\273\244.md" @@ -0,0 +1,91 @@ +# 常用指令 + +1. 在当前目录下建立文件 exam.c 并将文件 exam.c 拷贝到 /tmp 这个目录下,并改名为 shiyan.c + + ```bash + touch exam.c + cp exam.c /tmp/shiyan.c + ``` + +2. 在任何目录下回到用户主目录 + + ```bash + cd ~ + ``` + +3. 打印当前目录(隐藏文件也显示) + + ```bash + ls -a + ``` + +4. 用长格式列出 /home 目录下所有的文件包括隐藏文件 + + ```bash + ls -la /home + ``` + +5. 查看当前目录下所有的文件或目录(含.开头的),把查看结果生成文件 ls.txt + + ```bash + ls -al > ls.txt + ``` + +6. 将当前目录中扩展名为 txt doc 和 bak 的文件全部复制到 /home 目录中 + + ```bash + find . \( -name "*.txt" -o -name "*.doc" -o -name "*.bak" \) -exec cp {} /home/ \; + ``` + +7. 显示一个文件的最后 10 行用什么命令 + + ```bash + tail -n 10 filename + ``` + +8. 如何统计一个文件的行数 + + ```bash + wc -l filename + ``` + +9. 如何创建一个新文件,并且向文件内部写入数据“清华大学”并在当前的文件里面追加数据“计算机科学与技术” + + ```bash + echo "清华大学" > newfile.txt + echo "计算机科学与技术" >> newfile.txt + ``` + +10. sbin 目录和 bin 目录有什么区别 + + - `/bin` 包含了用户可执行的基本命令,这些命令对所有用户都可用。 + - `/sbin` 包含了系统管理员(root)使用的系统管理程序,通常用于系统维护和故障修复。 + +11. vi 编辑器有几种模式 + + - 命令模式(Normal mode) + - 插入模式(Insert mode) + - 可视模式(Visual mode) + - 末行模式(Ex mode) + +12. 如何进入 vi 编辑器的插入模式 + + - 在命令模式下,按 `i` 键进入插入模式。 + +13. 如何进入 vi 编辑器的可视化模式 + + - 在命令模式下,按 `v` 键进入字符可视模式,或按 `V` 键进入行可视模式,或按 `Ctrl + v` 进入块可视模式。 + +14. 在 vi 编辑器中如何复制一行 + + - 首先,进入可视模式(例如按 `v`)选择行。 + - 然后,按 `y` 键复制。 + +15. 在 vi 编辑器中如何进行粘贴 + + - 将光标移到你想粘贴的位置。 + - 按 `p` 键粘贴在光标之后,或 `P` 键粘贴在光标之前。 + +16. 如何删除从 3 行到 15 行的所有数据 + + - 进入命令模式,输入 `:3,15d` 然后回车,这将删除指定行范围内的内容。 diff --git "a/\345\274\240\346\236\227\346\235\260/20240531_Vim\347\274\226\350\276\221\345\231\250.md" "b/\345\274\240\346\236\227\346\235\260/20240531_Vim\347\274\226\350\276\221\345\231\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..45a5f71e57457fb9a26576a3dbf799f7968fab02 --- /dev/null +++ "b/\345\274\240\346\236\227\346\235\260/20240531_Vim\347\274\226\350\276\221\345\231\250.md" @@ -0,0 +1,66 @@ +# Vim 编辑器 + +## 光标控制 + +- `h`: 左移 +- `j`: 下移 +- `k`: 上移 +- `l`: 右移 +- `w`: 跳到下一个单词的开头 +- `b`: 跳到上一个单词的开头 +- `e`: 跳到单词的结尾 +- `0`: 跳到行首 +- `$`: 跳到行尾 + +## 翻页 + +- `Ctrl + d`: 向下翻半页 +- `Ctrl + u`: 向上翻半页 +- `Ctrl + f`: 向下翻一页 +- `Ctrl + b`: 向上翻一页 + +## 编辑操作 + +- `x`: 删除当前光标处的字符 +- `dd`: 删除(剪切)当前行 +- `p`: 粘贴(在光标下一行粘贴) +- `P`: 粘贴(在光标上一行粘贴) +- `u`: 撤销 +- `Ctrl + r`: 重做 + +## 查找 + +- `/word`: 向下查找 word +- `?word`: 向上查找 word +- `n`: 查找下一个 +- `N`: 查找上一个 + +## 进入其他模式 + +- `i`: 在当前光标前进入插入模式 +- `a`: 在当前光标后进入插入模式 +- `A`: 在行尾进入插入模式 +- `o`: 在当前行下方新开一行并进入插入模式 +- `O`: 在当前行上方新开一行并进入插入模式 +- `v`: 进入可视模式 +- `V`: 进入可视行模式 +- `Ctrl + v`: 进入可视块模式 +- `:`: 进入末行模式 + +## 末行模式 + +- `w filename`: 保存文件为 filename +- `wq` 或 `x`: 保存并退出 +- `q!`: 不保存强制退出 +- `%s/old/new/g`: 全文替换 old 为 new +- `set nu`: 显示行号 +- `set nonu`: 隐藏行号 + +## 可视模式操作 + +在可视模式下选择文本后,可以进行如下操作: + +- `d`: 删除选中部分 +- `y`: 复制选中部分 +- `>`: 向右缩进 +- `<`: 向左缩进 diff --git "a/\345\274\240\346\236\227\346\235\260/20240603_\347\224\250\346\210\267\347\256\241\347\220\206.md" "b/\345\274\240\346\236\227\346\235\260/20240603_\347\224\250\346\210\267\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..d00f5ab33fbca8f675346866f18f874cbaa521c8 --- /dev/null +++ "b/\345\274\240\346\236\227\346\235\260/20240603_\347\224\250\346\210\267\347\256\241\347\220\206.md" @@ -0,0 +1,53 @@ +# 用户管理 + +## 添加用户 + +- 使用 `adduser` 命令: + + ```shell + sudo adduser username + ``` + + 这个命令会引导你完成一系列步骤,包括设置密码、填写用户信息等,并自动创建用户的家目录。 + +- 使用 `useradd` 命令: + + ```shell + sudo useradd -m -s /bin/bash username + ``` + + `-m` 选项表示如果家目录不存在则创建,`-s` 用于指定用户的登录 Shell,默认是 `/bin/bash`。 + +## 修改用户 + +- 修改用户密码: + + ```shell + sudo passwd username + ``` + +- 修改用户属性: + + ```shell + sudo usermod -选项 用户名 + ``` + + 例如,要更改用户的家目录,可以使用 `-d` 选项: + + ```shell + sudo usermod -d /新的家目录路径 username + ``` + +## 删除用户 + +使用 `deluser` 命令: + +```shell +sudo deluser username +``` + +要同时删除用户的家目录,可以加上 `-r` 选项: + +```shell +sudo deluser -r username +``` diff --git "a/\345\274\240\346\236\227\346\235\260/20240605_\346\235\203\351\231\220\347\256\241\347\220\206.md" "b/\345\274\240\346\236\227\346\235\260/20240605_\346\235\203\351\231\220\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..391e5772a38621fabfc0652f36c6edce11197d4a --- /dev/null +++ "b/\345\274\240\346\236\227\346\235\260/20240605_\346\235\203\351\231\220\347\256\241\347\220\206.md" @@ -0,0 +1,26 @@ +# 权限管理 + +## 用户与用户组 + +用户:每个使用系统的人或服务都有一个独立的用户账户。root 用户是默认的超级用户,具有对系统的完全控制权。 + +用户组:多个用户可以被分配到同一个组内,便于权限的批量管理。组内的成员共享某些文件或资源的访问权限。 + +## 文件权限 + +读(r)、写(w)、执行(x)权限可以分别赋予文件的所有者、所属组和其他用户。 + +| 类型 | 读(r) | 写(w) | 执行(x) | +| ---- | -------------------------------- | ------------------------------------------ | ---------------------------------------------------------------- | +| 文件 | 允许打开并读取文件内容 | 允许修改文件内容和重命名文件 | 若为二进制文件则可执行;若非可执行文件,则可被程序作为扩展库运行 | +| 目录 | 允许列出目录中的文件和子目录名称 | 允许在目录中创建、删除和重命名文件及子目录 | 允许进入该目录 | + +使用`chmod`命令可以修改文件或目录的权限,如`chmod 755 file.txt`给予所有者全部权限,组成员和其他用户读取和执行权限。 + +使用`chown`和`chgrp`命令可以更改文件或目录的所有者和所属组。 + +## sudo 权限 + +sudo 允许指定用户以其他用户(通常是 root)的权限运行命令,而无需切换用户。 + +要授予用户 sudo 权限,需要编辑`/etc/sudoers`文件,通常使用`visudo`命令安全地编辑,以避免权限错误。 diff --git "a/\345\274\240\346\236\227\346\235\260/20240607_\347\211\271\346\256\212\346\235\203\351\231\220.md" "b/\345\274\240\346\236\227\346\235\260/20240607_\347\211\271\346\256\212\346\235\203\351\231\220.md" new file mode 100644 index 0000000000000000000000000000000000000000..c304787bf9461668ba75fc057dfb99c66aa7c88c --- /dev/null +++ "b/\345\274\240\346\236\227\346\235\260/20240607_\347\211\271\346\256\212\346\235\203\351\231\220.md" @@ -0,0 +1,30 @@ +# 特殊权限 + +## 隐藏权限 + +在 Debian 系统中,`i` 和 `a` 是两种用于文件和目录的隐藏权限,分别是 immutable(不可变) 和 append-only(仅追加)。这些权限不能通过常规的 `chmod` 命令设置,而是需要使用 `chattr` 命令。 + +### `chattr` 命令 + +- `i`(immutable): + - 设置 `i` 属性的文件或目录是不可变的。不可变的文件不能被修改、删除、重命名,也不能链接到其他文件。 + - 设置方法:`chattr +i 文件名` + - 取消方法:`chattr -i 文件名` +- `a`(append-only): + - 设置 `a` 属性的文件只能追加内容,不能删除或修改现有内容。这通常用于日志文件。 + - 设置方法:`sudo chattr +a 文件名` + - 取消方法:`sudo chattr -a 文件名` + +```shell +# 设置 immutable 属性 +chattr +i example_file + +# 设置 append-only 属性 +chattr +a example_file + +# 设置 immutable 属性到目录 +chattr +i example_dir + +# 设置 append-only 属性到目录 +chattr +a example_dir +``` diff --git "a/\345\274\240\346\236\227\346\235\260/20240612_\350\216\267\345\217\226SSL\350\257\201\344\271\246.md" "b/\345\274\240\346\236\227\346\235\260/20240612_\350\216\267\345\217\226SSL\350\257\201\344\271\246.md" new file mode 100644 index 0000000000000000000000000000000000000000..f593db586f1a3b35fa2cc7e3bbcd9cb0d57c9b0e --- /dev/null +++ "b/\345\274\240\346\236\227\346\235\260/20240612_\350\216\267\345\217\226SSL\350\257\201\344\271\246.md" @@ -0,0 +1,130 @@ +# 使用 HTTPS 访问 Web + +## 前置:配置 Nginx 服务器 + +1. 更新系统软件包 + + ```bash + sudo apt update && sudo apt upgrade -y + ``` + +2. 安装 Nginx + + ```bash + sudo apt install nginx -y + ``` + +3. 启动并设置开机启动 Nginx + + ```bash + sudo systemctl start nginx + sudo systemctl enable nginx + ``` + +4. 配置站点 + + 在 `/etc/nginx/sites-available/` 目录下为您的站点创建一个新的配置文件,例如 `example.com`。 + + `/etc/nginx/sites-available/` 是 Nginx 服务器的一个配置目录,用于存放所有可用的站点配置文件。 + + ```bash + sudo vim /etc/nginx/sites-available/example.com + ``` + + 添加以下基本配置: + + > 根据自己域名将配置中的 `example.com` 进行替换为自己域名。 + + ```nginx + server { + listen 80; + server_name example.com www.example.com; + + location / { + root /var/www/example.com/html; + index index.html index.htm; + } + + access_log /var/log/nginx/example.com.access.log; + error_log /var/log/nginx/example.com.error.log; + } + ``` + +5. 启用站点配置: + + 创建符号链接到 `/etc/nginx/sites-enabled/` 目录,让 `sites-available` 文件夹下文件同步至此目录下。 + + ```bash + sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ + ``` + +6. 测试配置并重启 Nginx: + + 测试配置是否正确,测试成功将 Nginx 服务器重启。 + + ```bash + sudo nginx -t + sudo systemctl restart nginx + ``` + +7. 准备网站内容: + + 根据配置文件中的 `root` 配置,创建相应的目录结构并放入您的网站文件。 + + ```bash + sudo mkdir -p /var/www/example.com/html + echo "Hello, World!" > /var/www/example.com/html/index.html + ``` + +8. 使用 `http://example.com`(替换 example) 访问域名,验证是否成功。 + +## 获取证书 + +1. 更新系统软件源到最新 + + ```shell + sudo apt update && sudo apt upgrade -y + ``` + +2. 安装 Certbot + + 若使用的是 Nginx 服务器,可使用以下命令安装 Certbot: + + ```shell + sudo apt install certbot python3-certbot-nginx + ``` + +3. 获取证书 + + 对于 Nginx 服务器,使用以下命令: + + ```shell + certbot --nginx + ``` + + 在运行这些命令后,Certbot 会自动检测服务器配置,并引导完成安装过程。这包括选择要为其启用 HTTPS 的域名,并自动更新 Web 服务器配置以使用新证书。 + +4. 自动续订证书 + + Let's Encrypt 的证书有效期为 90 天。Certbot 提供了自动续订功能。默认情况下,Certbot 包的续订脚本会添加到 `/etc/cron.d` 或 systemd 定时任务中。 + + 可以通过以下命令手动测试续订过程: + + ```shell + sudo certbot renew --dry-run + ``` + +5. 配置防火墙 + + 确保防火墙允许 HTTPS 流量。 + + 使用 `ufw` 进行配置: + + ```shell + sudo apt install ufw -y + sudo ufw allow 'Nginx Full' + ``` + +6. 验证 HTTPS + + 完成上述步骤后,访问域名 `https://example.com`(替换 example) 以验证 HTTPS 是否已正确启用。