105-管理用户和组-tar备份与恢复-cron计划任务

vim文本编辑器

使用vim创建/修改文件

-格式:vim [[/目录/]文件名]
-若目标文件不存在,则新建空文件并编辑

-若目标文件已存在,则打开此文件并编辑

当文件不存在会自动创建该文件
当目录不存在不能新建

三个模式: 命令模式    插入模式(编辑模式 输入模式)    末行模式
[root@A ~]# vim    /opt/haha.txt

命-------i键 或o键------>插入模式(Esc回到命令模式)


式------- :键 -------->末行模式(Esc回到命令模式)

末行模式 :wq #保存并退出
:q! #强制不保存退出

[root@A ~]# cat /opt/haha.txt

###################################################

重定向输出

重定向输出:将前面命令的输出,写入到后面文本文件
> :覆盖重定向
>> :追加重定向

[root@A ~]# hostname
A.tedu.cn
[root@A ~]# hostname > /opt/ls.txt
[root@A ~]# cat /opt/ls.txt
A.tedu.cn
[root@A ~]# hostname >> /opt/ls.txt
[root@A ~]# cat /opt/ls.txt

[root@A ~]# head -2 /etc/passwd
[root@A ~]# head -2 /etc/passwd >> /opt/ls.txt
[root@A ~]# cat /opt/ls.txt

[root@A ~]# cat /opt/ls.txt
[root@A ~]# echo 123456

[root@A ~]# echo 123456 >> /opt/ls.txt //追加重定向到ls.txt,123456(可见)
[root@A ~]# cat /opt/ls.txt

[root@A ~]# echo hello world >> /opt/ls.txt
[root@A ~]# cat /opt/ls.txt
####################################################

管道操作

管道操作 | :将前面命令的输出,传递给后面命令作为后面命令的参数

显示文件/etc/passwd文件的8-12行内容?
[root@A ~]# head -12 /etc/passwd | tail -5

[root@A ~]# head -12 /etc/passwd | tail -5 | cat -n

[root@A ~]# cat -n /etc/passwd | head -12 | tail -5

[root@A ~]# ifconfig | head -2

[root@A ~]# ifconfig | less

###################################################

管理用户和组

系统用户: 1.安全提升 2.不同的身份拥有不同的权限 3.登录操作系统 组:方便管理用户

唯一标识: UID GID
管理员root的UID为0

组: 基本组 附加组(从属组)
一个用户至少属于一个组
[root@A ~]# useradd tom
组: tom
(一个用户出生,linux会自动创建一个同名的组,把用户加到同名的组里,来满足一个用户至少属于一个组的原则)

利用root身份创建组: 财务组 销售组 帅哥组 美女组
总结:一共属于5个组,其中tom组为tom用户基本组
财务组 销售组 帅哥组 美女组为为tom用户的附加组

 

添加用户

用户基本信息存放在 /etc/passwd 文件(每创建一个用户都会写到passwd当中)
[root@A ~]# grep nsd /etc/passwd               //过滤出nsd信息
[root@A ~]# head -1 /etc/passwd                //相当于户口本
root:x:0:0:root:/root:/bin/bash                     //:分割多个字段,每个字段代表一个意思,/bin/bash为默认解释器
用户名:密码占位符:UID:基本组GID:用户描述信息:家目录:解释器程序
(密码占位符:不管你的密码多么长,多么短,都用一个X表示)

用户执行命令------->解释器------->内核---->硬件(内核调配硬件 )

[root@A ~]# cat /etc/shells                  //查看一共有多少解释器
[root@A ~]# ls /bin/bash                    //功能比较全的解释器,如果没有指定解释器,系统自动指定此解释器。用户执行所有命令,都由它解释给内核.它是一个绿色可执行的程序。
• 使用 useradd 命令
– useradd [选项]... 用户名
• 常用命令选项
– -u 用户id、-d 家目录路径、-s 登录解释器、-G 附加组

[root@A ~]# useradd tom
[root@A ~]# id tom                          //专门查看用户信息,uid,gid,同时增长,但uid是用户的编号,是标识用户,gid是组的编号,是标识组的,本质上并没有相互的关系。
[root@A ~]# id haha

[root@A ~]# useradd nsd01
[root@A ~]# id nsd01

[root@A ~]# useradd -u 1300 nsd02                  #指定UID创建用户(创建一般1000以上,因为1~999,有些特殊用户占用UID,如web/ftp/dns,0给root)
[root@A ~]# id nsd02
[root@A ~]# ls /home/                               //查看发现家目录默认在home之下

nsd01 nsd02 tom zhouhuafei
[root@A ~]# useradd -d /opt/haxi haxi                #创建用户,并且指定用户家目录(创建目录haxi,创建用户haxi.)
[root@A ~]# id haxi
[root@A ~]# ls /opt/


