一、文件管理--压缩打包
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.
#该方式修改密码不能过于简单,不能跟以前密码相似,也不能很有规律