diff --git "a/16\350\260\242\347\277\240\350\220\215/06.14\342\200\224\342\200\224\347\224\250\346\210\267\344\270\216\346\235\203\351\231\220.md" "b/16\350\260\242\347\277\240\350\220\215/06.14\342\200\224\342\200\224\347\224\250\346\210\267\344\270\216\346\235\203\351\231\220.md" new file mode 100644 index 0000000000000000000000000000000000000000..56bdf991f1bd2e43e6fe73108c956d2eeafede17 --- /dev/null +++ "b/16\350\260\242\347\277\240\350\220\215/06.14\342\200\224\342\200\224\347\224\250\346\210\267\344\270\216\346\235\203\351\231\220.md" @@ -0,0 +1,339 @@ +# 用户与权限 + +## 用户与用户组 + +### 用户管理 + +- 添加用户 + - useradd 原生底层命令 + - adduser 加强版命令 +- 删除用户 + - userdel -r :删除用户和家目录和邮件文件 +- 修改用户 usermod + - usermod -aG aaa xxx 给xxx用户追加一个附加组aaa + - usermod -G bbb xxx 给xxx用户的修改为bbb(会清空原来的) + +#### 查看用户信息: + +- id 用户名 +- passwd + +#### 用户三个基本属性: + +- 用户id +- 主用户组id +- 附加用户组id + +#### passwd 用户名 :设置密码 + +#### passwd :重置当前用户密码 + + + +### 用户组管理: + +- 添加用户组 :groupadd +- 删除用户组:groupdel +- 修改用户组:groupmod + +### 文件与目录的权限: + +#### 基本权限: + +- 读read,简写 r :文件是可以读取内容,目录,可以浏览目录信息 +- 写 write ,w :文件是可以修改内容,目录,可以在里面创建,修改,删除文件、目录 +- 执行 execute ,x :文件就执行该文件,目录是可以进入目录 + +### 权限的表示方式: + +- 字符:r,w,x +- 数字: + - 4:读(r) + - 2:写(w) + - 1:执行(x) + +`---` :表示无权限 + +`000` :表示取消所有权限 + +#### 文件权限的表示方式 + +- 前10位 + + - 第1位 + - d:文件夹 + - `-` :普通文件 + - `|` :软链接 + - 后面每3位为一组 + - 2-4位:拥有者的权限 + - 5-7位:文件所属用户组的权限 + - 8-10位:其他用户的权限 + + ```bash + 例: drwxr-xr-x + # d 类型 + # rwx 拥有者权限 + # r-x 用户组权限 + # r-x 其它用户权限 + ``` + +### 权限管理的命令: + +修改权限: + +- chmod 数字权限表示 文件名 + + ```bash + 例: + chmod 777 1.txt + chmod 666 2.txt + ``` + +- chmod 字符权限表示 文件名 + + ```bash + 例: + chmod u-w text.txt # 删除写入权限 + chmod u+rx text.txt # 添加读和写权限 + chmod u=r text.txt # 替换 + ``` + +- ```bash + u:拥有者 + g:拥有者所在的组 + o:除以上两者外的其它人 + a:所有人 + ``` + +- ```bash + +:不改变原有权限基础上添加新权限 + -:不改变原有权限基础上删除某权限 + =:覆盖所有权限 + ``` + +### 修改文件拥有者:chown + +### 修改拥有者所有组:chgrp + +通用的一个常用的选项 `-R` 递归设置权限 + +### sudo: + +- 硬链接 +- 软链接 + +修改 /etc/sudoers 文件添加权限 sudo + +将用户添加到sudo组 + +```bash +usermod -aG sudo +``` + + + +# 作业: + +### 权限管理练习 + +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 + # cat /etc/group 查看所有组信息 + grep zonghe /etc/group + grep caiwu /etc/group + grep jishu /etc/group + # 查看zonghe、caiwu、jishu,GID号 + ``` + + + +3. 创建jerry、kylin、tsengia、obama用户,其中的kylin用户帐号在2020年12月30日后失效 + + ```bash + useradd jerry + useradd -e 2020-12-30 kylin + # -e选项后面跟的是账户失效的日期,格式通常是YYYY-MM-DD + useradd tsengia + useradd obama + ``` + + + +4. 将jerry、kylin、tsengia、obama等用户添加到zonghe组内 + + ```bash + + usermod -aG zonghe jerry + usermod -aG zonghe kylin + usermod -aG zonghe tsengia + usermod -aG zonghe obama + # cat /etc/group | grep zonghe 、 getent group zonghe 查看zonghe组中的用户 + ``` + + + +5. 创建handy、cucci用户,其中cucci帐号的登录Shell设置为“/sbin/nologin” + + ```bash + useradd handy + useradd -s /sbin/nologin cucci + # -s选项用于指定用户的登录Shell /sbin/nologin是一个特殊的Shell路径,配置此Shell的用户将不能登录系统,通常用于服务账户或者不允许登录的用户账户。 + ``` + + + +6. 将handy、cucci等用户添加到jishu组内 + + ```bash + usermod -aG jishu handy + usermod -aG jishu cucci + ``` + + + +7. 将上述的所有用户均要求加入到guanli组内 + + ```bash + useradd guanli + gpasswd -M jerry,kylin,tsengia,obama,handy,cucci guanli + #-M选项后面跟着的是以逗号分隔的用户名列表,用于指定要添加到组的用户,最后是组名guanli + cat /etc/group |grep guanli # 查看guanli组中的用户 + ``` + + + +8. 将zonghe组内的obama用户删除 + + ```bash + gpasswd -d obama zonghe + ``` + + + +9. 为jerry用户设置密码为“123456”(使用普通方法)为cucci用户设置密码为“redhat” + + ```bash + passwd jerry + passwd cucci + ``` + + + +10. 将jerry用户锁定,并查看锁定状态 + + ```bash + passwd -l jerry #将jerry用户锁定 + passwd -S jerry # 查看锁定状态 + # -l选项(小写的L)用于锁定用户账户 + ``` + + + +11. 打开两个xshell窗口,通过(who 或者 w)命令查看连接状态,并通过fuser杀掉其中一个 + + ```bash + apt-get update + apt-get install psmisc #安装插件 + fuser -k /dev/pts/3 # 3为TTY设备号 + ``` + + + +12. 查看cucci用户,属于那些组,并查看其详细信息 + + ```bash + id cucci + ``` + +13. 手工创建账号student(预留) + + ```bash + useradd student + passwd -l student + #创建一个名为student的预留账号,意味着创建用户但不设置密码或采取措施防止该用户立即登录 + ``` + + + +14. 设置权限及归属:/guanli目录属组设为guanli, /guanli/zonghe目录的属组设为zonghe /guanli/jishu目录的属组设为jishu,设置3个目录都是禁止其他用户访问的权限 + + ```bash + sudo chown :guanli /guanli + sudo chmod 770 /guanli + sudo chown :zonghe /guanli/zonghe + sudo chmod 770 /guanli/zonghe + sudo chown :jishu /guanli/jishu + sudo chmod 770 /guanli/jishu + # ls -ld /guanli /guanli/zonghe /guanli/jishu + drwxrwx--- 4 root guanli 4096 Jun 15 14:00 /guanli + drwxrwx--- 2 root jishu 4096 Jun 15 14:00 /guanli/jishu + drwxrwx--- 2 root zonghe 4096 Jun 15 14:00 /guanli/zonghe + + ``` + + + +15. 建立公共目录/ceshi允许技术组内的所有用户读取、写入、执行文件, 禁止其他用户读、写、执行 + + ```bash + mkdir /ceshi + chown :jishu /ceshi/ + chmod 770 /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 + ``` + + + diff --git "a/16\350\260\242\347\277\240\350\220\215/06.15\342\200\224\342\200\224crontab.md" "b/16\350\260\242\347\277\240\350\220\215/06.15\342\200\224\342\200\224crontab.md" new file mode 100644 index 0000000000000000000000000000000000000000..5e7e2e92a9dfd00e9d725953e64cdc666f19ead0 --- /dev/null +++ "b/16\350\260\242\347\277\240\350\220\215/06.15\342\200\224\342\200\224crontab.md" @@ -0,0 +1,204 @@ +### 查看现有定时任务: + +```bash +crontab -l +``` + +### 编辑定时任务: + +```bash +crontab -e +``` + +```bash +* * * * * * +分钟 小时 日期 月份 星期 +``` + +### 定时任务时间格式说明: + +- `*`: 表示所有可能的值。例如,`* * * * *` 表示每分钟都运行一次。 +- `*/n`: 表示每 n 个时间单位运行一次。例如,`*/5 * * * *` 表示每 5 分钟运行一次。 +- `n`: 表示特定的时间单位。例如,`30 3 * * 1` 表示在星期一的凌晨 3 点 30 分执行任务。 + +### 删除定时任务: + +```bash +crontab -r +``` + +### 列出某个用户的crontab文件: + +```bash +crontab -u 用户名 -l +``` + + + +### 编辑某个用户的crontab文件: + +```bash +crontab -u 用户名 -e +``` + + + +### 周期任务练习 + +执行在家目录touch a.txt + +1. 每天3:00执行一次 + + ```bash + 0 3 * * * touch ~/a.txt + ``` + +2. 每周六2:00执行 + + ```bash + 0 2 * * 6 touch ~/a.txt + ``` + + + +3. 每周六1:05执行 + + ```bash + 5 1 * * 6 touch ~/a.txt + ``` + + + +4. 每周六1:25执行 + + ```bash + 25 1 * * 6 touch ~/a.txt + ``` + + + +5. 每天8:40执行 + + ```bash + 40 8 * * * touch ~/a.txt + ``` + + + +6. 每天3:50执行 + + ```bash + 50 3 * * * touch ~/a.txt + ``` + + + +7. 每周一到周五的3:40执行 + + ```bash + 40 3 * * 1-5 touch ~/a.txt + ``` + + + +8. 每周一到周五的3:41开始,每10分钟执行一次 + + ```bash + 41,51 3 * * 1-5 touch ~/a.txt + ``` + + + +9. 每天的10:31开始,每2小时执行一次 + + ```bash + 31 10,12,14,16,18,20,22 * * * touch ~/a.txt + + #从10:31开始,我们可以列出一天内符合要求的几个时间点: + 10:31 + 12:31 + 14:31 + 16:31 + 18:31 + 20:31 + 22:31 + ``` + + + +10. 每周一到周三的9:30执行一次 + + ```bash + 30 9 * * 1-3 touch ~/a.txt + ``` + + + +11. 每周一到周五的8:00,每周一到周五的9:00执行一次 + + ```bash + 0 8,9 * * 1-5 touch ~/a.txt + ``` + + + +12. 每天的23:45分执行一次 + + ```bash + 45 23 * * * touch ~/a.txt + ``` + + + +13. 每周三的23:45分执行一次 + + ```bash + 45 23 * * 3 touch ~/a.txt + ``` + + + +14. 每周一到周五的9:25到11:35、13:00到15:00之间,每隔10分钟执行一次 + + ```bash + 25-35/10 9,10,11 * * 1-5 touch ~/a.txt + 0,10,20,30,40,50 13,14 * * 1-5 touch ~/a.txt + ``` + + + +15. 每周一到周五的8:30、8:50、9:30、10:00、10:30、11:00、11:30、13:30、14:00、14:30、5:00分别执行一次 + + ```bash + 30 8,9,10,11,13,14 * * 1-5 touch ~/a.txt + 50 8 * * 1-5 touch ~/a.txt + 0 10,11,14,5 1-5 touch ~/a.txt + ``` + + + +16. 每天16:00、10:00执行一次 + + ```bash + 0 10,16 * * * touch ~/a.txt + ``` + + + +17. 每天8:10、16:00、21:00分别执行一次 + + ```bash + 10 8 * * * touch ~/a.txt + 0 16 * * * touch ~/a.txt + 0 21 * * * touch ~/a.txt + ``` + + + +18. 每天7:47、8:00分别执行一次 + +```bash +47 7 * * * touch ~/a.txt +0 8 * * * touch ~/a.txt +``` +