-s 登录解释器 /sbin/nologin:禁止用户登录系统(当用户已存在,可以修改,不想让某用户登录操作系统了。)

[root@A ~]# useradd -s /sbin/nologin nsd05 //nsd05创建出来,有正确用户名和密码,也不能登录操作系统。
[root@A ~]# id nsd05
uid=1401(nsd05) gid=1401(nsd05) 组=1401(nsd05)
[root@A ~]# grep nsd05 /etc/passwd

-G 附加组
[root@A ~]# groupadd tedu
[root@A ~]# useradd -G tedu nsd06 //该用户既属于nsd06,也属于tedu.
[root@A ~]# id nsd06
uid=1402(nsd06) gid=1403(nsd06) 组=1403(nsd06),1402(tedu)

[root@A ~]# useradd -G tedu nsd07
[root@A ~]# id nsd07

[root@A ~]# useradd -G tedu nsd08
[root@A ~]# id nsd08

###################################################

设置登录密码

·使用passwd命令
- echo ‘密码'| passwd --stdin 用户名

[root@A ~]# passwd nsd01
更改用户 nsd01 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@A ~]# su - nsd01 #临时命令行切换身份
[nsd01@A ~]$ passwd
更改用户 nsd01 的密码 。
为 nsd01 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[nsd01@A ~]$ exit

非交互式设置密码
– echo '密码' | passwd --stdin 用户名(--stdin为取消交互,标准输入)

[root@A ~]# echo 123 | passwd --stdin nsd01

[root@A ~]# echo redhat | passwd --stdin nsd02

[root@A ~]# echo 123456 | passwd --stdin tom

[root@A ~]# echo tarena | passwd --stdin nsd03

###################################################
用户密码信息存放在 /etc/shadow 文件
[root@A ~]tail -3 /etc/shadow
haxi:!!:18111:0:99999:7:::(两个!表示用户用户没有设置密码,单不能登录系统)

[root@A ~]echo 123| passwd --stdin nsd07
[root@A ~]tail -1 /etc/shadow
nsd07:$6$S.i3F30.$J6Tp02BHAy61wyUECn94Nz8BR8x7pr.BhAVdsoEDLr2PzJA4Qv2vMCuwb/lZUZtf6NrbmJ8SM/sdJaX9eu6eG0:18111:0:99999:7:::
(0:99999:7:::0为密码最短修改期限,0为随时可以修改,如果1,是一天后可以修改。到期日为99999天以后,即270年以后。7是提前7天警告你,需要修改密码)

用户名:密码加密后的字符串:上一次修改密码的时间
自1970-1-1到上一次修改密码的时间,经历的天数
###################################################

修改用户属性

• 使用 usermod 命令(用户已存在,可以用这个命令修改用户属性)
– usermod [选项]... 用户名

• 常用命令选项
– -u 用户id、-d 家目录路径、-s 登录解释器
– -G 附加组     //重置附加组

[root@A ~]# useradd nsd08
[root@A ~]# id nsd08
uid=1404(nsd08) gid=1405(nsd08) 组=1405(nsd08)

[root@A ~]# grep nsd08 /etc/passwd
nsd08:x:1404:1405:: /home/nsd08:/bin/bash

[root@A ~]# usermod -u 1500 -d /opt/test -G tedu -s /sbin/nologin nsd08
//修改已存在用户nsd07的属性 -G tedu,最好tedu不是纯数字
[root@A ~]# id nsd08
uid=1500(nsd08) gid=1405(nsd08) 组=1405(nsd08),1402=(tedu)

[root@A ~]# grep nsd08 /etc/passwd
nsd08:x:1500:1405:: /opt/test:/sbin/nologin

[root@A ~]#ls /opt/
haha.txt nsd01 nsd03 (显示内容没有test此目录)

[root@A ~]useradd nsd09
[root@A ~]ls /home/
haha.txt nsd01 nsd03 nsd07 nsd08 nsd09
//创建用户后,目录默认在home下面
[root@A ~]grep nsd09 /etc/passwd
nsd09:x:1501:1501::/home/nsd09:/bin/bash
root@A ~]# usermod -d /opt/hehe nsd09
[root@A ~]# grep nsd09 /etc/passwd
nsd09:x:1501:1501::/opt/hehe:/bin/bash ///etc下的passwd字段值变了/opt/hehe
[root@A ~]#ls /opt/
(显示并没有hehe,没有创建,所以usermod只是改变用户属性内容,并不会给用户创建家目录
但useradd,是会给用户创建家目录的)
[root@A ~]su -nsd09
su:警告:无法更改到/opt/hehe 目录:没有那个文件或目录
-bash-4.2$(此处就会产生异常)
exit
登出
[root@A ~]#mkdir /opt/hehe
[root@A ~]su -nsd09
上一次登录:六 8月 3 14 14:21:59 CST 2019pt/0 上
-bash-4.2$
-bash-4.2$
-bash-4.2$
-bash-4.2$ 登出
(自己创建hehe,还是不行,useradd创建用户时候,在home下创建目录,并不是空目录,还有些相关的隐藏文件)
[root@A ~]ls -A /home/nsd01(可以看其他用户家目录了解)

 

 

