linux day12 文件打包与用户基本概述

一、文件管理--压缩打包

1.压缩

#压缩的好处主要有:
	节省磁盘空间占用率
	节省网络传输带宽消耗
	网络传输更加快捷
#压缩的坏处主要有:
	压缩过程中很消耗服务器资源
	压缩后文件仍然存在,占用空间

2.常见的压缩类型

格式 压缩工具
.zip zip压缩工具
.gz gzip压缩工具,只能压缩文件,会删除源文件(通常配合tar使用)
.bz2 bzip2压缩工具,只能压缩文件,会删除源文件(通常配合tar使用)
.tar.gz 先使用tar命令归档打包,然后使用gzip压缩
.tar.bz2 先使用tar命令归档打包,然后使用bzip压缩

3.gzip压缩命令

#安装压缩命令
[root@Centos7 ~]# yum install -y gzip

#语法:
Usage: gzip [OPTION]... [FILE]...

#选项:
-d:	解压

#使用:
1.压缩单个文件
[root@Centos7 ~]# gzip services

2.压缩多个文件
[root@Centos7 ~]# gzip 1.txt 2.txt host.sh

3.解压
[root@Centos7 ~]# gzip -d 3.txt.gz

4.查看包的内容
[root@Centos7 ~]# zcat 2.txt.gz

#总结:
1.gzip压缩文件之后,源文件会删除
2.使用zcat可以查看压缩包里面的内容
3.gzip解压文件之后,压缩包文件会删除
4.gzip压缩多个文件时,会分别将他们压缩,而不是压缩到一个文件
5.gzip只能压缩文件,不能压缩文件夹
	[root@Centos7 ~]# gzip dir
	gzip: dir is a directory -- ignored
6.打包文件在哪个目录,压缩后的包就在哪个目录下

4.zip压缩命令

#安装压缩命令
[root@Centos7 ~]# yum install -y zip unzip

#语法
zip [options] [zipname] [file]...
#搬家          行李箱    衣物

#选项
-r:	递归打包
-q:	不输出打包过程

#使用:
1.压缩单个文件
[root@Centos7 ~]# zip file.zip 3.txt 
  adding: 3.txt (deflated 80%)
  
2.压缩多个文件
[root@Centos7 ~]# zip file1.zip 3.txt 2.txt 1.txt 
  adding: 3.txt (deflated 80%)
  adding: 2.txt (deflated 80%)
  adding: 1.txt (deflated 80%)
 
3.解压
[root@Centos7 ~]# unzip file1.zip

4.打包目录
[root@Centos7 ~]# zip -r dir.zip dir/
  adding: dir/ (stored 0%)
  adding: dir/zengdao (stored 0%)
  adding: dir/qiudao (stored 0%)
  
#总结:
1.zip压缩文件之后,源文件仍然存在
2.unzip解压后,如果目录下存在相同名字的文件,会询问是否重写、替换
3.zip压缩多个文件时,会将所有内容打包成一个文件
4.zip在压缩目录时,一定要加上-r参数,递归压缩,否则只压缩目录,不会带着目录下的文件
5.zip打包,会将包打到当前所在目录下,或者打包到指定目录下
	[root@Centos7 tmp]# zip /root/file.zip /root/1.txt /root/2.txt /root/3.txt
6.zip打包时,如果是绝对路径打包,那么会删除/,然后打包

5.tar归档

#语法
Usage: tar [OPTION...] [FILE]...

#常用选项
c   //创建新的归档文件
f   //指定包文件名,多参数f写最后
x   //对归档文件解包
t   //列出归档文件里的文件列表
v   //输出命令的归档或解包的过程
C   //指定解压目录位置
z   //使用gzip压缩归档后的文件(.tar.gz)
#j   //使用bzip2压缩归档后的文件(.tar.bz2)
#J   //使用xz压缩归档后的文件(tar.xz)
X   //排除多个文件(写入需要排除的文件名称)
h   //打包软链接
P   //连带绝对路径打包
--exclude   //在打包的时候写入需要排除文件或目录

#用法:
1.归档:
[root@Centos7 ~]# tar cf file.tar 1.txt
[root@Centos7 ~]# tar cf file2.tar 1.txt 2.txt 3.txt

2.解压:
[root@Centos7 ~]# tar xf file.tar

3.查看包内文件
[root@Centos7 ~]# tar tf file2.tar
1.txt
2.txt
3.txt

4.显示过程
[root@Centos7 ~]# tar cvf file2.tar 1.txt 2.txt 3.txt
1.txt
2.txt
3.txt
[root@Centos7 ~]# tar xvf file2.tar
1.txt
2.txt
3.txt

