diff --git "a/29 \351\203\255\350\213\245\346\230\225/20240606 vim2.0.md" "b/29 \351\203\255\350\213\245\346\230\225/20240606 vim2.0.md" new file mode 100644 index 0000000000000000000000000000000000000000..171237cacbb2967070ed98017061640f019c92a9 --- /dev/null +++ "b/29 \351\203\255\350\213\245\346\230\225/20240606 vim2.0.md" @@ -0,0 +1,131 @@ +1. vi 编辑器有几种模式? + + ​ 命令模式 编辑模式 输入模式 + +2. 如何进入 vi 编辑器的插入模式 + + ​ i + +3. 如何进入 vi 编辑器的可视化模式 + + ​ 字符模式,在命令模式中按v键进入 + + ​ 行模式,在命令模式中按V键进入 + + ​ 块模式,在命令模式中按Ctrl+ v键进入 + +4. 在 vi 编辑器中如何复制一行 + + ​ yy + +5. 在 vi 编辑器中如何进行粘贴 + + ​ p 在当前位置后粘贴 + + ​ P 在当前位置前粘贴 + +6. 如何删除从 3 行到 15 行的所有数据 + + ​ esc :3,15d + +7. vim练习: + + - 光标移动练习,命令模式下: + + - 单位级 h j k l + - 单词级 w e b + - 块级 gg G 0 ^ $ H M L ngg nj nk + + 把下列句子按照第一句的正确顺序修改好并把多余的空行删除 + + ``` + this is a simple easy vim tutorial + + this is a simple easy vim tutorial + this is a simple easy vim tutorial + + + this is a simple easy vim tutorial + this is a simple easy vim tutorial + this is a simple easy vim tutorial + + this is a simple easy vim tutorial + + + this is a simple easy vim tutorial + this is a simple easy vim tutorial + + + this is a simple easy vim tutorial + this is a simple easy vim tutorial + this is a simple easy vim tutorial + this is a simple easy vim tutorial + + + this is a simple easy vim tutorial + this is a simple easy vim tutorial + + this is a simple easy vim tutorial + this is a simple easy vim tutorial + + this is a simple easy vim tutorial + this is a simple easy vim tutorial + + this is a simple easy vim tutorial + this is a simple easy vim tutorial + this is a simple easy vim tutorial + this is a simple easy vim tutorial + + + dd yy p + ``` + + 先敲出以下代码,然后修正以下代码中的错误单词、重复单词、错误格式、多余行,修改函数名为 typing 并为定时器添加 300 毫秒延迟 + + ``` + const bbb = typing() => { + // this is is a description + // another descriptttion + const timer = setTimeout(( ) => { + console.log(that) alert('cool!',300) + // awosome man ! + }) + } + ``` + + 尝试在下面的文本中进行复制粘贴练习 + + ``` + 删除这一行 + dd + 粘贴到这一行下面 + p + 剪切 ABC 并把它粘贴到 XYZ 前面,使这部分内容看起来像 + dP + 剪切 并把它粘贴到 ABC XYZ 前面。 + ``` + + 尝试修改下列文本的大小写 + + ``` + Change this line to UPPERCASE, THEN TO lowercase. + 使用V选中该行,gu小写,gU大写。 + ``` + + 按下面的说明进行操作 + + ``` + 按 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` 参数用于指定显示的深度。 + + + + + + + + + +## 重定向和管道 + +在 Unix 和 Linux 系统中,文件描述符用于表示打开的文件或者输入/输出流。常用的文件描述符包括: + +- `0`:标准输入(stdin): 键盘输入 +- `1`:标准输出(stdout): 直接显示在屏幕,不包含错误信息 +- `2`:标准错误(stderr): 只包含错误信息 + +使用形式: + +- 定向符前直接用数字,如 1> 1.txt 、 2> 2.txt +- 定向符后紧跟定向符并加&号如 >&1 + +### 重定向 + +重定向允许将命令的输入或输出重定向到文件或其他命令。常用的重定向符号包括 `>`、`>>`、`<`、`2>` &>等。 + +#### 输出重定向 + +1. **标准输出覆盖重定向 `>`** + + 将命令的标准输出重定向到一个文件,如果文件已经存在,则覆盖它。 + + ```bash + ls > filelist.txt + ``` + + 这个命令将 `ls` 命令的输出保存到 `filelist.txt` 文件中,如果文件已存在,则会被覆盖。 + + + +2. **追加输出重定向 `>>`** + + 将命令的标准输出追加到一个文件的末尾,如果文件不存在,则创建它。 + + ```bash + echo "Hello, World!" >> greetings.txt + ``` + + 这个命令会将 "Hello, World!" 追加到 `greetings.txt` 文件中。 + +3. 注意: + + 1. **标准输出不含错误信息** + + +#### 输入重定向 + +1. **输入重定向 `<`** + + 将文件的内容作为命令的输入。 + + ```bash + sort < unsorted_list.txt + + # 原文件 + apple + orange + banana + + # 这个命令将 `unsorted_list.txt` 文件的内容作为 `sort` 命令的输入进行排序。 + ``` + + + + + + 场景:你需要从一个SQL脚本文件中读取命令并在数据库中执行。 + + ```bash + # 示例: + mysql -u root -p mydatabase < script.sql + #该命令将 script.sql 文件中的SQL命令导入到 mydatabase 数据库中。 + # 还原数据库常用的命令 + ``` + + + +#### 错误重定向 + +``` + 参考:find / -name '*.conf' +``` + + + +1. **错误输出重定向 `2>`** + + 将命令的错误输出重定向到一个文件。 + + ```bash + reboot 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 > 1.txt 2>&1 # 正确和错误原版混搭,原封不动 + + command > 1.txt 2>> 1.txt # 先正确后错误 + command 2> 1.txt >> 1.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 "*.conf" 2> errors.txt | sort > sorted_log_files.txt + + + ``` + + 这个命令会在根目录下查找所有以 `.log` 结尾的文件,将错误信息重定向到 `errors.txt`,并将结果进行排序后保存到 `sorted_log_files.txt`。 + +### 总结 + +- **重定向**: + - `>`:将输出重定向到文件(覆盖)。 + - `>>:将输出追加到文件。 + - `<`:将文件内容作为输入。 + - `2>`:将错误输出重定向到文件。 + - `2>>`:将错误输出追加到文件。 + - `&>`:将标准输出和错误输出同时重定向到文件。 + - `&>>`:将标准输出和错误输出同时追加重定向到文件。 + +- **管道 `|`**: + - 将一个命令的输出作为另一个命令的输入,用于链式操作。 + + + +**扩展:** + +- 输入输出一起使用的情况 + + ```basn + sort < a.txt > b.txt + ``` + +- + +- **重定向标准输出和错误输出到不同文件:** + + - 若要将标准输出重定向到一个文件,将错误输出重定向到另一个文件,可以使用以下命令: + + ```sh + command > output.txt > error.txt + ``` + + 这样,标准输出会被写入 `output.txt`文件,而错误输出则会被写入`error.txt` + + 文件。 + +- **将错误输出追加到标准输出文件中:** + + - 若要将错误输出追加到标准输出文件中,可以使用以下命令: + + ```bash + command > output.txt 2>&1 + # 等效谁? + ``` + + 这会将标准输出写入`output.txt`文件,同时将错误输出追加到标准输出文件中。 + +- **将错误输出丢弃:** + + - 若要忽略错误输出,可以将错误输出重定向到特殊设备 `/dev/null + ` + + ,例如: + + ```bash + command 2> /dev/null + ``` + 这会将错误输出发送到 `/dev/null + `,从而丢弃错误输出而只保留标准输出 + + + +## 思考: + +``` +<< 是什么功能?here document +()把命令包括起来,是干什么功能? +``` + + + +补充一个实用命令: + +`tee` 是一个在Unix和类Unix操作系统上非常有用的命令行实用程序。它的作用是从标准输入中读取数据,并同时将数据输出到标准输出和一个或多个文件中。 + +下面是 `tee` 命令的基本语法: +```bash +tee [OPTION]... [FILE]... +``` +- `[OPTION]`: 一些选项,可以控制 `tee` 命令的行为。 +- `[FILE]`: 一个或多个文件名,表示要将数据写入的目标文件。 + +### 示例 1:简单的使用方式 +```bash +echo "Hello, world" | tee output.txt +``` +在这个示例中,`echo "Hello, world"` 命令的输出被送到 `tee` 命令,然后 `tee` 将这个输出写入到 `output.txt` 文件,并同时将其输出到标准输出。 + +### 示例 2:同时写入多个文件 +```bash +echo "Hello, world" | tee file1.txt file2.txt +``` +在这个示例中,`tee` 命令将 `Hello, world` 写入到 `file1.txt` 和 `file2.txt` 文件中,并同时将其输出到标准输出。 + +### 示例 3:追加写入文件 +```bash +echo "New data" | tee -a file1.txt +``` +通过 `-a` 选项,`tee` 命令将数据追加写入到 `file1.txt` 文件中,而不是覆盖原有内容。 + +### 示例 4:结合重定向和管道 +```bash +command1 | tee >(command2) | command3 +``` +在这个示例中,`command1` 的输出被送到 `tee` 命令,然后 `tee` 将输出传递给 `command2`,并且同时将输出发送到 `command3`。这种结构可以用于复杂的管道命令中。 + +### 选项 +- `-a`:追加写入文件而不是覆盖。 +- `-i`:忽略中断信号。 +- `--help`:显示帮助信息和选项列表。 +- `--version`:显示版本信息。 + +### 总结 +`tee` 命令是一个灵活而强大的工具,可以用于在命令行中处理数据流,同时向多个文件写入数据。 diff --git "a/29 \351\203\255\350\213\245\346\230\225/20240613 \351\207\215\345\256\232\345\220\221\345\222\214tee.md" "b/29 \351\203\255\350\213\245\346\230\225/20240613 \351\207\215\345\256\232\345\220\221\345\222\214tee.md" new file mode 100644 index 0000000000000000000000000000000000000000..b952149a3a2599cad3d2247e7ef00fc0bef77d82 --- /dev/null +++ "b/29 \351\203\255\350\213\245\346\230\225/20240613 \351\207\215\345\256\232\345\220\221\345\222\214tee.md" @@ -0,0 +1,43 @@ +# 笔记 + +文件描述符 + +- `0`:标准输入。 键盘输入 + + `1`:标准输出。 直接显示在屏幕,不包含错误信息 + + `2`:标准错误。只包含错误信息 + +重定向 + +`>`:标准输出覆盖重定向 + +`>>` :标准输出追加重定向 + +`<`:输入重定向。将文件的内容作为命令的输入。 + +`&>`:重定向标准输出和标准错误输出 + +`/dev/null`:空文件 + +# 作业 + +`<<` :被称为“Here Documents”()。直接在命令行或脚本中定义一大段文本,然后将其作为命令的标准输入。分界符可以是任意不包含空格的字符串,通常是一个单词或者一对引号。 + +```bash +cat << "END"/END | a.txt +character=utf8 +END + +##有双引号,Here Document 内部的内容将被视为字面值,即除了换行符之外,所有的内容 都将被原样传递给命令,它们不会被 shell 解释执行。 +##没有双引号,Here Document 内部的内容会经过 shell 解析,"character=utf8"会被 执行。 +``` + + + +`()`的用法 + +1. 数组赋值或者初始化数组; +2. 子Shell赋值:小括号中的内容会开启一个子shell独立运行;括号中以分号连接,最后一个命令不需要;各命令和括号无需空格; +3. 实现多条命令集合:新开多条命令来执行,各个命令之间用分号隔开,最后一个命令必须要分号来隔开; +4. 与”$“结合实现命令替换:等同于`cmd` 扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令。此形式要注意使用的Shell类型。 \ No newline at end of file diff --git "a/29 \351\203\255\350\213\245\346\230\225/20240614 \347\224\250\346\210\267\345\217\212\347\273\204\347\256\241\347\220\206.md" "b/29 \351\203\255\350\213\245\346\230\225/20240614 \347\224\250\346\210\267\345\217\212\347\273\204\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..2ddbc6a1149b51fcf0d1a500228b9f54367ba627 --- /dev/null +++ "b/29 \351\203\255\350\213\245\346\230\225/20240614 \347\224\250\346\210\267\345\217\212\347\273\204\347\256\241\347\220\206.md" @@ -0,0 +1,318 @@ +## 用户和用户组管理 + +https://www.cnblogs.com/yuan9910/p/11278550.html + +- 用户管理 + - 添加账户 useradd -m -s /bin/bash db2 + - 删除账户 userdel -r db2 + - 修改账户 usermod [选项同添加账户] db2 + - 查看帐户 getent passwd db2 +- 用户组管理 + - 添加用户组 groupadd stu10 + - 删除用户组 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://markdown.liuchengtu.com/work/uploads/upload_de9bdef042c1d803620aee91d3a1dc9b.png) + +- 文件类型 + - -普通文件 + - 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 + root@hecs-28964:~# mkdir -p /guanli/zonghe /guanli/jishu + + ``` + + + +2. 添加组帐号zonghe、caiwu、jishu,GID号分别设置为2001、2002、2003 + + ```bash + root@hecs-28964:~# groupadd -g 2001 zonghe && groupadd -g 2002 caiwu && groupadd -g 2003 jishu + ``` + + + +3. 创建jerry、kylin、tsengia、obama用户,其中的kylin用户帐号在2020年12月30日后失效 + + ```bash + root@hecs-28964:~# adduser jerry + root@hecs-28964:~# adduser tsengia + root@hecs-28964:~# adduser obama + root@hecs-28964:~# useradd -m -s /bin/bash -e 2020-12-30 kylin + + [root@localhost ~]# useradd jerry && useradd -e 2020-12-30 kylin && useradd tsengia && useradd obama + ``` + + + +4. 将jerry、kylin、tsengia、obama等用户添加到zonghe组内 + + ```bash + root@hecs-28964:~# usermod -aG zonghe jerry + root@hecs-28964:~# usermod -aG zonghe kylin + root@hecs-28964:~# usermod -aG zonghe tsengia + root@hecs-28964:~# usermod -aG zonghe obama + + gpasswd -M 用户名1、2 组名 ## 添加多个用户到组 + [root@localhost ~]# gpasswd -M jerry,kylin,tsengia,obama zonghe + ``` + + + +5. 创建handy、cucci用户,其中cucci帐号的登录Shell设置为“/sbin/nologin” + + ```bash + root@hecs-28964:~# adduser handy + root@hecs-28964:~# useradd -m -s /sbin/nologin cucci + ``` + + + +6. 将handy、cucci等用户添加到jishu组内 + + ```bash + root@hecs-28964:~# usermod -aG jishu handy + root@hecs-28964:~# usermod -aG jishu cucci + + gpasswd -M 用户名1、2 组名 ## 添加多个用户到组 + ``` + +7. 将上述的所有用户均要求加入到guanli组内 + + ```bash + root@hecs-28964:~# usermod -aG guanli handy + root@hecs-28964:~# usermod -aG guanli cucci + root@hecs-28964:~# usermod -aG guanli jerry + root@hecs-28964:~# usermod -aG guanli kylin + root@hecs-28964:~# usermod -aG guanli tsengia + root@hecs-28964:~# usermod -aG guanli obama + + gpasswd -M 用户名1、2 组名 ## 添加多个用户到组 + ``` + + + +8. 将zonghe组内的obama用户删除 + + ``` + root@hecs-28964:~# gpasswd -d obama zonghe + Removing user obama from group zonghe + + ``` + + + +9. 为jerry用户设置密码为“123456”(使用普通方法)为cucci用户设置密码为“redhat”(使用--stdin方法) + + ```bash + root@hecs-28964:~# passwd jerry + root@hecs-28964:~# passwd cucci + [root@localhost ~]# echo "redhat" |passwd --stdin cucci + ``` + + + +10. 将jerry用户锁定,并查看锁定状态 + + ```bash + ## 锁定 usermod -L = passwd -l + ## 解锁 usermod -U = passwd -u + root@hecs-28964:~# usermod -L jerry + root@hecs-28964:~# w jerry + 20:05:16 up 84 days, 1:15, 2 users, load average: 0.01, 0.00, 0.00 + USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT + + passwd -S 用户名 ## 查看用户锁定状态 + [root@localhost ~]# passwd -S jerry + ``` + + + +11. **打开两个xshell窗口,通过(who 或者 w)命令查看连接状态,并通过fuser杀掉其中一个** + + ```bash + [root@localhost ~]# w + [root@localhost ~]# fuser -k /dev/pts/2 + ``` + + + +12. 查看cucci用户,属于那些组,并查看其详细信息 + + ```bash + root@hecs-28964:~# id cucci + uid=1007(cucci) gid=1007(cucci) groups=1007(cucci),2003(jishu),2004(guanli) + + ``` + + + +13. **手工创建账号student(预留)** + + ``` + root@hecs-28964:~# useradd student + + + [root@localhost ~]# vi /etc/passwd + student:x:1014:1014::/home/student:/bin/bash + [root@localhost ~]# vi /etc/shadow + student::18107:0:99999:7::: + [root@localhost ~]# vi /etc/group + student:x:1014: + [root@localhost ~]# mkdir /home/student + [root@localhost ~]# cd /etc/skel/ + [root@localhost skel]# ls -a | cp .b* /home/student + ``` + + + +14. 设置权限及归属:/guanli目录属组设为guanli, /guanli/zonghe目录的属组设为zonghe + + ```bash + chgrp [-R] 组名 目录路径 ## 使用了-R选项,则会递归修改目录及其子目录的所属组。 + root@hecs-28964:~# chgrp guanli /guanli + root@hecs-28964:~# chgrp zonghe /guanli/zonghe + + + + [root@localhost ~]# chown :guanli /guanli &&chown :zonghe /guanli/zonghe/ &&chown :jishu /guanli/jishu/ && chmod -R o-rwx /guanli/ + ``` + + /guanli/jishu目录的属组设为jishu,设置3个目录都是禁止其他用户访问的权限 + + ```bash + root@hecs-28964:~# chgrp jishu /guanli/jishu + root@hecs-28964:~# chmod o-rwx /guanli /guanli/zonghe /guanli/jishu + + [root@localhost ceshi]# chown :jishu /ceshi/ + [root@localhost ceshi]# chmod g=rwx,o-rwx /ceshi/ + ``` + + + +15. 建立公共目录/ceshi允许技术组内的所有用户读取、写入、执行文件, 禁止其他用户读、写、执行 + + ```bash + root@hecs-28964:~# chmod g+rwx /ceshi + root@hecs-28964:~# chmod o-rwx /ceshi + + + [root@localhost ceshi]# chown :jishu /ceshi/ + [root@localhost ceshi]# chmod g=rwx,o-rwx /ceshi/ + ``` + + + +16. 清除jerry用户密码 + + ```bash + root@hecs-28964:~# passwd -d jerry + passwd: password expiry information changed. + ``` + + + +17. 锁定cucci用户密码并查看状态 + + ```bash + root@hecs-28964:~# usermod -L cucci + root@hecs-28964:~# w cucci + 20:06:30 up 84 days, 1:16, 2 users, load average: 0.00, 0.00, 0.00 + USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT + ``` + + + +18. 修改obama用户的UID为8888 + + ```bash + root@hecs-28964:~# usermod -u 8888 obama + ``` + + + +19. **通过passwd命令修改kylin用户的最长密码使用期限为60天** + + ```bash + [root@localhost ceshi]# passwd -x 60 kylin + ``` + + + +20. 通过id groups等命令查看用户handy信息 + +```bash +root@hecs-28964:~# id handy +uid=1006(handy) gid=1006(handy) groups=1006(handy),2003(jishu),2004(guanli) +root@hecs-28964:~# groups handy +handy : handy jishu guanli +root@hecs-28964:~# + + +## finger +[root@localhost ceshi]# finger handy +Login: handy Name: +Directory: /home/handy Shell: /bin/bash +Never logged in. +No mail. +No Plan. + +``` +