####################################################

删除用户

• 使用 userdel 命令
– userdel 用户名
[-r]:递归删除,连同用户的家目录一并删除
[root@A ~]# ls /home/
[root@A ~]# userdel -r nsd01
[root@A ~]# id nsd01
[root@A ~]# ls /home/(nsd01用户已经删除,但nsd01家目录也删除)

[root@A ~]# userdel nsd02
[root@A ~]# id nsd02
[root@A ~]# ls /home/(nsd02用户已经删除,但nsd02家目录还存在)


[root@A ~]#useradd nsd11
[root@A ~]#ls -ld /home/nsd11
drwx------.3 nsd11 nsd11 78 8月 3 14:39 /home/nsd11
[root@A ~]# id nsd11
uid=1502(nsd11) gid=1502(nsd11) 组=1502(nsd11)
[root@A ~]#userdel nsd11
[root@A ~]#ls -ld /home/nsd11
drwx------.3 1502 1502 78 8月 3 14:39 /home/nsd11
[root@A ~]#useradd -u 1600 nsd11(用户名nsd11,但home里面已经有nsd11,与创建用户,home里生成用户名相同家目录冲突。)
useradd:警告:此主目录已经存在。
不从skel目录里向其中复制任何文件。
正在创建信箱文件:文件已经存在。
[root@A ~]#ls -ld /home/nsd11
drwx------.3 1502 1502 78 8月 3 14:39 /home/nsd11


####################################################

管理组账号

添加组

组基本信息存放在 /etc/group 文件
[root@A ~]# grep tarena /etc/group
tarena:x:1601:
组名:组的密码占位符:GID:组成员列表
(GID为组的编号)

• 使用 groupadd 命令
– groupadd [-g 组ID] 组名
[root@A ~]# groupadd tarena
[root@A ~]# grep tarena /etc/group         //查看组是否建成

[root@A ~]# useradd nsd12
[root@A ~]# useradd kaka
[root@A ~]# useradd dc
[root@A ~]# useradd kenji

• 使用 gpasswd 命令
– gpasswd -a 用户名 组名 #添加用户到组中
– gpasswd -d 用户名 组名 #将用户从组中删除
[root@A ~]# gpasswd -a dc tarena
[root@A ~]# id dc
uid=1603(dc) gid=1604(dc) 组=1604(dc),1601(tarena)
[root@A ~]# grep tarena /etc/group
tarena:x:1601:dc

[root@A ~]# gpasswd -a kenji tarena
[root@A ~]# grep tarena /etc/group
tarena:x:1601:dc,kenji

[root@A ~]# gpasswd -d dc tarena
[root@A ~]# grep tarena /etc/group

[root@A ~]# gpasswd -a kaka tarena
[root@A ~]# grep tarena /etc/group

删除组

• 使用 groupdel 命令
– groupdel   组名
[root@serverO ~]# groupdel market

[root@serverO ~]# grep market /etc/group           //确认结果

[root@serverO ~]#

#用户的基本组不能删除

#组的密码信息存放在 /etc/gshadow 文件

#################################################
• 新建用户 alex,其用户ID为3456,密码是flectrag
[root@A ~]# useradd -u 3456 alex
[root@A ~]# echo flectrag | passwd --stdin alex
• 一个名为 adminuser 的组
[root@A ~]# groupadd adminuser
[root@A ~]# grep adminuser /etc/group
• 名为 natasha 的用户,其属于 adminuser组,这个组是该用户的从属组
[root@A ~]# useradd -G adminuser natasha
[root@A ~]# id natasha
• 名为 harry 的用户,其属于 adminuser 组,这个组是该用户的从属组
[root@A ~]# useradd -G adminuser harry
[root@A ~]# id harry
• 名为 sarah 的用户,其在系统中没有可交互的Shell
[root@A ~]# useradd -s /sbin/nologin sarah
[root@A ~]# grep sarah /etc/passwd
• natasha 、harry、sarah 的密码都要设置为 flectrag
#####################################################

tar备份与恢复

1.整合分散的数据 2.减小占用空间

