diff --git "a/\345\275\255\345\213\207\346\226\214/PacVim \344\270\216 SSL\350\257\201\344\271\246 - nginx.md" "b/\345\275\255\345\213\207\346\226\214/PacVim \344\270\216 SSL\350\257\201\344\271\246 - nginx.md" new file mode 100644 index 0000000000000000000000000000000000000000..64015cf0ceddcd80eab955157e9134cdb92bdd2b --- /dev/null +++ "b/\345\275\255\345\213\207\346\226\214/PacVim \344\270\216 SSL\350\257\201\344\271\246 - nginx.md" @@ -0,0 +1,93 @@ +## PacVim下载 + +[技术|PacVim:一个学习 vim 命令的命令行游戏 (linux.cn)](https://linux.cn/article-9738-1.html) + +## SSL证书 - nginx + +### 购买SSL证书 + +[购买SSL证书_云证书管理服务 CCM (huaweicloud.com)](https://support.huaweicloud.com/usermanual-ccm/ccm_01_0074.html) + +### 申请SSL证书 + +[提交SSL证书申请_云证书管理服务 CCM (huaweicloud.com)](https://support.huaweicloud.com/usermanual-ccm/ccm_01_0075.html) + +### 下载SSL证书 + +[下载SSL证书_云证书管理服务 CCM (huaweicloud.com)](https://support.huaweicloud.com/usermanual-ccm/ccm_01_0027.html) + +### 安装SSL证书 + +[在Nginx服务器上安装SSL证书_云证书管理服务 CCM (huaweicloud.com)](https://support.huaweicloud.com/usermanual-ccm/ccm_01_0082.html) + +#### 创建目录 + +在Nginx的安装目录下创建“cert”目录 + +并且将“server.key”(私钥)和“server.crt”(证书)复制到“cert”目录下 + +![image-20240610144841366](assets/16.png) + +![848ba9a3b7441da0f27ac59e427c94d](assets/17.png) + +#### 修改配置文件 + +因为是另起一个配置文件制作网页 + +没有在nginx作更改所以需要在那个文件配置 + +![fa111e42d6d9a402c65ed119acc0899](assets\18.png) + +![](assets\19.png) + +```bash +# 需要将http与https重定向 +# 上一个server需要添加 rewrite ^(.*)$ http://$host$1; +# 上一个server可以将location注释 +``` + +```bash +# 在文件里添加 +server { + listen 443 ssl; + server_name 域名; + ssl_certificate 证书路径; + ssl_certificate_key 私钥路径; + ssl_session_cache shared:SSL:1m; + ssl_session_timeout 5m; + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_prefer_server_ciphers on; + location / { + root 网页内容文件路径; + index index.html index.htm; + } +} +``` + +在nginx里作更改添加到nginx.conf里 + +#### 验证配置是否正确 + +```bash +# 在nginx执行目录下执行命令 +sbin/nginx -t + +# 但是执行目录也有可能在/etc/nginx +# 所以可以进入/etc/nginx执行命令 +./nginx -t + +# 成功会显示一下信息 +nginx.conf syntax is ok +nginx.conf test is successful +# 失败会报错 +``` + +#### 重启nginx + +```bash +cd /usr/local/nginx/sbin +./nginx -s reload + +# 不知道nginx在哪可以使用重启nginx +systemctl restart nginx +``` \ No newline at end of file diff --git "a/\345\275\255\345\213\207\346\226\214/vim\347\274\226\350\276\221\345\231\250.md" "b/\345\275\255\345\213\207\346\226\214/vim\347\274\226\350\276\221\345\231\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..207370da375aab551e587d2e825e93403faefcef --- /dev/null +++ "b/\345\275\255\345\213\207\346\226\214/vim\347\274\226\350\276\221\345\231\250.md" @@ -0,0 +1,180 @@ +1. vi 编辑器有几种模式? + + ```bash + # 一般指令模式 ,按esc + # 编辑模式,按a、i、o + # 命令行模式,按:、/、? + ``` + +2. 如何进入 vi 编辑器的插入模式 + + ```bash + # 编辑模式,按a、i、o + ``` + +3. 如何进入 vi 编辑器的可视化模式 + + ```bash + # 按v或者ctrl+v都可进入可视化模式 + # 字符选择模式:选中光标经过的所有字符,普通模式下按小写v进入 + # 行选择模式:选中光标经过的所有行,普通模式下按大写V进入 + # 块选择模式:选中一整个矩形框表示的所有文本,普通模式下按ctrl+v进入 + ``` + +4. 在 vi 编辑器中如何复制一行 + + ```bash + # 在光标位置按yy,复制当前行 + ``` + +5. 在 vi 编辑器中如何进行粘贴 + + ```bash + # 在光标位置在行按p,粘贴到下一行,原来的往下顺移 + # 在光标位置在行按P,粘贴到下一行,原来的往上顺移 + ``` + +6. 如何删除从 3 行到 15 行的所有数据 + + ```bash + # :开始行号,结束行号d + :3,15d + ``` + +7. vim练习: + + - 光标移动练习,命令模式下: + + - 单位级 h j k l + + - 单词级 w e b + + - 块级 gg G 0 ^ $ H M L ngg nj nk + + ```bash + # i 当前字符前插入 + # I 当前行首插入 + # a 当前字符后插入 + # A 当前行尾插入 + # o 在下一行插入 + # O 在上一行插入 + # x 删除当前字符 + # X 删除前一个字符 + # d 删除指定内容并保存到 Vim 剪贴板 + # dd 删除当前行,并将删除的内容保存到 Vim 剪贴板 + # cc 删除当前行并保存到 Vim 剪贴板,同时进入 INSERT 模式 + # c 删除指定内容并保存到 Vim 剪贴板,同时进入 INSERT 模式 + # y 复制指定字符串到粘贴板 + # yy 复制整行到粘贴板 + # p 在当前位置后粘贴 + # P 在当前位置前粘贴 + # J 合并当前行和下一行 + # r 将当前字符替换为 X + # gu 将指定的文本转换为小写 + # gU 将指定的文本转换为大写 + # :%s/// 查找 search 内容并替换为 replace 内容(常用) + # >> 向右缩进当前行 + # << 向左缩进当前行 + # u 撤销 + # Ctrl-r 重做 + # . 重复上一个动作,3.重复上次动作3次 + # :w 保存当前文件 + # :wa 保存全部文件 + # :wq or ZZ 保存并退出 + # :q! or ZQ 强制退出,不保存 + # :saveas 文件另存为 + # :w 文件另存一份名为 的副本并继续编辑原文件 + ``` + + 把下列句子按照第一句的正确顺序修改好并把多余的空行删除 + + ``` + this is a simple easy vim tutorial + + tutorial simple a easy this vim is + is this tutorial vim simple a easy + + + tutorial vim this is a easy simple + tutorial easy vim simple a this is + simple a vim easy tutorial is this + + tutorial is easy vim a simple this + + + vim simple this tutorial a easy is + a vim tutorial simple easy is this + + + easy a simple vim is tutorial this + vim tutorial is a easy simple this + a this vim tutorial is easy simple + this tutorial simple easy a is vim + + + easy tutorial this simple a is vim + a tutorial easy is this simple vim + + a tutorial vim is easy this simple + simple this easy is vim tutorial a + + this tutorial is a easy simple vim + vim is tutorial simple this easy a + + vim is simple this tutorial easy a + easy a simple is vim this tutorial + vim is tutorial simple a easy this + this vim is tutorial simple easy a + ``` + + ```bash + # 删除空行 + :g/^$/d + ``` + + 先敲出以下代码,然后修正以下代码中的错误单词、重复单词、错误格式、多余行,修改函数名为 typing 并为定时器添加 300 毫秒延迟 + + ``` + const bbb = () => { + // this is is a description + // + // another descriptttion + const timer = setTimeout(( ) => { + console.log(that) alert('cool!') + // awosome man ! + }) + } + ``` + + 尝试在下面的文本中进行复制粘贴练习 + + ``` + 删除这一行 + 粘贴到这一行下面 + 剪切 ABC 并把它粘贴到 XYZ 前面,使这部分内容看起来像 + 剪切 并把它粘贴到 ABC XYZ 前面。 + ``` + + 尝试修改下列文本的大小写 + + ``` + Change this line to UPPERCASE, THEN TO lowercase. + ``` + + 按下面的说明进行操作 + + ``` + 按 dd 删除本行 + 按 . 重复删除操作 + 2. 再删除两行 + 这行也没了 + p 把刚才删掉的粘回来 + 3. 又多出 6 行 + ``` + + 左缩进、右缩进练习 + + ``` + 在这一行上依次按 3>>,<< 和 `,比如 `pidof python` 会返回所有名为 `python` 的进程的PID。 + + + +`free` 和 `df -h` 是两个用于查看系统资源利用情况的常用命令: + +1. **`free`**:该命令用于显示系统内存的使用情况,包括物理内存和交换空间(swap)。执行 `free` 命令时,会显示系统的内存信息,包括总内存、已使用内存、空闲内存以及缓冲区和缓存等情况。 + + 示例输出: + + ``` + total used free shared buff/cache available + Mem: 8081256 2133468 3458604 430300 2488184 5261632 + Swap: 0 0 0 + ``` + + 输出中的字段含义如下: + + - `total`: 总内存量 + - `used`: 已使用的内存量 + - `free`: 空闲的内存量 + - `shared`: 用于共享的内存量 + - `buff/cache`: 用于缓存的内存量 + - `available`: 可用的内存量 + +2. **`df -h`**:该命令用于显示文件系统的磁盘空间利用情况。执行 `df -h` 命令时,会显示系统中每个挂载的文件系统的磁盘使用情况,包括总容量、已使用空间、剩余空间以及挂载点等信息。 + + 示例输出: + + ``` + Filesystem Size Used Avail Use% Mounted on + /dev/sda1 20G 15G 3.6G 81% / + /dev/sda2 30G 20G 8.8G 70% /home + ``` + + 输出中的字段含义如下: + + - `Filesystem`: 文件系统设备 + - `Size`: 文件系统总容量 + - `Used`: 已使用的空间 + - `Avail`: 可用空间 + - `Use%`: 使用百分比 + - `Mounted on`: 挂载点 + +通过这两个命令,你可以快速了解系统的内存和磁盘空间使用情况,以便进行系统资源管理和监控。 + + + +`du` 命令用于估算文件或目录的磁盘使用情况。它可以显示指定文件或目录的磁盘使用量,以及每个子目录的磁盘使用量,帮助用户了解文件系统上的空间分布情况。以下是 `du` 命令的一些常见使用场景: + +1. **查看当前目录的磁盘使用情况**: + + ``` + 复制代码 + du -h + ``` + + 这将以人类可读的格式显示当前目录及其所有子目录的磁盘使用情况。 + +2. **查看特定目录的磁盘使用情况**: + + ``` + du -h /目录名 + ``` + + 这将显示指定目录及其所有子目录的磁盘使用情况。 + +3. **显示文件或目录的总磁盘使用量**: + + ``` + du -sh /path/to/file_or_directory + ``` + + 这将显示指定文件或目录的总磁盘使用量, `-s` 参数表示仅显示总和, `-h` 表示以人类可读的格式显示。 + +4. **显示目录中每个文件的磁盘使用量**: + + ``` + 复制代码 + du -ah /path/to/directory + ``` + + 这将显示指定目录中每个文件的磁盘使用量, `-a` 参数表示包括所有文件。 + +5. **按照磁盘使用量排序显示目录**: + + ``` + du -h | sort -h + ``` + + 这将按照磁盘使用量从小到大排序显示当前目录及其所有子目录的磁盘使用情况。 + +6. **限制显示的深度**: + + ``` + du -h --max-depth=1 /path/to/directory + ``` + + 这将仅显示指定目录的直接子目录的磁盘使用情况, `--max-depth` 参数用于指定显示的深度。 + diff --git "a/\345\275\255\345\213\207\346\226\214/\347\216\257\345\242\203\345\217\230\351\207\217.md" "b/\345\275\255\345\213\207\346\226\214/\347\216\257\345\242\203\345\217\230\351\207\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..6d21b71214d9d4d0095f967116706804a36c2dd3 --- /dev/null +++ "b/\345\275\255\345\213\207\346\226\214/\347\216\257\345\242\203\345\217\230\351\207\217.md" @@ -0,0 +1,114 @@ +### 练习题 1: 显示当前所有的环境变量 + +* 使用`printenv`或`env`命令来显示所有的环境变量。 + + +```bash +printenv +env +``` +### 练习题 2: 显示`HOME`环境变量的值 + +* 使用`echo`命令和`$`符号来显示`HOME`环境变量的值。 + + +```bash +echo $HOME +``` +### 练习题 3: 临时设置一个新的环境变量 + +* 设置一个名为`MY_AGE`的环境变量,并将其值设置为`18`。 + + +```bash +export MY_AGE=18 +``` +### 练习题 4: 显示新设置的环境变量 + +* 使用`echo`命令来显示`MY_AGE`的值。 + + +```bash +echo $MY_AGE +``` +### 练习题 5: 在新的shell会话中检查环境变量 + +* 打开一个新的终端窗口或标签页,并尝试显示`MY_AGE`的值。你会看到什么?为什么? + + ```bash + # 什么都没有,因为是临时的环境变量 + ``` + +### 练习题 6: 修改`PATH`环境变量 + +* 将`你当前用户的家目录`添加到你的`PATH`环境变量的末尾位置 + + +```bash +export PATH=在这行后面加上 :/home/user/yina +``` +将`/tmp`添加到你的`PATH`环境变量的开始位置,(注意:这可能会覆盖其他路径中的同名命令,所以请谨慎操作)。 + +```bash +export PATH=/tmp:/home/user/yina +``` + +### 练习题 7: 验证`PATH`的修改 + +* 使用`echo`命令显示`PATH`的值,并确认`前面添加的目录`已经被添加到对应位置。 + + +```bash +echo $PATH +``` +### 练习题 8: 永久设置环境变量 + +* 在你的shell配置文件中(如`~/.bashrc`、`~/.bash_profile`、`~/.zshrc`等,取决于你使用的shell和配置)添加一行来永久设置`MY_NAME`,值设置为`奥德彪`。 + +例如,对于bash shell,你可以使用: + + +```bash +~/.bash_profile 或者 ~/.bashrc +``` +如何让`MY_NAME`生效,并验证 + +```bash +export MY_NAME = '奥德彪' +echo $MY_NAME +``` + +### 练习题 9: 清理 + +* 清除你之前设置的`MY_AGE`和`PATH`的修改(如果你不想永久保留它们)。 + + +```bash +unset MY_AGE +export PATH=$(echo $PATH | sed -e 's|:要移除的path环境变量') +``` +### 练习题 10: 修改默认器 + +* 使用`EDITOR`变量,修改你默认的编辑器为nano。 + + +```bash +# 进入.git/config +# 在core里 +export EDITOR=nano +``` + +### 练习题 11: 修改语言 + +* 使用`LANG`变量,让你的文件支持中文和utf8编码来避免乱码。 + +```bash +export LANG=zh_CN.utf8 +``` + +- 使用`LANGUAGE`变量,让你的命令提示为中文 + +```bash +export LANGUAGE=zh_CN.utf8 +``` + diff --git "a/\345\275\255\345\213\207\346\226\214/\347\224\250\346\210\267\344\270\216\346\226\207\344\273\266\346\235\203\351\231\220\347\256\241\347\220\206.md" "b/\345\275\255\345\213\207\346\226\214/\347\224\250\346\210\267\344\270\216\346\226\207\344\273\266\346\235\203\351\231\220\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..6abcc82660eadf7e90d7f9782e6d830043c803a1 --- /dev/null +++ "b/\345\275\255\345\213\207\346\226\214/\347\224\250\346\210\267\344\270\216\346\226\207\344\273\266\346\235\203\351\231\220\347\256\241\347\220\206.md" @@ -0,0 +1,520 @@ +```bash +# cat 重定向 >> +cat << aaa # aaa 表示占位符 +> 这里才是内容 +> aaa # 当再次输入aaa表示结束 +# 输出这里才是内容 + +# 将输出结果保存到1.txt +cat << aaa.txt > 1.txt +``` + +```bash +# 小括号 () +cd /etc && ls && pwd +# 会根据命令转换当前目录位置 + +# 不会改变当前目录位置 +(cd /etc && ls) && pwd +``` + +## 用户与文件权限管理 + +### 用户管理 + +分类 + +​ 超级用户root:最高权限,不受一般权限的限制,编号0提示符# + +​ 内置用户:由系统自动创建,编号1-999 + +​ 普通用户:我们用root权限手动创建用户,授权先控制,编号从1000开始,提示符$ + +​ 创建普通用户test会自动创建他的编号,他原生组(和用户名同名test),附加组(test),初始化的时候一定是uid=1000(test)gid=1000(test)组=1000(test)以上顺序依次为用户编号,原生组编号,附加组编号 + +​ 附加组 Group + +​ 普通用户不能创建普通用户,只有root + +```bash +# 显示当前用户的所有编号信息 +id +# 显示指定用户的编号信息 +id 指定用户 +``` + +### 用户 + +#### 添加 + +```bash +# 添加用户名 +# 低级,只会创建用户不会创建其他信息 +useradd 用户 +# 创建用户的同时创建家目录 +useradd -m 用户 +# 创建用户的同时指定家目录 +useradd -m-d /home/指定的家目录 用户 +# 创建用户的同时指定shell +# 不指定默认在/bin/sh的位置 +useradd -s shell(/bin/bash) 用户 +# 高级,会把其他信息一起创建出来 +adduser 用户 +``` + +#### 删除 + +```bash +# 删除用户 +# 与添加同理不能删除全部,只会删除指定用户 +userdel 指定用户 +# 删除用户的同时删除相关的目录 +userdel -r 指定用户 +deluser 指定用户 +``` + +#### 修改 + +```bash +# 修改指定用户密码 +passwd 用户名 +# 修改当前用户的密码 +passwd +# 修改用户的附加组(覆盖原来的附加组) +# -G 附加组 -g 原生组 +usermod -G 组号或组名 用户 +# 修改用户的附加组(保留原来的附加组追加新的附加组) +# -a 追加尾部 +usermod -aG 组号或组名 用户 +# 修改用户的bash +# -s bash +usermod -s bash路径(/bin/bash) 用户 +# 如果没有修改新用户权限。一般新用户是无法使用的,可以去相对应的配置文件修改文件,也可以修改用户的bash即,usermod -s /bin/bash 用户名 +``` + +#### 查询 + +```bash +# 显示当前用户的所有编号信息 +id +# 显示指定用户的编号信息 +id 指定用户 +# 所有的用户信息存放的位置 +/etc/passwd +# passwd信息内容顺序 +用户名:密码:用户编号:原生组编号:该用户的家目录:该用户的bash +``` + +#### 切换 + +```bash +# 切换用户 +# 仅切换身份不切换目录和shell环境 +su 指定用户 +# 连环境变量和目录一起切换 +su - 指定用户 +``` + +### 用户组 + +#### 添加 + +```bash +# 组编号是从1000开始 +# 添加一个组,编号自动生成 +groupadd 组名 +# 添加一个组并指定编号 +# -g 组编号 +groupadd -g 指定组编号 组名 +``` + +#### 删除 + +```bash +# 删除组 +groupdel 组名 +``` + +#### 修改 + +```bash +# 修改组的编号 +groupmod -g 更改的组编号 组名 +``` + +#### 查询 + +```bash +# 所有组的信息存放的位置 +/etc/group +# 组信息内容顺序(组编号依次递增) +组:密码:组编号 +``` + +### 文件管理 + +​ 文件属性第一列是 文件类型与权限,最多10个字符 + +```bash +# 具体查看文件信息 +ls -lh +# 显示的内容依次顺序 +# 拥有者和所在组同名因为默认名字是一样的 +# 连接数的意思是文件有n个硬链接,访问哪个文件都属于访问该文件(教室有n个门,无论哪个门都能找到这个教室),但是硬连接不是快捷访问方式 +# 连接数的数是根据目录里有几个目录显示,目录都有两个隐藏文件 +文件的类型与权限 连接数 文件的拥有者(文件的主人) 文件的所在组 文件的大小 文件的修改时间 文件名 +# 软链接是快捷方式 +``` + +#### 第1位字符表示文件类型 + +​ d 目录 + +​ l 连接文件 + +​ - 普通文件 + +​ b c s p 等其他文件 + +#### 后9位字符分别代表三种角色的权限,每3位一组 + +​ 2-4 拥有者权限 + +​ 5-7 用户组权限 + +​ 8-10 其他人权限 + +#### 基本权限 + +​ 读 r(read):打开并显示文件内容,查看目录基本信息 + +​ 写 w(write):可以写入,修改,删除内容(文件)创建,修改,删除(目录) + +​ 执行 x(execute):文件如果是二进制或脚本文件就可以执行,目录表示 + +#### 权限表示 + +​ 字符 + +​ 数字 + +​ r == 4 + +​ w == 2 + +​ x == 1 + +#### 身份表示 + +​ u 拥有者(user) + +​ g 用户组(group) + +​ o 其他人(other) + +​ a 所有人(all) + +#### 修改 + +```bash +# 修改权限 +chmod 要的权限 文件|目录 +# 添加拥有者写入权限,去除用户组只读权限,修改所有人只有只读和写入权限 +chmod u+w,g-r,o=rw 1.txt +chmod 246 +# 设置无权限 +# 用数字修改权限,0表示无权限 +chmod 000 1.txt +# 字母与数字不能同时使用 +# 递归设置权限,将所有文件权限设置一样 +chmod -R 777 aaa(目录) + +# 修改拥有者 +chown 用户名 文件名 + +# 修改文件所属的用户组 +chgrp 组名或组号 文件 +``` + + + +### Linux执行命令的过程 + +​ 如果这个命令是绝对路径直接执行 + +​ 如果不是 + +​ 查一下别名,执行对应的命令 + +​ 从环境变量中找这个命令 $PATH 中的路径以此查找这个命令 + +​ 本地也没有结果就会报错 + +```bash +# 重启系统,只有root可以使用(有权限也可以) +reboot + +# 查询是否有别名存在 +type 命令 + +# 查看当前的path +echo $PATH + +# 从末尾查看第一行该文件或路径信息 +# -n 行数 1 第一行 +tail -n 1 文件或路径 +``` + +## 作业 + +### Linux 链接 + +Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln 命令产生硬链接。 + +**硬连接** + +硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存[磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。 + +硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。 + +**软连接** + +另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。 + +### 权限管理练习 + +权限相关修改普通用户没有权限需要用sudo或者使用root账号 + +1. 创建/guanli 目录,在/guanli下创建zonghe 和 jishu 两个目录(一条命令) + + ```bash + mkdir -p /home/user/yina/guanli/{zonghe,jishu} + ``` + +2. 添加组帐号zonghe、caiwu、jishu,GID号分别设置为2001、2002、2003 + + ```bash + # -g 指定组id + # -r 创建系统用户组 + # -o 允许使用非唯一的gid创建用户组 + # -p 指定用户组的密码 + # -f 强制创建用户组,即使用户组已经存在 + # -K 指定用户组的键值对形式的属性,可以用于设置组的特殊属性,如组的密码过期策略 + groupadd -g 2001 zonghe + groupadd -g 2002 caiwu + groupadd -g 2003 jishu + + # 查看组信息 + cat /etc/group + ``` + +3. 创建jerry、kylin、tsengia、obama用户,其中的kylin用户帐号在2020年12月30日后失效 + + ```bash + # -c 加上备注文字,备注文字会保存在passwd的备注栏位中 + # -d 指定用户登入时的起始目录 + # -D 变更预设值 + # -e 指定帐号的有效期限 + # -f 指定在密码过期后多少天即关闭该帐号 + # -g 指定用户所属的群组 + # -G 指定用户所属的附加群组 + # -m 制定用户的登入目录 + # -M 不要自动建立用户的登入目录 + # -n 取消建立以用户名称为名的群组 + # -r 建立系统帐号 + # -s 指定用户登入后所使用的shell + # -u 指定用户ID + useradd jerry + useradd -e 2020-12-30 kylin + useradd tsengia + useradd obama + + # 查看用户信息 + cat /etc/passwd + ``` + +4. 将jerry、kylin、tsengia、obama等用户添加到zonghe组内 + + ```bash + # -c 修改用户账号的备注文字 + # -d 修改用户登入时的目录 + # -e 修改账号的有效期限 + # -f 修改在密码过期后多少天即关闭该账号 + # -g 修改用户所属的群组 + # -G 修改用户所属的附加群组 + # -l 修改用户账号名称 + # -L 锁定用户 + # -s 修改用户登入后所使用的shell + # -u 修改用户id + # -U 解除密码锁定 + usermod -G zonghe jerry + usermod -G zonghe kylin + usermod -G zonghe tsengia + usermod -G zonghe obama + + # 查看用户所在的组 + groups 用户名 + ``` + +5. 创建handy、cucci用户,其中cucci帐号的登录Shell设置为“/sbin/nologin” + + ```bash + useradd handy + useradd -s cucci /sbin/nologin + ``` + +6. 将handy、cucci等用户添加到jishu组内 + + ```bash + usermod -G handy + usermod -G cucci + ``` + +7. 将上述的所有用户均要求加入到guanli组内 + + ```bash + # -a 添加用户到组 + # -d 从组删除用户 + # -A 指定管理员 + # -M 指定组成员和-A的用途差不多(但是可以多个) + # -r 删除密码 + # -R 限制用户登入组,只有组中的成员才可以用newgrp加入该组 + gpasswd -M jerry,kylin,tsengia,obama,handy,cucci guanli + ``` + +8. 将zonghe组内的obama用户删除 + + ```bash + gpasswd -d obama zonghe + ``` + +9. 为jerry用户设置密码为“123456”(使用普通方法)为cucci用户设置密码为“redhat” + + ```bash + passwd jerry + passwd cucci + # 另一种方法 + echo "redhat" | passwd --stdin cucci + ``` + +10. 将jerry用户锁定,并查看锁定状态 + + ```bash + # passwd的选项 + # -d 删除密码 + # -f 强迫用户下次登录时必须修改口令 + # -w 口令要到期提前警告的天数 + # -k 更新只能发送在过期之后 + # -l 停止账号使用 + # -S 查看锁定状态 + # -u 启用已被停止的账户 + # -x 指定口令最长存活期 + # -g 修改群组密码 + # -i 口令过期后多少天停用账户 + usermod -l jerry + passwd -S jerry + ``` + +11. 打开两个xshell窗口,通过(who 或者 w)命令查看连接状态,并通过fuser杀掉其中一个 + + ```bash + # 因为没有fuser所以安装一下 + apt install psmisc + # /dev/ 存放设备文件 + # -a 显示所有命令行中指定的文件,默认情况下被访问的文件才会被显示 + # -c 和-m一样,用于POSIX兼容 + # -k 杀掉访问文件的进程,如果没有指定-signal就会发送SIGKILL信号 + # -i 杀掉进程之前询问用户,如果没有-k这个选项会被忽略。 + # -l 列出所有已知的信号名称 + # -m name 指定一个挂载文件系统上的文件或者被挂载的块设备(名称name),这样所有访问这个文件或者文件系统的进程都会被列出来,如果指定的是一个目录会自动转换成"name/",并使用所有挂载在那个目录下面的文件系统 + # -n space 指定一个不同的命名空间(space),这里支持不同的空间文件(文件名,此处默认)、tcp(本地tcp端口)、udp(本地udp端口),对于端口, 可以指定端口号或者名称,如果不会引起歧义那么可以使用简单表示的形式,例如:name/space (即形如:80/tcp之类的表示) + # -s 静默模式,这时候-u,-v会被忽略,-a不能和-s一起使用 + # -signal 使用指定的信号,而不是用SIGKILL来杀掉进程,可以通过名称或者号码来表示信号(例如-HUP,-1),这个选项要和-k一起使用,否则会被忽略 + # -u 在每个PID后面添加进程拥有者的用户名称 + # -v 详细模式。输出似ps命令的输出,包含PID,USER,COMMAND等许多域,如果是内核访问的那么PID为kernel. -V 输出版本号 + # -4 使用IPV4套接字,不能和-6一起应用,只在-n的tcp和udp的命名存在时不被忽略 + # -6 使用IPV6套接字,不能和-4一起应用,只在-n的tcp和udp的命名存在时不被忽略 + # - 重置所有的选项,把信号设置为SIGKILL + fuser -k /dev/pts/0 + ``` + +12. 查看cucci用户,属于那些组,并查看其详细信息 + + ```bash + groups cucci + ``` + +13. 手工创建账号student(预留) + + ```bash + vim /etc/passwd + # 创建用户信息 student:x:1014:1014::/home/student:/bin/bash + vim /etc/shadow + # /etc/shadow 存放用户密码信息 + # 创建用户密码 student::18107:0:99999:7::: + # 字段意思如下 + # 用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段 + vim /etc/group + # 创建用户所在组 student:x:1014: + mkdir /home/student + cd /etc/skel/ + ls -a | cp .b* /home/student/ + ``` + +14. 设置权限及归属:/guanli目录属组设为guanli, /guanli/zonghe目录的属组设为zonghe /guanli/jishu目录的属组设为jishu,设置3个目录都是禁止其他用户访问的权限 + + ```bash + # -c 显示更改的部分的信息 + # -f 忽略错误信息 + # -h 修复符号链接 + # -v 显示详细的处理信息 + # -R 修改权限 + chown :guanli /guanli + chown :zonghe /guanli/zonghe/ + chown :jishu /guanli/jishu/ + chmod -R o-rwx /guanli/ + ``` + +15. 建立公共目录/ceshi允许技术组内的所有用户读取、写入、执行文件, 禁止其他用户读、写、执行 + + ```bash + chmod g=rwx /ceshi/ + chmod o-rwx /ceshi/ + # 查看文件权限 + ls -ld /ceshi/ + ``` + +16. 清除jerry用户密码 + + ```bash + passwd -d jerry + ``` + +17. 锁定cucci用户密码并查看状态 + + ```bash + passwd -l cucci + passwd -S cucci + ``` + +18. 修改obama用户的UID为8888 + + ```bash + usermod -u 8888 obama + ``` + +19. 通过passwd命令修改kylin用户的最长密码使用期限为60天 + + ```bash + passwd -x 60 kylin + ``` + +20. 通过id groups等命令查看用户handy信息 + + ```bash + id handy + groups handy + finger handy + ``` + + \ No newline at end of file diff --git "a/\345\275\255\345\213\207\346\226\214/\351\207\215\345\256\232\345\220\221\345\222\214\347\256\241\351\201\223\347\254\246.md" "b/\345\275\255\345\213\207\346\226\214/\351\207\215\345\256\232\345\220\221\345\222\214\347\256\241\351\201\223\347\254\246.md" new file mode 100644 index 0000000000000000000000000000000000000000..082055d696aaff76b8ed8505c7ee4dc6d4882875 --- /dev/null +++ "b/\345\275\255\345\213\207\346\226\214/\351\207\215\345\256\232\345\220\221\345\222\214\347\256\241\351\201\223\347\254\246.md" @@ -0,0 +1,29 @@ +## << 是什么功能? here document + +<< 符号引入了一种特殊的文本块,称为here document + +here document 允许我们在命令行中嵌入多行文本块作为命令的输入 + +```bash +# 创建文件内容 +cat << 标题 > 文件 +> 文件内容 +# crtl + d 退出 +``` + +## ()是把命令包括起来干什么的? + +() 用于命令替换和创建子shell + +```bash +# 命令替换 + + + +# 创建子shell赋值 +(var=updown;echo $var) + +# 数组赋值或者初始化数组 +a=(1 2 3 4) +``` +