diff --git "a/\350\265\226\345\277\203\345\246\215/20240601 sed.md" "b/\350\265\226\345\277\203\345\246\215/20240601 sed.md" index 0dadb466988fef97236fd0609dce0bf82eb53e8b..c9e5d8f57a3335bfc8df6d91a5053f9c65a4d86e 100644 --- "a/\350\265\226\345\277\203\345\246\215/20240601 sed.md" +++ "b/\350\265\226\345\277\203\345\246\215/20240601 sed.md" @@ -79,7 +79,7 @@ sed '/food/s/apple/苹果/g' 1.txt sed '/food/s/apple/苹果/2' 1.txt # 替换第5行的第4个 -sed 5s/旧/新/4 文件 +sed '5s/旧/新/4' 文件 # 将内容添加到每行开头 # ^ 开头 @@ -212,10 +212,6 @@ sed '/^A/d' lianxi.txt > clean_data.csv 3. 使用 `sed` 在文件 `lianxi.txt` 的每一行开头插入文本 "Line:",并将结果覆盖原始文件。 -```bash - -``` - 或者(如果支持 `-i` 选项直接修改文件): ```bash @@ -233,7 +229,9 @@ sed '/^#/d' lianxi.txt 2. 使用 `sed` 在文件 `lianxi.txt` 中每一行的末尾追加文本 " - The End",并将结果保存到新文件 `story_end.txt` 中。 ```bash - sed 's/$/-The End/' lianxi.txt > story_end.txt +# s 替换,也可以用于末尾追加或者开头添加 +# $ 结尾 +sed 's/$/-The End/' lianxi.txt > story_end.txt ``` 3. 使用 `sed` 将文件 `lianxi.txt` 中第10行至第20行的内容输出到标准输出。 @@ -247,7 +245,7 @@ sed '/^#/d' lianxi.txt 1. 使用 `sed` 找到文件 `lianxi.txt` 中所有包含 "@example.com" 的邮箱地址,并将结果输出到标准输出。 ```bash -sed -n '/@example\.com/p' lianxi.txt +sed -n '/@example.com/p' lianxi.txtsed ``` 2. 使用 `sed` 删除文件 `lianxi.txt` 中的空白行,并将结果保存到新文件 `clean_notes.txt` 中。 @@ -306,13 +304,13 @@ sed '/words/d' exam.txt > clean_exam.txt 1. 使用 `sed` 在文件 `exam.txt` 的第2行插入一行 "Welcome to sed manipulation",并将结果保存到新文件 `updated_exam.txt` 中。 ```bash -sed '1a\Welcome to sed manipulation' exam.txt > updated_exam.txt +sed '2a\Welcome to sed manipulation' exam.txt > updated_exam.txt ``` 1. 使用 `sed` 在文件 `exam.txt` 的`numbers`所在行插入一行 "This is a new line",并将结果输出到标准输出。 ```bash -sed '/numbers/c\This is a new line' exam.txt +sed '/numbers/a\This is a new line' exam.txt ``` #### 追加操作 @@ -320,13 +318,13 @@ sed '/numbers/c\This is a new line' exam.txt 1. 使用 `sed` 在文件 `exam.txt` 的末尾追加一行 "End of practice",并将结果保存到新文件 `updated_exam.txt` 中。 ```bash -sed '$a\End of practice' exam.txt +sed '$c\End of practice' exam.txt > update_exma.txt ``` 1. 使用 `sed` 在文件 `exam.txt` 的每一行末尾追加内容 " - 2024-05-31",并将结果输出到标准输出。 ```bash -sed 'a\- 2024-05-31' exam.txt +sed 's/$/-2024-05-31' exam.txt ``` #### 整行替换操作 @@ -354,7 +352,7 @@ sed '/dog/d; s/file/文件/g' exam.txt 1. 使用 `sed` 将文件 `exam.txt` 中,删除空白行并将所有以 "It" 开头的行替换为 "This", ```bash -sed '/^$/;s/^It/This/' exam.txt +sed -e '/i/d' -e 's/^It/This/g' exam.txt ``` #### 脚本文件操作 diff --git "a/\350\265\226\345\277\203\345\246\215/20240606 PacVim \344\270\216 SSL\350\257\201\344\271\246 - nginx.md" "b/\350\265\226\345\277\203\345\246\215/20240606 PacVim \344\270\216 SSL\350\257\201\344\271\246 - nginx.md" index 19928292a601fff1c714bf8f176b96019cdf080f..64015cf0ceddcd80eab955157e9134cdb92bdd2b 100644 --- "a/\350\265\226\345\277\203\345\246\215/20240606 PacVim \344\270\216 SSL\350\257\201\344\271\246 - nginx.md" +++ "b/\350\265\226\345\277\203\345\246\215/20240606 PacVim \344\270\216 SSL\350\257\201\344\271\246 - nginx.md" @@ -36,9 +36,9 @@ 没有在nginx作更改所以需要在那个文件配置 -![fa111e42d6d9a402c65ed119acc0899](assets\18) +![fa111e42d6d9a402c65ed119acc0899](assets\18.png) -![](assets\19) +![](assets\19.png) ```bash # 需要将http与https重定向 diff --git "a/\350\265\226\345\277\203\345\246\215/20240615 \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/\350\265\226\345\277\203\345\246\215/20240615 \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..8c19fac16cf923d1a78d824ec1968d911274a1f1 --- /dev/null +++ "b/\350\265\226\345\277\203\345\246\215/20240615 \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,253 @@ +## 作业 + +### 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/\350\265\226\345\277\203\345\246\215/assets/16.png" "b/\350\265\226\345\277\203\345\246\215/assets/16.png" new file mode 100644 index 0000000000000000000000000000000000000000..cfef0d1418b9103e86a957f1baef9bf5e073f8ee Binary files /dev/null and "b/\350\265\226\345\277\203\345\246\215/assets/16.png" differ diff --git "a/\350\265\226\345\277\203\345\246\215/assets/17.png" "b/\350\265\226\345\277\203\345\246\215/assets/17.png" new file mode 100644 index 0000000000000000000000000000000000000000..3295d292db77e692f2d0bf939265577e20e76b38 Binary files /dev/null and "b/\350\265\226\345\277\203\345\246\215/assets/17.png" differ diff --git "a/\350\265\226\345\277\203\345\246\215/assets/18.png" "b/\350\265\226\345\277\203\345\246\215/assets/18.png" new file mode 100644 index 0000000000000000000000000000000000000000..edface51f7d9f89b8bec73155b3261f8f8c7975f Binary files /dev/null and "b/\350\265\226\345\277\203\345\246\215/assets/18.png" differ diff --git "a/\350\265\226\345\277\203\345\246\215/assets/19.png" "b/\350\265\226\345\277\203\345\246\215/assets/19.png" new file mode 100644 index 0000000000000000000000000000000000000000..c7a89ecb96460767b7d88744bf7bbb825d5404b1 Binary files /dev/null and "b/\350\265\226\345\277\203\345\246\215/assets/19.png" differ