Linux平台压缩格式:
gzip ----> .gz                          //压缩快,压缩比例小。
bzip2 ----> .bz2                      //压缩的慢,压缩比例高
xz ----> .xz                          //压缩最慢,压缩比例最高。

归档和压缩

归档的含义
将许多零散的文件整理为一个文件
文件总的大小基本不变
压缩的含义
按某种算法减小文件所占空间的大小
恢复时按对应的逆向算法解压

• tar 集成备份工具(tar --help 查询tar命令选项简写对应的单词)
– -c:创建归档
– -x:释放归档
– -f:指定归档文件名称,必须放在所有选项的最后
– -z、-j、-J:调用 .gz、.bz2、.xz 格式的工具进行处理(吱唧唧
– -t:显示归档中的文件清单
– -C(大写):指定释放路径
制作tar包的格式:
tar 选项       /路径/压缩包的名     被压缩的源数据

·使用tar -c ...命令
- tar  -zcf   备份文件.tar.gz       被备份的文档...

- tar  -jcf    备份文件.tar.bz2     被备份的文档....

- tar   -Jcf   备份文件.tar.xz      被备份的文档...

]# tar -zcf    /opt/nsd.tar.gz    /home/ /etc/passwd
]# ls /opt/

]# tar -jcf   /opt/abc.tar.bz2   /home/ /etc/passwd
]# ls /opt/

]# tar -Jcf  /opt/file.tar.xz   /home/ /etc/passwd
]# ls /opt/

进行解包

从tar备份包恢复文档
·使用tar -x...命令
- tar -xf   备份文件.tar.gz     [-C  目标文件夹]

[root@A ~]# mkdir   /nsd10
[root@A ~]# tar -xf    /opt/nsd.tar.gz  -C    /nsd10
[root@A ~]# ls   /nsd10/
[root@A ~]# ls   /nsd10/home/
[root@A ~]# ls   /nsd10/etc/

[root@A ~]# mkdir   /nsd11
[root@A ~]# tar  -xf    /opt/file.tar.xz  -C   /nsd11
[root@A ~]# ls  /nsd11/
[root@A ~]# ls  /nsd11/home/
[root@A ~]# ls   /nsd11/etc/
备注:tar命令解压路径下刚好有重名的东西,会直接覆盖源文件。

查看tar备份包内容
·使用tar -t ...命令
- tar -tf 备份文件.tar.gz
[root@serverO ~]# tar -tf  /root/home.tar.bz2

home/
home/student/
home/student/.bash_logout

home/student/.bash_profile

....

#################################################
案例2:创建一个备份包
使用 tar 工具完成以下备份任务:
– 创建一个名为 /root/backup.tar.bz2 的归档文件
– 其中包含 /usr/local 目录中的内容
– tar 归档必须使用 bzip2 进行压缩
[root@A ~]# tar -jcf /root/backup.tar.bz2 /usr/local/
tar: 从成员名中删除开头的“/”
[root@A ~]# ls /root/
[root@A ~]# tar -tf /root/backup.tar.bz2 #查看tar包内容

####################################################

cron计划任务

cron任务概述

• 用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务

• 软件包:cronie、crontabs
• 系统服务:crond
• 日志文件:/var/log/crond 

[root@serverO ~]# tail    /var/log/cron        //了解cron执行消息

.. ..
Nov 11 21:20:01 localhost CROND[12759]: (root) CMD(/usr/lib64/sa/sa1 1 1)

• 使用 crontab 命令

– 编辑:crontab -e [-u 用户名]       #调用vim文本编辑器(edit编辑)
– 查看:crontab -l [-u 用户名]
– 清除:crontab -r [-u 用户名]

计划任务的书写格式
– 分  时   日  月  周   任务命令行  (分食明粥

 

 

* * * * *    每分钟都匹配

30 23 * * *   每天晚上的23:30
0 8 * * 5    每周的周五早上8点

0 8 * * 1-5    周一至周五早上8点

0 8 * * 1,5    周一和周五早上8点

0 8 1 * 5    每月1号早上8点和每周的周五早上8点都会执行(日期和星期是或的关系
0 */2 * * *    每隔2小时运行一次

*:匹配范围内任意时间
,:分隔多个不连续的时间点
-:指定连续时间范围
/n:指定时间频率,每n ...


每分钟记录当前的系统时间,写入到/opt/time.txt
[root@A ~]# date >> /opt/time.txt
[root@A ~]# cat /opt/time.txt

[root@A ~]# crontab -e #编辑计划任务(进入vim编辑)
* * * * * date >> /opt/time.txt

[root@A ~]# crontab -l #查看计划任务
* * * * * date >> /opt/time.txt

[root@A ~]# cat /opt/time.txt

################################################

 

posted @ 2022-10-28 18:49  东山有耳  阅读(210)  评论(0)    收藏  举报