From 60e75619f664e1df248cf2b208159dac8a77b485 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E8=AF=97=E9=BE=99?= <2483323272@qq.com> Date: Fri, 14 Jun 2024 05:20:03 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黄诗龙 <2483323272@qq.com> --- ...41\351\201\223\347\224\250\346\263\225.md" | 129 ++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 "15 \351\273\204\350\257\227\351\276\231/20240613\351\207\215\345\256\232\345\220\221\345\222\214\347\256\241\351\201\223\347\224\250\346\263\225.md" diff --git "a/15 \351\273\204\350\257\227\351\276\231/20240613\351\207\215\345\256\232\345\220\221\345\222\214\347\256\241\351\201\223\347\224\250\346\263\225.md" "b/15 \351\273\204\350\257\227\351\276\231/20240613\351\207\215\345\256\232\345\220\221\345\222\214\347\256\241\351\201\223\347\224\250\346\263\225.md" new file mode 100644 index 0000000..218d1df --- /dev/null +++ "b/15 \351\273\204\350\257\227\351\276\231/20240613\351\207\215\345\256\232\345\220\221\345\222\214\347\256\241\351\201\223\347\224\250\346\263\225.md" @@ -0,0 +1,129 @@ +# 1.笔记 + +#### 输入重定向 + +1. **输入重定向 `<`** + + 将文件的内容作为命令的输入。 + + ```bash + sort < unsorted_list.txt + ``` + + 这个命令将 `unsorted_list.txt` 文件的内容作为 `sort` 命令的输入进行排序。 + +#### 错误重定向 + +1. **错误输出重定向 `2>`** + + 将命令的错误输出重定向到一个文件。 + + ```bash + ls non_existent_file 2> error_log.txt + ``` + + 这个命令会将 `ls` 命令的错误信息保存到 `error_log.txt` 文件中。 + +2. **错误输出追加重定向 `2>>`** + + 将命令的错误输出追加到一个文件。 + + ```bash + ls non_existent_file 2>> error_log.txt + ``` + + 这个命令会将 `ls` 命令的错误信息追加到 `error_log.txt` 文件中。 + +3. **同时重定向标准输出和标准错误输出 &>** + + 使用 `&>` 符号将标准输出和错误输出同时重定向到同一个文件。 + + ```bash + command &> output_and_error_log.txt + ``` + + 这个命令会将 `command` 的标准输出和错误输出都保存到 `output_and_error_log.txt` 文件中。 + +### 管道 `|` + +管道符号 `|` 将一个命令的输出作为另一个命令的输入。管道是进行命令链式操作的重要工具。 + +#### 使用场景 + +1. **将命令的输出传递给另一个命令** + + ```bash + ls -l | grep "txt" + ``` + + 这个命令会将 `ls -l` 的输出传递给 `grep "txt"`,只显示包含 "txt" 的行。 + +2. **多命令链式操作** + + ```bash + ps aux | grep "sshd" | awk '{print $2}' + ``` + + 这个命令链会列出所有进程 (`ps aux`),然后过滤包含 "sshd" 的行 (`grep "sshd"`),最后提取进程 ID (`awk '{print $2}'`)。 + +### 示例解析 + +#### 使用管道和重定向的综合示例 + +1. **查找特定文件并将结果保存到文件** + + ```bash + find / -name "*.log" 2> errors.txt | sort > sorted_log_files.txt + ``` + + 这个命令会在根目录下查找所有以 `.log` 结尾的文件,将错误信息重定向到 `errors.txt`,并将结果进行排序后保存到 `sorted_log_files.txt`。 + +### 总结 + +- **重定向**: + - `>`:将输出重定向到文件(覆盖)。 + - `>>`:将输出追加到文件。 + - `<`:将文件内容作为输入。 + - `2>`:将错误输出重定向到文件。 + - `2>>`:将错误输出追加到文件。 + - `&>`:将标准输出和错误输出同时重定向到文件。 +- **管道 `|`**: + - 将一个命令的输出作为另一个命令的输入,用于链式操作。 + +# 2.作业 + +## 思考: + +```bash +<< 是什么功能? + +<< 是一种称为"here document"(这里文档)的特殊输入重定向方法。它允许在命令行中直接提供多行输入,而无需手动输入或从文件中读 +取。这在编写脚本或在命令行中执行需要大段输入的命令时非常有用。 + +<< 语法 +command << DELIMITER自定义结束分隔符(例END) +text +text +... +END + +command 是要接收输入的命令或程序。 +DELIMITER 是一个自定义的分隔符,可以是任何您选择的不包含空格或特殊字符的字符串,用于标记文档的开始和结束。 +text 是您要传递给命令或程序的文本内容,可以是多行的。 + + +()把命令包括起来,是干什么功能? + + +创建子shell、环境隔离、命令组合、用命令控制上下文 + +创建一个子shell,用于在一个独立的环境中执行一系列命令。 + +1. 基本语法和用法 + 在Shell脚本中,使用圆括号 () 来表示一组命令应该在一个子shell中执行。子shell中的命令可以是任何有效的Shell命令和语句,包括变量赋值、条件语句、循环等。 + +2. 子shell的特点 + 环境隔离: 子shell运行在独立的进程中,因此其环境变量、工作目录以及其他状态与父Shell是隔离的。 + 变量不共享: 在子shell中定义的变量和状态不会传递到父Shell中,它们只存在于子shell的生命周期中。 + 命令组合: 圆括号还可以用来组合多个命令,特别是在管道和命令替换的上下文中,这也是使用圆括号的另一种常见方式。 +``` \ No newline at end of file -- Gitee From ed5df2a23c6960f2c1df5db5b1b39f560886f6b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E8=AF=97=E9=BE=99?= <2483323272@qq.com> Date: Sun, 16 Jun 2024 09:22:43 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黄诗龙 <2483323272@qq.com> --- ...67\347\273\204\347\256\241\347\220\206.md" | 205 ++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100644 "15 \351\273\204\350\257\227\351\276\231/20240614\347\224\250\346\210\267\345\222\214\347\224\250\346\210\267\347\273\204\347\256\241\347\220\206.md" diff --git "a/15 \351\273\204\350\257\227\351\276\231/20240614\347\224\250\346\210\267\345\222\214\347\224\250\346\210\267\347\273\204\347\256\241\347\220\206.md" "b/15 \351\273\204\350\257\227\351\276\231/20240614\347\224\250\346\210\267\345\222\214\347\224\250\346\210\267\347\273\204\347\256\241\347\220\206.md" new file mode 100644 index 0000000..140434b --- /dev/null +++ "b/15 \351\273\204\350\257\227\351\276\231/20240614\347\224\250\346\210\267\345\222\214\347\224\250\346\210\267\347\273\204\347\256\241\347\220\206.md" @@ -0,0 +1,205 @@ +## 用户和用户组管理 + +- 用户管理 + - 添加账户 useradd -m -s /bin/bash db2 + - 删除账户 userdel -r db2 + - 修改账户 usermod [选项同添加账户] db2 + - 查看帐户 getent passwd db2 +- 用户组管理 + - 添加用户组 groupadd stu1 + - 删除用户组 groupdel stu1 + - 添加用户到用户组 usermod -aG stu1 db2 +- 密码管理 + - 设置密码 passwd +- sudo权限管理 + - usermod -aG sudo xxx + - 修改/etc/sudoers文件 +- 登录权限管理 +- 用户环境管理 + - 用户配置文件 : .bashrc + - 用户环境变量: PATH、𝑃𝐴𝑇𝐻、HOME、$SHELL + +## 文件与目录的权限管理 + +- [https://www.runoob.com/linux/linux-file-attr-permission.html](https://gitee.com/link?target=https%3A%2F%2Fwww.runoob.com%2Flinux%2Flinux-file-attr-permission.html) +- 文件类型 + - -普通文件 + - d目录 + - l连接文件 + - b c s p 等其它文件 +- 基本权限 + - r 读 + - w 写 + - x 执行 +- 权限表示 + - 字符表示 + - 数字表示 + - 4 代表 r + - 2 代表 w + - 1 代表 x + - 权限修改 + - chmod 修改权限 + - chown 修改拥有者 + - chgrp 修改所属组 + - 权限的继承 + - 目录权限下文件和目录的影响 + - umask + - 特权权限 + - SUID + - SGID + - SBIT + - 隐藏权限 + - i + - 用在文件上,无法对该文件进行任何修改 + - 用在目录上,无法在里面创建新文件,但可以修改已有文件 + - a + - 除了可追加内容外,无法进行其它修改 + - 隐藏权限的操作 + - 修改隐藏权限 chattr + - chattr +i XXX + - chattr -i XXX + - 查看隐藏权限 + - lsattr + +### 权限管理练习 + +1. 创建/guanli 目录,在/guanli下创建zonghe 和 jishu 两个目录(一条命令) + + ```bash + mkdir /guanli/zonghe /guanli/jishu -p + ``` + +2. 添加组帐号zonghe、caiwu、jishu,GID号分别设置为2001、2002、2003 + + ```bash + groupadd -g 2001 zonghe + groupadd -g 2002 caiwu + groupadd -g 2003 jishu + ``` + +3. 创建jerry、kylin、tsengia、obama用户,其中的kylin用户帐号在2020年12月30日后失效 + + ```bash + useradd -m -s /bin/bash jerry + useradd -m -s /bin/bash -e 2020-12-30 kylin + useradd -m -s /bin/bash tsengia + useradd -m -s /bin/bash obama + ``` + +4. 将jerry、kylin、tsengia、obama等用户添加到zonghe组内 + + ```bash + usermod -aG zonghe jerry + usermod -aG zonghe kylin + usermod -aG zonghe tsengia + usermod -aG zonghe obama + ``` + +5. 创建handy、cucci用户,其中cucci帐号的登录Shell设置为“/sbin/nologin” + + ```bash + useradd -m -s /bin/bash handy + useradd -m -s /sbin/nologin cucci + ``` + +6. 将handy、cucci等用户添加到jishu组内 + + ```bash + usermod -aG jishu handy + usermod -aG jishu cucci + ``` + +7. 将上述的所有用户均要求加入到guanli组内 + + ```bash + usermod -aG guanli jerry + usermod -aG guanli kylin + usermod -aG guanli tsengia + usermod -aG guanli obama + usermod -aG guanli handy + usermod -aG guanli cucci + ``` + +8. 将zonghe组内的obama用户删除 + + ```bash + gpasswd -d obama zonghe + ``` + +9. 为jerry用户设置密码为“123456”(使用普通方法)为cucci用户设置密码为“redhat” + + ```bash + passwd jerry + passwd cucci + ``` + +10. 将jerry用户锁定,并查看锁定状态 + + ```bash + usermod -L jerry # -L 是锁定 -U 是解锁 + ``` + +11. 打开两个xshell窗口,通过(who 或者 w)命令查看连接状态,并通过fuser杀掉其中一个 + + ```bash + fuser -k pts/2 #不知道为啥报错了 + ``` + +12. 查看cucci用户,属于那些组,并查看其详细信息 + + ```bash + id -Gn cucci && finger cucci + groups cucci + ``` + +13. 手工创建账号student(预留) + + ```bash + useradd -m -s /bin/bash student + ``` + +14. 设置权限及归属:/guanli目录属组设为guanli, /guanli/zonghe目录的属组设为zonghe /guanli/jishu目录的属组设为jishu,设置3个目录都是禁止其他用户访问的权限 + + ```bash + chgrp guanli /guanli + chgrp zonghe /guanli/zonghe/ + chgrp jishu /guanli/jishu/ + chmod -R o-rwx /guanli + ``` + +15. 建立公共目录/ceshi允许技术组内的所有用户读取、写入、执行文件, 禁止其他用户读、写、执行 + + ```bash + mkdir /ceshi && chgrp jishu /ceshi && chmod 070 /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 hangy + groups handy + ``` \ No newline at end of file -- Gitee