diff --git "a/\350\265\226\351\274\216\346\226\207/20240617.md" "b/\350\265\226\351\274\216\346\226\207/20240617.md" new file mode 100644 index 0000000000000000000000000000000000000000..bc98b8c50cb3fc02aa639c44ebe458c93ce7310c --- /dev/null +++ "b/\350\265\226\351\274\216\346\226\207/20240617.md" @@ -0,0 +1,99 @@ +### 周期任务练习 + +执行在家目录touch a.txt + +1. 每天3:00执行一次 + + 0 3 * * * /home/touch a.txt + +2. 每周六2:00执行 + + 0 2 * * 6/home/touch a.txt + +3. 每周六1:05执行 + + 5 1 * * 6/home/touch a.txt + +4. 每周六1:25执行 + + 25 1 * * 6/home/touch a.txt + +5. 每天8:40执行 + + 40 8 * * */home/touch a.txt + +6. 每天3:50执行 + + 50 3 * * */home/touch a.txt + +7. 每周一到周五的3:40执行 + + 40 3 * * 1-5/home/touch a.txt + +8. 每周一到周五的3:41开始,每10分钟执行一次 + + 41-59 /10 3 * * 1-5/home/touch a.txt + + */10 4-23.59,0-3 * * 1-5 + +9. 每天的10:31开始,每2小时执行一次 + + 31 10-23/2 * * */home/touch a.txt + + 31 0-9/2 * * * + +10. 每周一到周三的9:30执行一次 + + 30 9* * 1-3/home/touch a.txt + +11. 每周一到周五的8:00,每周一到周五的9:00执行一次 + + 0 8 * * 1-5/home/touch a.txt + + 0 8 * * 1-5/home/touch a.txt + +12. 每天的23:45分执行一次 + + 45 23 * * * + +13. 每周三的23:45分执行一次 + + 45 23 * * 3 + +14. 每周一到周五的9:25到11:35、13:00到15:00之间,每隔10分钟执行一次 + + 25-59/10 9 * * 1-5 + + */10 10-11 * * 1-5 + + 0-35/10 11 * * 1-5 + + */10 13-14 * * 1-5 + + 0-50/10 15 * * 1-5 + +15. 每周一到周五的8:30、8:50、9:30、10:00、10:30、11:00、11:30、13:30、14:00、14:30、15:00分别执行一次 + + 30 8 * * 1-5 + + 50 8 * * 1-5 + + 30-59/30 9-14 * * 1-5 + +16. 每天16:00、10:00执行一次 + + 0 16 * * * + + 0 10 * * * + +17. 每天8:10、16:00、21:00分别执行一次 + + 10 8 * * * + + 0 16 * * * + +18. 每天7:47、8:00分别执行一次 + + 47 7 * * * + + 0 8 * * * \ No newline at end of file diff --git "a/\350\265\226\351\274\216\346\226\207/20240619.md" "b/\350\265\226\351\274\216\346\226\207/20240619.md" new file mode 100644 index 0000000000000000000000000000000000000000..70e21d4441a2b7634f54c718f4624ff950adb694 --- /dev/null +++ "b/\350\265\226\351\274\216\346\226\207/20240619.md" @@ -0,0 +1,134 @@ +### 周期任务练习 + +执行在家目录touch a.txt + +1. 每天3:00执行一次 + + ``` + 0 3 * * * echo '命运' >> home/tzh666/a.txt + ``` + +2. 每周六2:00执行 + + ``` + 0 2 * * 6 echo '命运' >> home/tzh666/a.txt + ``` + +3. 每周六1:05执行 + + ``` + 5 1 * * 6 echo '命运' >> home/tzh666/a.txt + ``` + +4. 每周六1:25执行 + + ``` + 25 1 * * 6 echo '命运' >> home/tzh666/a.txt + ``` + +5. 每天8:40执行 + + ``` + 40 8 * * * echo '命运' >> home/tzh666/a.txt + ``` + +6. 每天3:50执行 + + ``` + 50 3 * * * echo '命运' >> home/tzh666/a.txt + ``` + +7. 每周一到周五的3:40执行 + + ``` + 40 3 * * 1-5 echo '命运' >> home/tzh666/a.txt + ``` + +8. 每周一到周五的3:41开始,每10分钟执行一次 + + ``` + 41-59/10 3 * * 1-5 echo '命运' >> home/tzh666/a.txt + */10 4-23.59,0-3 * * 1-5 echo '命运' >> home/tzh666/a.txt + ``` + +9. 每天的10:31开始,每2小时执行一次 + + ``` + 31 10-23/2 * * * + 31 0-9/2 * * * + ``` + +10. 每周一到周三的9:30执行一次 + + ``` + 30 9 * * 1-3 + ``` + +11. 每周一到周五的8:00,每周一到周五的9:00执行一次 + + ``` + 0 8 * * 1-5 + 0 9 * * 1-5 + ``` + +12. 每天的23:45分执行一次 + + ``` + 45 23 * * * + ``` + +13. 每周三的23:45分执行一次 + + ``` + 45 23 * * 3 + ``` + +14. 每周一到周五的9:25到11:35、13:00到15:00之间,每隔10分钟执行一次 + + ``` + ## 9:25到11:35 + 25-59/10 9 * * 1-5 #9.25-10 + */10 10-11 * * 1-5 #10-11 + 0-35/10 11 * * 1-5 #11 + ===================== + ## 13:00到15:00之间 + */10 13-14 * * 1-5 # 1-2 + *-50/10 15 * * 1-5 # 3,由于是每隔10分钟执行一次即15.50后就跳至4点不符合题意 + ``` + +15. 每周一到周五的8:30、8:50、9:30、10:00、10:30、11:00、11:30、13:30、14:00、14:30、5:00分别执行一次 + + ``` + 30 8 * * 1-5 + 50 8 * * 1-5 + 30 9 * * 1-5 + 0 10 * * 1-5 + 30 10 * * 1-5 + 0 11 * * 1-5 + 30 11 * * 1-5 + 30 13 * * 1-5 + 0 14 * * 1-5 + 0 15 * * 1-5 + ``` + +16. 每天16:00、10:00执行一次 + + ``` + 0 16 * * * + 0 10 * * * + ``` + +17. 每天8:10、16:00、21:00分别执行一次 + + ``` + 10 8 * * * + 0 16 * * * + 0 21 * * * + ``` + +18. 每天7:47、8:00分别执行一次 + +``` +47 7 * * * +0 8 * * * +``` \ No newline at end of file diff --git "a/\350\265\226\351\274\216\346\226\207/20240620.md" "b/\350\265\226\351\274\216\346\226\207/20240620.md" new file mode 100644 index 0000000000000000000000000000000000000000..633f0987df3b54adac274a90f4b9bbe3daa4827b --- /dev/null +++ "b/\350\265\226\351\274\216\346\226\207/20240620.md" @@ -0,0 +1,106 @@ +### 练习题 1: 显示当前所有的环境变量 + +- 使用`printenv`或`env`命令来显示所有的环境变量。 + +``` +cat etc/printenv +env +``` + +### 练习题 2: 显示`HOME`环境变量的值 + +- 使用`echo`命令和`$`符号来显示`HOME`环境变量的值。 + +``` +echo $HOME +``` + +### 练习题 3: 临时设置一个新的环境变量 + +- 设置一个名为`MY_AGE`的环境变量,并将其值设置为`18`。 + +``` +export $MY_AGE="18" +``` + +### 练习题 4: 显示新设置的环境变量 + +- 使用`echo`命令来显示`MY_AGE`的值。 + +``` +echo $MY_VARIABLE +``` + +### 练习题 5: 在新的shell会话中检查环境变量 + +- 打开一个新的终端窗口或标签页,并尝试显示`MY_AGE`的值。你会看到什么?为什么? + + ``` + 无显示,因为之前只是建立了一个临时变量,重启后就会消失要想保存请写至文件里去 + ``` + +### 练习题 6: 修改`PATH`环境变量 + +- 将`你当前用户的家目录`添加到你的`PATH`环境变量的末尾位置 + +``` +export PATH=$PATH /home/tzh666 +``` + +将`/tmp`添加到你的`PATH`环境变量的开始位置,(注意:这可能会覆盖其他路径中的同名命令,所以请谨慎操作)。 + +``` +export PATH=/tmp $PATH +``` + +### 练习题 7: 验证`PATH`的修改 + +- 使用`echo`命令显示`PATH`的值,并确认`前面添加的目录`已经被添加到对应位置。 + +``` +echo $PATH +``` + +### 练习题 8: 永久设置环境变量 + +- 在你的shell配置文件中(如`~/.bashrc`、`~/.bash_profile`、`~/.zshrc`等,取决于你使用的shell和配置)添加一行来永久设置`MY_NAME`,值设置为`奥德彪`。 + +例如,对于bash shell,你可以使用: + +``` +vim .bshrc %% vim etc/profile +export $MY_NAME="奥德彪 +``` + +如何让`MY_NAME`生效,并验证 + +``` +source /etc/profile && source .bashrc +cat /etc/profile && cat .bashrc +``` + +### 练习题 9: 清理 + +- 清除你之前设置的`MY_AGE`和`PATH`的修改(如果你不想永久保留它们)。 + +### 练习题 10: 修改默认器 + +- 使用`EDITOR`变量,修改你默认的编辑器为nano。 + +``` +export EDITOR="usr/bin/nano"#nano的绝对路径 +``` + +### 练习题 11: 修改语言 + +- 使用`LANG`变量,让你的文件支持中文和utf8编码来避免乱码。 + +``` +export LANG="zh_CN".UTF-8 +``` + +- 使用`LANGUAGE`变量,让你的命令提示为中文 + +``` +export LANGUAGE="zh_CN".UTF-8 +``` \ No newline at end of file diff --git "a/\350\265\226\351\274\216\346\226\207/20240622.md" "b/\350\265\226\351\274\216\346\226\207/20240622.md" new file mode 100644 index 0000000000000000000000000000000000000000..045a812cf214a44ec0d2b7511dc9d445767ff5cf --- /dev/null +++ "b/\350\265\226\351\274\216\346\226\207/20240622.md" @@ -0,0 +1,238 @@ +# 用户与文件权限的管理 + +课后作业: + +- 什么是linux 硬连接和软连接(快捷方式) + +1. 用户管理 + 1. 分类 + - 超级用户 root ,最高权限,不受一般权限的限制,编号0 ,提示符是 # + - 内置用户 :由系统自动创建 ,编号1-999 + - 普通用户 :我们用root权限手动创建用户,受权限控制 ,编号从1000依次递增 + - 创建普通用户test会自动创建他的编号u ,他原生组g(和用户名同名test),附加组 G (test),初始化的时候一定是u 1000(test), 1000(test),1000(test) + - 普通不能创建普通用户,只有root + - 提示符是 $ + - u user 用户 uid + - group 组 gid + - Group + 2. 用户 + 1. 添加 + - useradd -m -d /home/YYY -s /bin/bash XXX + - adduser + 2. 删除 + - userdel XXX + - juserdel -r xxx 删除用户和相关的目录 + 3. 修改 + - usermod -G 组号|组名 XXX : usermod -G stu u15 覆盖原来的附加组(扩展组) + - usermod -aG 组号|组名 XXX : usermod -aG stu u15 保留原有附加组前提下,追加新的附加组 + - usermod -s /bin/aaa u15 + 4. 密码 + - passwd 用户名 root修改指定用户的密码 + - passwd 修改当前登录用户的密码,即自己的密码 + 5. 查询 + - id 用户名 指定用户 + - /etc/passwd + 6. 切换 + - su 仅仅切换了身份,不切换目录和shell等环境 + - su - 完全切换,连环境变量和目录一起切换 + 3. 用户组:编号也是从1000开始 + 1. 添加 + - groupadd student 添加一个组,编号自动的 + - groupadd -g 8888 student2 添加一个组,编号自动的 + 2. 删除 groupdel 组号|名 + 3. 修改 groupmod + 4. 查询 + - /etc/group +2. 文件管理 + - 文件属性:10个字符,连接数或子目录数,文件拥有者,文件所属的用户组,文件大小,修改时间,文件|目录名 + - 10个字符: + - 第1位 文件类型 + - d 目录 + - -普通文件 + - l 连接文件 + - b c s p 等其它文件 + - 后9位分别代表了:三种角色的权限,每3位一组 + - 2-4 拥有者权限 + - 5-7 用户组的权限 + - 8-10 其它人的权限 + - 基本权限 + - 读 r (read) : 打开并显示文件内容,查看目录基本信息 + - 写 w (write) : 文件,可以写入,修改,删除内容,目录:创建,修改,删除文件|目录 + - 执行 x (execute) :文件如果是二进制或脚本文件就可以执行,目录表示可以进入 + - 特殊权限 + - SUID + - GUID + - 隐藏权限 + - lsattr 列出隐藏权限 + - chattr 修改隐藏权限 + - +i 增加,不得任意更动文件或目录的效果 + - -i 消除 + - + - 权限表示 + - 字符 + - 数字 + - r == 4 + - w == 2 + - x == 1 + - 身份表示 + - u 拥有者 (user) + - g 用户组(group) + - o 其它人 (other) + - a 所有人 (all) + - 修改权限 :root可以改任何文件,而拥有者可以改自己拥有文件 + - chmod 要的权限 文件|目录 + - chmod u+w,g-r,o=rw 1.txt + - chmod 755 1.txt + - 修改拥有者 + - chown 用户名 文件名 + - 修改文件所属的用户组 + - chgrp 组名|号 文件|目录 + - sudo + - 修改 /etc/sudoers 文件 + - 将 用户追加到sudo组 :sudo usermod -aG sudo u15 +3. Linux执行命令的过程 + 1. 如果这个命令是绝对路径,就直接执行 + 2. 如果不是, + 1. 查一下是不是别名,是执行对应的命令 + 2. 从环境变量中找这个命令 $PATH中的路径依次查找这个命令 + 3. 本地也没有,就报错了。 + +### 权限管理练习 + +1. 创建/guanli 目录,在/guanli下创建zonghe 和 jishu 两个目录(一条命令) + + ``` + mkdir -p guanli/{zonghe,jishu} + ``` + +2. 添加组帐号zonghe、caiwu、jishu,GID号分别设置为2001、2002、2003 + + ``` + sudo groupadd -g 2001 zonghe + sudo groupadd -g 2002 caiwu + sudo groupadd -g 2002 caiwu + ``` + +3. 创建jerry、kylin、jerry、obama用户,其中的kylin用户帐号在2020年12月30日后失效 + + ``` + sudo adduser kylin -e 2020-12-30 + sudo adduser jerry obama + ``` + +4. 将jerry、kylin、tsengia、obama等用户添加到zonghe组内 + + ``` + sudo usermod -aG zonghe jerry kylin tsengia obama + /*其余同上*/ + ``` + +5. 创建handy、cucci用户,其中cucci帐号的登录Shell设置为“/sbin/nologin” + + ``` + sudo useradd handy + sudo useradd cucc -s /sbin/nologin + ``` + +6. 将handy、cucci等用户添加到jishu组 + + ``` + usermod -aG jishu jerry + usermod -aG jishu cucc + ``` + +7. 将上述的所有用户均要求加入到guanli组内 + + ``` + usermod -aG guanli handy + usermod -aG guanli cucc + ``` + +8. 将zonghe组内的obama用户删除 + + ``` + sudo gpasswd -d obama zonghe + ``` + +9. 为jerry用户设置密码为“123456”(使用普通方法)为cucci用户设置密码为“redhat” + + ``` + sudo passwd jerry + sudo passwd cucci + ``` + +10. 将jerry用户锁定,并查看锁定状态 + + ``` + usermod -L jerry #锁定 + usermod -U jerry #解锁 + ``` + +11. 打开两个xshell窗口,通过(who 或者 w)命令查看连接状态,并通过fuser杀掉其中一个 + + ``` + fuser -v /dev/pts/0 + kill -9 进程号 + ``` + +12. 查看cucci用户,属于那些组,并查看其详细信息 + + ``` + groups cucc && id cucc + cat etc/passwd |grep 'cucc' + ``` + +13. 手工创建账号student(预留) + + ``` + useradd student + ``` + +14. 设置权限及归属:/guanli目录属组设为guanli, /guanli/zonghe目录的属组设为zonghe /guanli/jishu目录的属组设为jishu,设置3个目录都是禁止其他用户访问的权限 + + ``` + ### 归组 + sudo chown :组名 源文件 + ### 权限 + sudo chown 770 源文件 #设置3个目录都是禁止其他用户访问 + ``` + +15. 建立公共目录/ceshi允许技术组内的所有用户读取、写入、执行文件, 禁止其他用户读、写、执行 + + ``` + sudo chown :jishu ceshi/ + sudo chown 770 ceshi/ + ``` + +16. 清除jerry用户密码 + + ``` + sudo passwd -d jerry #清除密码 + sudo getent shadow jerry #查看是否清除密码 + ``` + +17. 锁定cucci用户密码并查看状态 + + ``` + sudo passwd -l cucc + sudo passwd -S cucc + ``` + +18. 修改obama用户的UID为8888 + + ``` + sudo usermod -u 8888 obama + ``` + +19. 通过passwd命令修改kylin用户的最长密码使用期限为60天 + + ``` + sudo passwd --maxdays 60 kylin + ``` + +20. 通过id groups等命令查看用户handy信息 + + ``` + id handy + groups handy + ``` \ No newline at end of file