Linux学习第六天

我是研究僧i 提交于 2020-02-28 06:55:05

接续第4章部分内容

while条件循环语句

--是一种让脚本根据某些条件来重复执行命令的语句,它的循环结构往往在执行前并不确定最终执行的次数,完全不同于for循环语句中有目标、有范围的使用场景。while循环语句通过判断条件测试的真假来决定是否继续执行命令,若条件为真就继续执行,为假就结束循环

[root@linuxprobe ~]# vim Guess.sh
#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
echo "商品实际价格为0-999之间,猜猜看是多少?"
while true
do
read -p "请输入您猜测的价格数目:" INT
let TIMES++
if [ $INT -eq $PRICE ] ; then
echo "恭喜您答对了,实际价格是 $PRICE"
echo "您总共猜测了 $TIMES 次"
exit 0
elif [ $INT -gt $PRICE ] ; then
echo "太高了!"
else
echo "太低了!"
fi
done

$RANDOM变量

--来调取出一个随机的数值(范围为0~32767)

expr命令

--用于判断用户输入的数值是等于,大于还是小于,并取得数值

let TIMES++

--当每次循环到let TIMES++命令时都会让TIMES变量内的数值加1

case条件测试语句

[root@linuxprobe ~]# vim Checkkeys.sh
#!/bin/bash
read -p "请输入一个字符,并按Enter键确认:" KEY
case "$KEY" in
[a-z]|[A-Z])                                 ( 逻辑“或” |,固定格式,Shell脚本中的逻辑“或”不同 )
echo "您输入的是 字母。"
;;                                           ( 双分号结束 )
[0-9])
echo "您输入的是 数字。"
;;
*)                                           ( 兜底 )
echo "您输入的是 空格、功能键或其他控制字符。"
esac
[root@linuxprobe ~]# bash Checkkeys.sh
请输入一个字符,并按Enter键确认:6
您输入的是 数字。
[root@linuxprobe ~]# bash Checkkeys.sh
请输入一个字符,并按Enter键确认:p
您输入的是 字母。
[root@linuxprobe ~]# bash Checkkeys.sh
请输入一个字符,并按Enter键确认:^[[15~
您输入的是 空格、功能键或其他控制字符。

计划任务服务程序

一次性计划任务 at

--格式:at 时间

at -l                      列出已有的计划任务
at -c 编码                  显示具体的工作内容
at -r 编码                  删除某个计划任务
atrm 编码                   删除某个计划任务
ctrl+D                     结束编写计划任务

周期性计划任务 crond

crond                服务名称
crontab              配置工具
crontab -e           创建、编辑计划任务命令
crontab -l           查看当前计划任务命令
crontab -r           删除某条计划任务命令
crontab -u           编辑他人的计划任务命令

crond                口诀"分、时、日、月、星期 命令"这是使用crond服务设置任务的参数格式,
                     如果某些字段没有设置需要用星号( * )占位
字段          说明 
分钟          取值为0~59的整数 
小时          取值为0~23的任意整数 
日期          取值为1~31的任意整数 
月份          取值为1~12的任意整数 
星期          取值为0~7的任意整数,其中0与7均为星期日 
命令          要执行的命令或程序脚本 

--e.g

* * * * * /usr/sbin/reboot
30 1 5 3 * /usr/sbin/reboot             每年3月5日1点30分重启
20 2 1-3 * * /usr/sbin/reboot           每月1-3日2点20分重启
30 */2 4 * * /usr/sbin/reboot           每年4月每天每隔2小时30分进行重启
        =============================================我·是·分·割·线=============================================

第5章 用户身份与文件权限

用户身份与能力

--RHEL 7 系统中,用户分为以下几种:

--用户的UID具有唯一性

管理员    uid:0         root
系统用户  uid:1-999               RHEL5/6     1-499(系统用户)
普通用户  uid:1000-无穷           RHEL5/6     500-65535(普通用户)

--用户组号码(GID, Group IDentification ),同一用户组可以添加多个用户

--Linux系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳入其他用户组,则这个其他用户组称之为扩展用户组一个用户只有一个基本用户组但是可以有多个扩展用户组

useradd命令

--用于创建新用户,格式:“useradd [选项] 用户名”

--创建用户账户时,默认的用户家目录会被存放在/home 目录中,默认的 Shell 解释器为/bin/bash , 而且默认会创建一个与该用户同名的基本用户组

参数                   作用 
-d         指定用户的家目录(默认为/home/username) 
-e         账户的到期时间,格式为YYYY-MM-DD. 
-u         指定该用户的默认UID 
-g         指定一个初始的用户基本组(必须已存在) 
-G         指定一个或多个扩展用户组 
-N         不创建与用户同名的基本用户组 
-s         指定该用户的默认Shell解释器 

--e.g

下面我们创建一个普通用户并指定家目录的路径、用户的UID以及Shell解释器。在下面的命令中,请注意/sbin/nologin,它是终端解释器中的一员,与Bash解释器有着天壤之别。一旦用户的解释器被设置为nologin,则代表该用户不能登录到系统中:

[root@linuxprobe ~]# useradd -d /home/linux -u 8888 -s /sbin/nologin linuxprobe
[root@linuxprobe ~]# id linuxprobe
uid=8888(linuxprobe) gid=8888(linuxprobe) groups=8888(linuxprobe)

groupadd命令

--用于创建用户组,格式:“groupadd [选项] 群组名”

--e.g

[root@linuxprobe ~]# groupadd ronny

usermod命令

--用于修改用户的属性,格式为“usermod [选项] 用户名”

--用户的信息保存在/etc/passwd文件中

参数               作用 
-c           填写用户账户的备注信息 
-d -m        参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去 
-e           账户的到期时间,格式为YYYY-MM-DD 
-g           变更所属用户组 (基本用户组)
-G           变更扩展用户组 (扩展用户组)
-L           锁定用户禁止其登录系统 
-U           解锁用户,允许其登录系统 
-s           变更默认终端 
-u           修改用户的UID 

--e.g

我们先来看一下账户linuxprobe的默认信息:

[root@linuxprobe ~]# id linuxprobe
uid=1000(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe)

然后将用户linuxprobe加入到root用户组中,这样扩展组列表中则会出现root用户组的字样,而基本组不会受到影响:

[root@linuxprobe ~]# usermod -G root linuxprobe
[root@linuxprobe ~]# id linuxprobe
uid=1000(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe),0(root)

再来试试用-u参数修改linuxprobe用户的UID号码值。除此之外,我们还可以用-g参数修改用户的基本组ID,用-G参数修改用户扩展组ID。

[root@linuxprobe ~]# usermod -u 8888 linuxprobe
[root@linuxprobe ~]# id linuxprobe
uid=8888(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe),0(root)

passwd命令

--用于修改用户密码、过期时间、认证信息等,格式为“passwd [选项] [用户名]”

参数                  作用 
-l             锁定用户,禁止其登录 
-u             解除锁定,允许用户登录 
--stdin        允许通过标准输入修改用户密码,如echo "NewPassWord" | passwd --stdin Username 
-d             使该用户可用空密码登录系统 
-e             强制用户在下次登录时修改密码 
-S             显示用户的密码是否被锁定,以及密码所采用的加密算法名称 

--e.g

[root@linuxprobe ~]# passwd
Changing password for user root.
New password:此处输入密码值
Retype new password: 再次输入进行确认
passwd: all authentication tokens updated successfully.
[root@linuxprobe ~]# passwd linuxprobe
Changing password for user linuxprobe.
New password:此处输入密码值
Retype new password: 再次输入进行确认
passwd: all authentication tokens updated successfully.

--e.g

可以使用passwd命令禁止该用户登录系统,等假期结束回归工作岗位时,再使用该命令允许用户登录系统,而不是将其删除。这样既保证了这段时间内系统的安全,也避免了频繁添加、删除用户带来的麻烦:

[root@linuxprobe ~]# passwd -l linuxprobe
Locking password for user linuxprobe.
passwd: Success
[root@linuxprobe ~]# passwd -S linuxprobe
linuxprobe LK 2017-12-26 0 99999 7 -1 (Password locked.)
[root@linuxprobe ~]# passwd -u linuxprobe
Unlocking password for user linuxprobe.
passwd: Success
[root@linuxprobe ~]# passwd -S linuxprobe
linuxprobe PS 2017-12-26 0 99999 7 -1 (Password set, SHA512 crypt.)

userdel命令

--用于删除用户,格式为“userdel [选项] 用户名”

参数            作用 
-f           强制删除用户 
-r           同时删除用户及用户家目录 

--e.g

下面使用userdel命令将linuxprobe用户删除,其操作如下:

[root@linuxprobe ~]# id linuxprobe
uid=8888(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe),0(root)
[root@linuxprobe ~]# userdel -r linuxprobe
[root@linuxprobe ~]# id linuxprobe
id: linuxprobe: no such user

文件权限与归属

-:普通文件
d:目录文件
l:链接文件
b:块设备文件
c:字符设备文件
p:管道文件

--e.g

数字权限        文件权限
764            rwxrw-r--
642            rw-r---w-
153            --xr-x-wx
731            rwx-wx--x

复习:第4章

预习:28日第5章,29日第6章,3月1日第7章

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!