5.指定目录位置解压
[root@Centos7 ~]# tar xf file2.tar -C /tmp/

6.归档并打包
[root@Centos7 ~]# tar zcf file.tar.gz 3.txt

7.排除文件打包
[root@Centos7 ~]# tar zcf file.tar.gz ./* -X a.txt
[root@Centos7 ~]# cat a.txt 
1new.txt
3.txt			#不打包的文件名字

8.打包软连接(打包时将软连接变成了文件,将指向的文件内容写到了该文件中)
[root@Centos7 ~]# ll
total 135380
lrwxrwxrwx 1 root root        5 Jun 24 16:49 1 -> 1.txt
[root@Centos7 ~]# tar zchf ln.tar.gz 1
[root@Centos7 ~]# tar tf ln.tar.gz 
1
[root@Centos7 ~]# tar xf ln.tar.gz -C /tmp/
[root@Centos7 ~]# ll /tmp/
total 1964
-rw-r--r-- 1 root root 2009719 Jun 24 15:06 1


#总结:
1.tar压缩文件之后,源文件会保留
2.使用tar tf可以查看压缩包里面的文件
3.tar解压文件之后,压缩包文件不会删除
4.tar压缩多个文件时,会将所有内容压缩到一个文件
5.打包会将包打到当前所在目录下,或者打包到指定目录下
6.打包时尽量到相对路径下打包,减少绝对路径的使用,打包带着绝对路径,解压时很危险

#常用压缩组合
tar czf     //打包tar.gz格式
tar cjf     //打包tar.bz格式
tar cJf     //打包tar.xz格式

#常用解压组合
tar zxf     //解压tar.gz格式
tar jxf     //解压tar.bz格式
tar xf      //自动选择解压模式
tar tf      //查看压缩包内容

6.练习题

------作业答案地址------------

1.如何使用gzip命令对文件进行压缩、解压
2.如何用zip命令对文件以及目录进行压缩、解压
3.创建一个自己名字的文件至/opt目录
4.打包opt整个目录,并命名test_opt.tar.gz
5.查看打包好的test_opt.tar.gz里的文件
6.将打包好的test_opt.tar.gz内容指定解压至/tmp目录
7.打包etc目录下的所有文件,不要目录只要文件
8.打包etc目录下的所有文件,排除passwd,shadow
9.打包etc目录下的所有以p开头的文件
10.打包etc目录下所有大于1M的文件

二、用户基本概述

1.用户

能够正常登录Linux或windows系统的角色就是用户

那Linux与windows系统的用户有什么区别?
本质都是登录系统的,只不过Linux支持多用户同时登录,windows默认不支持,但是修改组策略的情况下也是可以多用户登录的

2.用户的作用

1.系统上的每一个进程(运行的程序)都需要特定的用户运行
2.每一个文件都有特定的用户拥有,所以访问一个文件或目录受到用户的限制
3.进程能够以何种方式访问某一个文件或目录, 与进程所关联的用户有关

3.如何查看用户

#查看当前用户
[root@db01 ~]# id
uid=0(root) gid=0(root) groups=0(root)

#查看指定用户
[root@db01 ~]# id lhd
uid=1001(lhd) gid=1001(lhd) groups=1001(lhd)

#查看指定用户指定id
[root@db01 ~]# id -u lhd
1001
[root@db01 ~]# id -g lhd
1001
[root@db01 ~]# id -G lhd
1001

4.查看进程的用户

[root@db01 ~]# ps -ef | grep mysql
mysql     27976      1  0 15:34 ?        00:00:03 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
root      28183   8859  0 17:29 pts/1    00:00:00 grep --color=auto mysql

5.查看文件的用户

[root@Centos7 ~]# ll
total 10004
drwxr-xr-x 84 lhd  lhd      8192 Jun 24 15:05 etc
-rw-r--r--  1 root root 10228919 Jun 24 16:55 etc.tar.gz

三、用户

[root@Centos7 ~]# ll /etc/passwd /etc/shadow
-rw-r--r-- 1 root root 1225 Jun 23 17:41 /etc/passwd
---------- 1 root root  723 Jun 23 17:41 /etc/shadow

1.用户文件 /etc/passwd

[root@Centos7 ~]# ll /etc/passwd
-rw-r--r-- 1 root root 1225 Jun 23 17:41 /etc/passwd

