往日在线:每天都是一个起点,每天都有一点进步,每天都有一点收获!
1.1 统计/etc目录大小,请写出该命令?
1.2 linux系统命令行执行!vim作用是什么?
1.3 如何查看系统时间,请写出该命令?
1.4 针对/opt目录制作一个链接文件,放到/root/目录下,请写出该命令?
1.5 查询/usr/sbin/ifconfig程序是由哪个软件安装产生,请写出该命令?
1.6 利用rpm命令检测firefox是否安装,请写出该命令?
1.7 查询bash软件的安装清单如何操作?
1.8 利用yum命令重新安装软件hostname,请写出该命令?
1.9 利用yum安装httpd软件,请写出该命令?
1.10 yum仓库配置文件放在什么路径下?具体都有哪些字段?
2 用户账号简介
作用: 1.可以登陆操作系统 2.不同的用户具备不同的权限
唯一标识:UID(编号从0开始的编号,默认最大60000)
zhangsan(UID 1200)
管理员root的UID:永远为0
普通用户的UID:默认从1000开始
3 组账号简介
作用: 方便管理用户
唯一标识:GID(编号从0开始的编号,默认最大60000)
原则:Linux一个用户必须至少属于一个组
组账户的分类:
基本组:一般情况与用户同名,一个用户必须有基本组,基本组只能有一个
附加组(从属组):一个用户可以有多个附加组,也可以没有附加组
- [root@localhost /]# useradd zhangsan
- 组: zhangsan
- 组:sg xs mn haha xixi student
4 用户配置文件
/etc/passwd:存放用户基本信息配置文件
- [root@localhost ~]# head -1 /etc/passwd #显示文件第一行
- root:x:0:0:root:/root:/bin/bash
- 用户名:密码占位符:UID:基本组GID:用户描述信息:家目录:解释器
- [root@localhost ~]# useradd wangwu
- [root@localhost ~]# grep wangwu /etc/passwd
5 用户的创建
命令useradd
– 格式:useradd [选项]... 用户名
• 常用命令选项
-u:指定 用户UID
-d:指定宿主目录(家目录),默认为 /home/用户名
-G:指定所属的附加组,-g指定基本组
-s:指定用户的登录解释器,默认为/bin/bash
-u:指定 UID 编号
- [root@localhost ~]# useradd nsd01
- [root@localhost ~]# ls /home/ #查看家目录的产生
- [root@localhost ~]# grep nsd01 /etc/passwd #查看nsd01信息
- [root@localhost ~]# id nsd01 #查看nsd01用户基本信息
- [root@localhost ~]# id gaga
- id: gaga: no such user #无此用户
- [root@localhost ~]#useradd -u 1500 nsd02 #指定UID创建用户
- [root@localhost ~]# id nsd02 #查看nsd02用户基本信息
- [root@localhost ~]# grep nsd /etc/passwd #查看用户信息
- [root@localhost ~]# useradd nsd03
- [root@localhost ~]# grep nsd /etc/passwd
- [root@localhost ~]# id nsd03
-d:指定宿主目录(家目录),默认为 /home/用户名(不可以事先新建用户的家目录)
- [root@localhost ~]# useradd -d /opt/nsd04 nsd04
- [root@localhost ~]# grep nsd04 /etc/passwd
- [root@localhost ~]# ls /opt/
- [root@localhost ~]# useradd -d /opt/haha05 nsd05
- [root@localhost ~]# grep nsd05 /etc/passwd
- [root@localhost ~]# ls /opt/
-G:指定所属的附加组 -g:指定基本组 (了解一下)
- [root@localhost ~]# groupadd stugrp #单独创建stugrp组
- [root@localhost ~]# useradd -G stugrp nsd06
- [root@localhost ~]# id nsd06
- uid=1504(nsd06) gid=1505(nsd06) 组=1505(nsd06),1504(stugrp)
- [root@localhost ~]# useradd -G stugrp nsd07
- [root@localhost ~]# id nsd07
- [root@localhost ~]# groupadd tmooc #单独创建tmooc组
- [root@localhost ~]# useradd -G stugrp,tmooc nsd11
- [root@localhost ~]# id nsd11
-s:指定用户的登录解释器 /bin/bash
shell:壳,解释器
用户---->解释器---->内核---->硬件
/sbin/nologin:禁止用户登录操作系统
- [root@localhost ~]# useradd -s /sbin/nologin nsd10
- [root@localhost ~]# grep nsd10 /etc/passwd
- [root@localhost ~]# passwd nsd10 #设置密码,密码没有屏幕显示,需要输入两次密码
- [root@localhost ~]# useradd -s /sbin/nologin nsd12
- [root@localhost ~]# grep nsd12 /etc/passwd
6 usermod命令
格式:usermod [选项]... 用户名
• 常用命令选项
-l:更改用户帐号的登录名称
-u:用户id
-d:家目录路径
-s:登录解释器
-G:附加组 #重置附加组
-l:更改用户帐号的登录名称
-u:用户id
-s:登录解释器
- [root@localhost /]# useradd nsd13
- [root@localhost /]# id nsd13
- [root@localhost /]# grep nsd13 /etc/passwd
- [root@localhost /]# usermod -l stu13 nsd13 #修改用户名字
- [root@localhost /]# id stu13
- [root@localhost /]# usermod -u 1600 stu13 #修改用户的UID
- [root@localhost /]# id stu13
- [root@localhost /]# usermod -s /sbin/nologin stu13 #修改用户的解释器程序
- [root@localhost /]# grep stu13 /etc/passwd
-d:家目录路径(默认不会自动创建新的家目录)(了解)
- [root@localhost ~]# useradd nsd15
- [root@localhost ~]# grep nsd15 /etc/passwd
- [root@localhost ~]# ls /home/
- [root@localhost ~]# usermod -d /etc/abc nsd15
- [root@localhost ~]# grep nsd15 /etc/passwd
- [root@localhost ~]# ls /etc/abc
- ls: 无法访问/etc/abc: 没有那个文件或目录
- [root@localhost ~]# useradd nsd16
- [root@localhost ~]# grep nsd16 /etc/passwd
- [root@localhost ~]# ls /home/
- [root@localhost ~]# usermod -md /mnt/abc16 nsd16 #将用户原有的家目录进行移动,并且设置相应的权限
- [root@localhost ~]# grep nsd16 /etc/passwd
- [root@localhost ~]# ls /mnt
-G:修改用户的附加组 #重置附加组 (了解)
- [root@localhost ~]# useradd nsd17
- [root@localhost ~]# id nsd17
- [root@localhost ~]# usermod -G stugrp nsd17
- [root@localhost ~]# id nsd17
- [root@localhost ~]# groupadd tmooc #创建组
- [root@localhost ~]# usermod -G tmooc nsd17
- [root@localhost ~]# id nsd17
- [root@localhost ~]# usermod -G root,stugrp nsd17
- [root@localhost ~]# id nsd17
7 设置用户密码
passwd命令
•格式:passwd [选项]... 用户名
- [root@localhost ~]# useradd nsd18
- [root@localhost ~]# passwd nsd18 #交互式设置
- 更改用户 nsd18的密码 。
- 新的 密码: #输入新密码
- 无效的密码: 密码少于 8 个字符
- 重新输入新的 密码: #重新输入新密码
- passwd:所有的身份验证令牌已经成功更新。
- [root@localhost ~]# su - nsd18 #临时切换用户身份
- [nsd18@localhost ~]$ passwd
- 更改用户 nsd18 的密码 。
- 为 nsd18 更改 STRESS 密码。
- (当前)UNIX 密码: #输入旧密码
- 新的 密码: #输入新密码
- 重新输入新的 密码: #重新输入新密码
- passwd:所有的身份验证令牌已经成功更新。
- [nsd18@localhost ~]$ exit #退出。回到root用户身份
passwd命令,支持非交互式设置密码
--stdin:从标准输入(比如管道)取密码
- [root@localhost /]# echo 123 | passwd --stdin nsd18
- [root@localhost /]# echo 123456 | passwd --stdin nsd18
- [root@localhost /]# echo redhat | passwd --stdin nsd18
/etc/shadow,保存密码字串/有效期等信息
每个用户记录一行,以:分割为9个字段
[root@localhost ~]# grep nsd01 /etc/shadow
nsd01:$6$NVe937Nd$B0n94XrpQ.LipQHTpYh0iV/M4jCLdccfHxzRLprdxDzwk8WDDh/TzdTfh8lA9y9WKJ.8Ls/l5.w/1W.nV6CFX/:18481:0:99999:7:::
上一次修改密码的时间:自1970-1-1到达上一次修改密码的时间,所经历的天数
字段1:用户帐号的名称
字段2:加密后的密码字符串
字段3:上次修改密码的时间
字段4:密码的最短有效天数,默认0
字段5:密码的最长有效天数,默认99999
字段6:密码过期前的警告天数,默认7
字段7:密码过期后多少天禁用此用户账号
字段8:帐号失效时间,默认值为空
字段9:保留字段(未使用)
8 用户初始配置文件
主要的初始配置文件
~/.bashrc:每次进入新的Bash环境时执行(开启新的终端)
- [root@localhost ~]# vim /root/.bashrc #定义永久别名
- ……
- alias hn='hostname'
- ……
- 开启新的终端进行测试:
- [root@localhost ~]# hn
/etc/bashrc:全局配置文件,影响全体用户 (开启新的终端)
- [root@localhost ~]# vim /etc/bashrc
- ……
- alias myls='ls -ld'
- ……
- #新开一个终端验证
- [root@localhost ~]# useradd nsd21
- [root@localhost ~]# su - nsd21 #相当于开启新的终端
- [nsd21@localhost ~]$ myls /opt
- [nsd21@localhost ~]$ exit
- 登出
- [root@localhost ~]#
9 删除用户
userdel命令
格式:userdel [-r] 用户名
添加 -r 选项,家目录/用户邮件也一并删除
- [root@localhost ~]# userdel -r nsd18 #连同家目录一并删除
- [root@localhost ~]# userdel nsd20 #不删除家目录,只删除用户信息
10 组账户管理
/etc/group,保存组帐号的基本信息
每个组记录一行,以:分割为4个字段
[root@localhost ~]# grep stugrp /etc/group
stugrp:x:1504:nsd06
组名:组密码占位符:组的GID:组成员列表
- [root@localhost ~]# groupadd tarena #新建一个组
- [root@localhost ~]# grep tarena /etc/group #查看组信息
- tarena:x:1607:
- 组名字:密码占位符:GID:组成员列表
- [root@localhost ~]# useradd kaka
- [root@localhost ~]# useradd nb
- [root@localhost ~]# useradd jack
- [root@localhost ~]# useradd kenji
gpasswd命令(添加附加组)
格式:gpasswd [选项]... 组名
•常用命令选项
-a:添加组成员,每次只能加一个
-d: 删除组成员,每次只能删一个
-M:定义(重置)组成员用户列表,可设置多个用户
- [root@localhost /]# gpasswd -a kaka tarena #添加用户kaka到tarena组
- [root@localhost /]# grep tarena /etc/group #查看组信息
- [root@localhost /]# id kaka
- [root@localhost /]# gpasswd -a nb tarena #添加用户nb到tarena组
- [root@localhost /]# grep tarena /etc/group
- [root@localhost /]# gpasswd -M 'jack,kenji' tarena #定义组成员列表
- [root@localhost /]# grep tarena /etc/group
- [root@localhost /]# gpasswd -a nb tarena #添加用户nb到tarena组
- [root@localhost /]# grep tarena /etc/group
- [root@localhost /]# gpasswd -d nb tarena #将nb用户从tarena组中删除
- [root@localhost /]# grep tarena /etc/group
- [root@localhost /]# gpasswd -M '' tarena #删除组中所有成员
- [root@localhost /]# grep tarena /etc/group
-A:定义组管理员列表(组管理员可以属于此组也可以不属于此组)
- [root@localhost ~]# su - nb
- [nb@localhost ~]$ gpasswd -a kaka tarena
- gpasswd:没有权限。
- [nb@localhost ~]$ exit
- [root@localhost ~]# gpasswd -A nb tarena #设置组管理员
- [root@localhost ~]# su - nb
- [nb@localhost ~]$ gpasswd -a kaka tarena
- 正在将用户“kaka”加入到“tarena”组中
- [nb@localhost ~]$ exit
- [root@localhost ~]#
/etc/gshadow:组的管理信息配置文件
- [root@localhost ~]# grep tarena /etc/gshadow
- tarena:!:nb:
- 组名:密码加密字符串:组的管理员列表:组成员列表
- [root@localhost /]# gpasswd -A 'nb,kenji' tarena #设置多个组管理员
- [root@localhost /]# grep tarena /etc/gshadow
- [root@localhost /]# gpasswd -A '' tarena #删除所有的组管理员
- [root@localhost /]# grep tarena /etc/gshadow
总结:用户与组重要的配置文件
/etc/passwd:用户基本信息配置文件
/etc/shadow:用户密码信息配置文件
/etc/group:组基本信息配置文件
/etc/gshadow:组管理信息配置文件
删除组账号:删除组的时候,不可以删除基本组
- [root@localhost ~]# groupdel tarena
- [root@localhost ~]# groupdel tmooc
- [root@localhost ~]# grep tmooc /etc/group
- [root@localhost ~]# grep tarena /etc/group
总结:Linux系统执行useradd命令,会完成那些操作?
1.会在/etc/passwd增加一行信息
2.会在/etc/shadow增加一行信息
3.会在/home新增用户家目录
4.会在/var/spool/mail增加用户邮件文件
5.会在/etc/group增加一行组信息
6.会在/etc/gshadow增加一行组的管理信息
总结:Linux系统执行userdel -r命令,会完成那些操作?
1.会在/etc/passwd删除一行信息
2.会在/etc/shadow删除一行信息
3.会在/home删除用户家目录
4.会在/var/spool/mail删除用户邮件文件
5.会在/etc/group删除一行组信息
6.会在/etc/gshadow删除一行组的管理信息
11 计划任务
用途:按照设置的时间间隔,为用户反复执行某一项固定的系统任务
软件包:cronie、crontabs
系统服务:crond
日志文件:/var/log/cron
使用 crontab 命令
–编辑:crontab -e [-u 用户名]
–查看:crontab -l [-u 用户名]
–清除:crontab -r [-u 用户名]
计划任务书写格式
分 时 日 月 周 任务命令行(绝对路径)
* * * * * #每分钟执行一次
30 8 * * * #每天早晨的8点30分,执行一次
30 23 * * * #每天晚上23:30 执行一次
30 23 * * 5 #每周的周五23:30 执行一次
30 23 * * 1-5 #每周的周一至周五23:30 执行一次
30 23 * * 1,3,6 #每周的周一周三周六23:30 执行一次
30 23 1 * 1 #每月的1号晚上23:30或每周一晚上23:30 执行一次
特别写法:
5 * * * * #每个小时的第五分钟执行一次
*/5 * * * * #每隔5分钟运行一次
38 */2 * * * #每隔2小时运行一次
*:匹配范围内任意时间
,:分隔多个不连续的时间点
-:指定连续时间范围
/n:指定时间频率,每n ...
案例:
每分钟记录当前的系统时间,写入/opt/time.txt
- [root@nb ~]# date
- [root@nb ~]# date >> /opt/time.txt
- [root@nb ~]# cat /opt/time.txt
- [root@nb ~]# which date #查询命令程序路径
- [root@nb ~]# crontab -e #编写计划任务
- * * * * * /usr/bin/date >> /opt/time.txt
- [root@nb ~]# crontab -l #查看计划任务内容
- [root@nb ~]# cat /opt/time.txt
- [root@nb ~]# ls /var/spool/cron #任务文件存放的路径
- [root@nb ~]# cat /var/spool/cron/root #记录root用户计划任务
12 案例:添加用户账号
12.1 问题
- 创建一个名为tedu01的用户账号
- 检查/etc/passwd、/etc/shadow文件的最后一行
- 检查/home/新增加的宿主目录(家目录)
- 新建用户tedu02,宿主目录位于/opt/tedu02
- 新建系统账号system01,将UID设为1234,登录Shell设为/sbin/nologin
- 新建用户admin,附加组设为adm、root
12.2 方案
在Linux中添加一个用户账户的命令为useradd,常用的选项较多。可以利用man命令查看其帮助信息。
本题涉及的选项:
- -u:设置 UID 标记号
- -d:指定宿主目录,缺省为 /home/用户名
- -G:指定所属的附加组
- -s:指定用户的登录解释器
12.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:添加一个tedu01的用户账号
命令操作如下所示:
- [root@localhost ~]# useradd tedu01
步骤二:/etc/passwd、/etc/shadow文件的最后一行
- [root@localhost ~]# grep tedu01 /etc/passwd /etc/shadow //查看是否创建成功
步骤三:检查/home/新增加的宿主目录(家目录)
- [root@localhost ~]# ls /home //查看家目录是否创建成功
- [root@localhost ~]#
步骤四:新建用户tedu02,宿主目录位于/opt/tedu02
- [root@localhost ~]# useradd -d /opt/tedu02 tedu02
- [root@localhost ~]# id tedu02
- [root@localhost ~]# grep tedu02 /etc/passwd
- [root@localhost ~]# ls /opt
步骤五:新建系统账号system01,将UID设为1234,登录Shell设为/sbin/nologin
- [root@localhost ~]# useradd -u 1234 -s /sbin/nologin system01
- [root@localhost ~]# id system01
- [root@localhost ~]# grep system01 /etc/passwd
- [root@localhost ~]#
步骤四:新建用户admin,附加组设为adm、root
- [root@localhost ~]# useradd -G adm,root admin
- [root@localhost ~]# id admin
13 案例:设置用户密码
13.1 问题
- 为用户tedu01设置一个密码:123456
- 过滤/etc/shadow文件中包含tedu01的内容
- 为用户system01设置密码,并测试是否能够登录
- 非交互式给用户tedu02设置密码123456
- 交互式给用户admin,设置密码为redhat
13.2 方案
为账户设置密码的命令为passwd,管理员root可以修改任何用户的口令,所有用户(包括普通用户)都可以修改自己的口令。
常用命令选项:
- --stdin:从标准输入(比如管道)取密码
查看结果可以利用grep命令,从/etc/shadow筛选。
13.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:为用户tedu01设置一个密码:123456
命令操作如下所示:
- [root@localhost ~]# echo 123456 | passwd --stdin tedu01
步骤二:过滤/etc/shadow文件中包含tedu01的内容
- [root@localhost ~]# grep tedu01 /etc/shadow
步骤三:为用户system01设置密码,并测试是否能够登录
由于登录的解释器为/sbin/nologin,所以是无法登录系统
- [root@localhost ~]# echo 123456 | passwd –stdin system01
步骤四:新建用户tedu02,宿主目录位于/opt/tedu02
- [root@localhost ~]# useradd -d /opt/tedu02 tedu02
- [root@localhost ~]# id tedu02
- [root@localhost ~]# grep tedu02 /etc/passwd
- [root@localhost ~]# ls /opt
步骤五:非交互式给用户tedu02设置密码123456
- [root@localhost ~]# echo 123456 | passwd –stdin tedu02
步骤六:交互式给用户admin,设置密码为redhat
- [root@localhost ~]# passwdadmin
- 更改用户 admin 的密码 。
- 新的 密码:
- 无效的密码: 密码少于 8 个字符
- 重新输入新的 密码:
- passwd:所有的身份验证令牌已经成功更新。
- [root@localhost ~]#
14 案例:配置用户和组账号
14.1 问题
本例要求创建下列用户、组以及组的成员关系:
- 新建用户 alex,其用户ID为3456,密码是flectrag
- 创建一个名为 adminuser 的组
- 创建一个名为 natasha 的用户,其属于 adminuser 组,这个组是该用户的从属组
- 创建一个名为 harry 的用户,其属于 adminuser 组,这个组是该用户的从属组
- 创建一个名为 sarah 的用户,其在系统中没有可交互的 Shell,并且不是 adminuser 组的成员
- natasha 、harry、sarah 的密码都要设置为 flectrag
14.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:创建组账号
- [root@server0 ~]# groupadd adminuser
步骤二:按照要求的属性创建用户账号
- [root@server0 ~]# useradd -u 3456 alex
- [root@server0 ~]# useradd -G adminuser natasha
- [root@server0 ~]# useradd -G adminuser harry
- [root@server0 ~]# useradd -s /sbin/nologin sarah
步骤三:为用户设置登录密码
- [root@server0 ~]# echo flectrag | passwd --stdin alex
- 更改用户 alex 的密码 。
- passwd:所有的身份验证令牌已经成功更新。
- [root@server0 ~]# echo flectrag | passwd --stdin natasha
- 更改用户 natasha 的密码 。
- passwd:所有的身份验证令牌已经成功更新。
- [root@server0 ~]# echo flectrag | passwd --stdin harry
- 更改用户 harry 的密码 。
- passwd:所有的身份验证令牌已经成功更新。
- [root@server0 ~]# echo flectrag | passwd --stdin sarah
- 更改用户 sarah 的密码 。
- passwd:所有的身份验证令牌已经成功更新。
15 案例:配置一个cron任务
15.1 问题
本例要求为用户 natasha 配置一个定时任务,具体要求如下:
- 每天在本地时间 14:23 执行
- 需要完成的任务操作为 /bin/echo hiya
15.2 方案
配置格式可参考 /etc/crontab 文件:
- 分 时 日 月 周 任务命令行(绝对路径)
在表示各段的时间点时,除了明确的数值以外,还可以参考以下形式:
- *:匹配范围内任意时间
- ,:分隔多个不连续的时间点
- -:指定连续时间范围
- /n:指定时间频率,每n ...
15.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:配置crontab任务记录
1)确保系统服务crond可用
- [root@server0 ~]# systemctl restart crond
- [root@server0 ~]# systemctl enable crond
2)为用户natasha添加计划任务
- [root@server0 ~]# crontab -e -u natasha
- 23 14 * * * /bin/echo hiya
步骤二:检查任务是否执行
1)将系统日期时间临时调整到任务时间点前10秒左右
- [root@server0 ~]# date -s '14:22:50' //设置
- Sat Nov 26 14:22:50 CST 2023
- [root@server0 ~]# date //确认日期时间
- Sat Nov 26 14:22:55 CST 2023
2)等待10秒后查看/var/log/cron日志,应该会有执行记录
- [root@server0 ~]# tail /var/log/cron
- .. ..
- Nov 26 14:23:02 localhost CROND[3818]: (natasha) CMD (/bin/echo hiya)