[root@Centos7 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
lhd:x:1000:1000::/home/lhd:/bin/bash
nginx:x:998:996:Nginx web server:/var/lib/nginx:/sbin/nologin

#以 :为分隔符,一共七列
nginx					#用户
x						#密码占位符
998						#uid
996						#gid
Nginx web server		 #用户的注释信息
/var/lib/nginx			 #家目录
/sbin/nologin			 #登录的shell,如果是/sbin/nologin,说明不能登录

2.用户密码文件

[root@Centos7 ~]# ll /etc/shadow
---------- 1 root root 723 Jun 23 17:41 /etc/shadow

[root@Centos7 ~]# cat /etc/shadow
root:$6$3M2hvrzRORqDie.l$dr19n45v.3yBadEcg87YXtzMLLCVrxDLjH8rlW.WEMikbjp7eVGVepBqvwwMdpj8ejLPnG2WhCR48QtYBEwIa1::0:99999:7:::
lhd:!!:18436:0:99999:7:::
nginx:!!:18436::::::

#以 :为分隔符,一共九列
root					#用户
!!						#如果是一串字符代表是密码,!!代表没有密码
18436					#代表修改密码的时间,按天算,距离1970年的天数
0						#使用天数,0代表无限制
99999					#密码可以使用的天数,99999代表永远不过期
7						#密码快过期了,提前几天提醒
'空'						#密码到期后保持活动的天数
'空'						#账户到期时间
'空'						#注释

1.用户登陆名              //用户的账号名称
2.加密后的密码            //用户密码,这是加密过的口令(未设密码时为!!)
3.最近一次密码更改时间     //从1970年到最近一次更改密码时间之间过了多少天
4.密码最少使用几天         //密码最少使用几天才可以更改密码(0表示无限制)
5.密码最长使用几天        //密码使用多少天需要修改密码(默认99999永不过期)
6.密码到期前警告期限      //密码过期前多少天提醒用户更改密码(默认过期提前7天警告)
7.密码到期后保持活动的天数 //在此期限内, 用户依然可以登陆系统并更改密码, 指定天数过后, 账户被锁定
8.账户到期时间            //从1970年起,账户在这个日期前可使用,到期后失效。
9.标志                    //保留

3.用户的分类

用户UID 系统中约定的含义
0 超级管理员(拥有最高权限)
1-200 系统用户,由系统分配给系统进程使用
201-999 系统用户,用来运行服务账户,不需要登陆系统(动态分配)
1000+ 常规普通用户
  • 注意: 在CentOS7系统之前, UID1-499用于系统用户, 而UID 500+则用于普通用户

四、用户相关命令

useradd		userdel		usermod

1.useradd

#使用useradd和adduser这两个命令,来创建用户

#添加用户前需要确定:
1.确定用户的默认组是否有特殊要求
2.确定用户是否允许登陆
3.确定用户的密码策略
4.确定用户的有效期
5.确定用户的uid是否有特殊要求

1)常用参数

-u 		#指定用户的UID,不能和现有ID冲突
-g 		#指定用户用户默认基本组
-G 		#指定用户附加组,用逗号隔开添加多个附加组
-d		#指定用户家目录
-c		#指定用户注释信息
-M 		#不建立家目录
-s		#指定用户默认shell
-r 		#创建系统账户, 没有家目录
-a 		#附加组,都留下,配合-G,追加

2)添加用户

[root@db01 ~]# useradd user -u 666 -g root -G bin,mail -d /home/userhome -c '测试创建用户' -s /sbin/nologin
[root@db01 ~]# ll /home/
total 0
drwx------ 2 lhd  lhd  83 Jun 24 17:17 lhd
drwx------ 2 user root 62 Jun 24 18:21 userhome
[root@db01 ~]# id user
uid=666(user) gid=0(root) groups=0(root),1(bin),12(mail)

#日常正经添加用户
[root@db01 ~]# useradd test -M -s /sbin/nologin
[root@db01 ~]# useradd test1

3)给用户设置密码

#方式一:在root下修改普通用户密码
[root@db01 ~]# passwd test1
Changing password for user test1.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
#该方法,设置密码时提示密码过短,一样可以修改成功

#方式二:将密码写入用户
[root@db01 ~]# echo "123456" | passwd --stdin test
Changing password for user test.
passwd: all authentication tokens updated successfully.

#方式三:切换到用户下,自己修改自己的密码
[root@db01 ~]# su test1
[test1@db01 root]$ passwd
Changing password for user test1.
Changing password for test1.
(current) UNIX password: 
New password: 
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
#该方式修改密码不能过于简单,不能跟以前密码相似,也不能很有规律

你可能感兴趣的:(linux day12 文件打包与用户基本概述)