一、权限
1. 权限介绍
- 逻辑权限
- 物理权限
- 普通用户的root权限
2. 逻辑权限:在Linux系统中,将所有东西都视为文件,都有固定权限表示。例:
drwxr-xr-x. 2 root root 4069 5月 13 15:27 home
-rw-r--r--. 1 root root 45537 5月 13 11:15 install.log
根据第一个字母(文件类型),d表示该文件是一个目录文件,-表示该文件是一个普通文件。后面每三个权限为一组,每组中分别有三个权限:
字符 | 权限 | 数字 |
r | 读 | 4 |
w | 写 | 2 |
x | 执行 | 1 |
除了第一个字母不参与权限表示,其他都是权限标识符:
第一组 | 用户 | user |
第二组 | 用户组 | group |
第三组 | 其他人 | other |
说明:权限的标识符号的位置不会发生任何改变:
第1位永远是文件类型;
第2-4位永远是读、写、执行,用户的权限;
第5-7位永远是读、写、执行,用户组的权限;
第8-10位永远是读、写、执行,其他人的权限;
如果某个文件权限标识为----------,那么说明此文件不允许任何的读取、写入、执行
- 修改文件/夹的权限 chmod
选项:-R代表递归处理要处理的目录下所有的子目录子文件的权限
修改文件/文件夹的权限时,可以使用字符权限,也可以使用数字权限。
touch test_1
当前文件的权限是-rw-r--r--,将此文件的权限修改为----------
chmod 000 test_1
若修改为用户可读可写可执行,用户组可读,其他人无权限,则
chmod 740 test_1
-rwxr----- root root 51 Jan 4 20:28 aaa
修改为root用户可读可执行,root用户组可写,其他人可读
通过数字:
chmod 524 test_1
通过字符:
chmod u-w,g-r+w,o+r aaa
chmod +r abc 代表是给abc的所有组统一加r读的权限
chmod +x abc 代表是给abc的所有组统一加x执行的权限
chmod +w abc 代表只给abc的用户加w写的权限
3. 物理权限
(1) 添加物理权限
修饰某个文件/夹不允许被修改。注:不能给 /、/tmp、/dev、/var添加物理权限。即便是root权限也不一定所有的文件都可以删。
语法:chattr [选项] file/dir
选项:
i | 表示不能以任何方式进行文件/夹的修改,增加,删除 |
a | 表示文件/夹只能追加,不能修改,删除 |
+ <属性> | 表示开启某文件/夹的权限 |
- <属性> | 表示关闭某文件/夹的权限 |
R | 表示递归处理 |
chattr +i aaa
如果出现:-bash: chattr: command not found
需要执行下载安装包:
yum install e2fsgrogs-1.42.9-19.e17.x86_64
chattr +i aaa
即便是root也是无法删除,修改,追加的
取消物理权限:
chattr -i aaa
只能追加,其他不行
chattr +a aaa
echo "123" >> aaa
cat aaa
a、i的使用场景:
一般情况,日志(log)文件用a的属性,配置(cfg)文件用i的属性
(2) 查看文件的物理权限(属性)
语法:lsattr [选项] 文件/夹
选项:
R | 表示递归处理 |
a | 表示查看所有文件的属性,包括隐藏 |
d | 表示显示目录的属性,而不是目录下文件的属性 |
chattr +a bbb
查看bbb文件的物理权限:
lsattr bbb
-----a----------
chattr -a bbb
lsattr bbb
----------------
4.修改用户的所有者和属组
用法:chown 所有者:属组 文件名
-rw-r--r-- 1 tom tom 19 Jan 4 16:00 aaa
修改 /opt/aaa 文件的所有者为bin
chown bin /opt/aaa
ll
-rw-r--r-- 1 bin tom 19 Jan 4 16:00 aaa
修改 /opt/aaa 文件的属组为adm
chown :adm /opt/aaa
ll
-rw-r--r-- 1 bin adm 19 Jan 4 16:00 aaa
修改 /opt/aaa 文件的所有者为root,属组为root
chown root:root /opt/aaa
-rw-r--r-- 1 root root 19 Jan 4 16:00 aaa
5.普通用户的超级权限
sudo(SuperUser Do),可以让普通用户执行部分root权限,保证了root的密码安全,且执行的每条命令都会被记录,便于日后的日志审计,例如用户执行过高危操作命令。
vi /etc/sudoers
该文件定义了root用户的权限,接下来设置tom用户具备root超级权限
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
tom ALL=(ALL) ALL
:wq!只读文件强制保存
使用sudo获取管理员的权限执行重启远程登陆的命令
sudo systemctl restart sshd
还可以监控谁用root身份执行什么命令什么时间:
vi /etc/sudoers
Defaults logfile=/opt/logs
之后的执行操作会以日志的方式保存到/opt/logs文件中,如果出现什么问题可以通过日志查看
二、打包压缩与解压缩
压缩:指通过某些算法,将文件尺寸进行相应的缩小,同时不损失文件内容。将多个文件或目录合并成一个文件,方便传递或部署。在Linux系统中,文件的后缀名不重要,但是对于压缩文件的后缀名是必须的,因为可以让其他的程序员根据文件的后缀名使用对应的算法进行解压。
Linux常见的压缩文件后缀名:
*.gz | gzip程序压缩的文件 |
*.tar | tar命令打包的数据,并没有压缩过 |
*.tar.gz | tar程序打包的文件,并且通过gzip压缩 |
1. gzip文件压缩与解压缩
1. 默认啥选项也不加是不保留源文件的压缩
gzip 文件名
2. 保留源文件的压缩(默认会把压缩内容输出到屏幕上),且通过输出重定向内容到指定压缩文件
gzip -c 文件名 > 压缩文件名(.gz)
3. 不保留压缩文件的解压缩
gzip -d 压缩文件名(.gz)
4. 保留压缩文件的解压缩
gzip -cd 压缩文件名(.gz) > 解压缩后文件名
例:
gzip -c sudoers > sudoers.gz
gzip -d sudoers.gz
gzip -cd sudoers.gz > sudoers
2. tar文件打包与解包
语法:
打包文件
tar -cvf 打包文件名(.tar) 要打包的文件名
查看打包文件
tar -tvf 打包文件名(.tar)
解包到指定目录
tar -xvf 打包文件名(.tar) -C 要解压的目录
-c: 打包
-x: 解包
-v: 打包文件名打印出来
-f: 打包文件的路径
例:
tar -cvf sudoers.tar sudoers
tar -xvf sudoers.tar -C /opt
3. tar.gz文件压缩与解压缩
打包并且压缩文件
tar -zcvf 压缩文件名(.tar.gz) 要打包压缩的文件名
查看打好包并且压缩文件的信息
tar -ztvf 压缩文件名(.tar)
解压压缩好的tar包到指定目录
tar -zxvf 压缩文件名(.tar) -C 要解压的目录
例:
tar -zcvf sudoers.tar.gz sudoers
tar -zxvf sudoers.tar.gz -C /opt
三、包管理工具
1. rpm的使用
RPM全称Redhat Package Manager,由Redhat公司提出来的,用于管理Linux下软件包的软件。
如果包名信息只是一个软件名加上版本,就是源码包,想要安装就需要编译,在linux系统中下载编译软件,再进行编译安装,较为繁琐。而rpm就是已经编译好的包可以直接安装。
优点:
(1) RPM 内含已经编译过的程序与配置文件等数据,可以让使用者免除重新编译的困扰
(2) RPM 在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可避免文件被错误安装
(3) RPM 文件本身提供软件版本信息、相依属性软件名称、软件用途说明、软件所含文件等信息,便于了解软件
(4) 由于软件信息都已经记录在Linux主机的数据库上,很方便查询、升级与卸载
缺点:
(1) 软件文件安装的环境必须与打包时的环境需求一致或相当
(2) 需要满足软件的相依属性需求
(3) 卸载时需要特别小心,最底层的软件不可先移除,否则可能造成整个系统的问题。
RPM只是记录依赖关系信息,但不是自动安装依赖软件
1. 安装一个包
rpm -ivh rpm安装包name
2. 升级安装包(如果之前安装过一个旧版本,使用该条命令会升级旧版本安装包,如果没有安装过旧版本就相当于普通安装命令)
rpm -Uvh rpm安装包name
3. 卸载一个包
rpm -e rpm安装包name
4. 查询安装包
rpm -qa
i表示安装
vh表示显示安装进度
例:查看jdk的rpm安装包
rpm -qa | grep jdk
缺点:无论安装还是卸载都有依赖关系的问题,要先安装或卸载rpm包的依赖包。
优点:自带编译后的文件,因此直接安装,免除用户对于源码的编译过程,且校验磁盘容量及版本信息,自带说明文档。
2. yum的使用
yum是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于rpm包管理,能够从指定的服务器自动下载rpm包并安装,可以自动处理依赖关系,且一次性安装所有依赖的软件包。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令。缺点就是必须得联网,因为要从服务器下载相应的安装包进行安装。
机制:
(1) yum有自己的仓库叫源,将rpm里面的软件都下载到yum库里
(2) rpm提供了每个软件的信息及依赖关系,yum分析每个软件的信息及依赖关系,生成一个安装软件的清单。
(3) 当要安装某个软件的时候,它会根据清单先安装依赖,再安装自己。
注:所有的yum源都存放在 /etc/yum.repos.d/ 目录下;
默认yum源是国外源,网速慢,需要修改yum源为国内的源。
yum 命令格式:
yum [options] [command] [package ...]
options: 可选选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等
command: 要进行的操作
package: 操作的对象
yum 常用命令:
列出所有可更新的软件清单命令: yum check-update
更新所有软件命令: yum update
安装指定的软件命令: yum install <package_name>
更新指定的软件命令: yum update <package_name>
列出所有可安装的软件清单命令(相当于rpm -qa): yum list
删除软件包命令: yum remove <package_name>
查找软件包: yum search <keyword>
清除缓存: yum clean all
生成缓存: yum makecache
注:通过yum安装包也是安装rpm包,因此通过yum安装后的包也可以通过rpm包相关命令查询到
配置阿里云yum源
1. 安装szrz工具,用于以后用rzsz上传下载文件
yum install -y lrzsz
2. 下载repo文件
文件下载地址: http://mirrors.aliyun.com/repo/Centos-7.repo
3. 用rz从windows上传Centos-7.repo文件到Linux系统的某个目录下
先备份cp CentOS-Base.repo CentOS-Base.repo.bac
上传阿里云的Centos-7.repo: rz
将之前缓存的包的信息清空
yum clean all
重新生成缓存(这次缓存会缓存的是阿里云包的信息)
yum makecache
四、扩展命令 vim编辑器
安装vim(root 用户执行):
yum install -y vim
按esc键进入一般模式:
执行复制和粘贴:
1. 复制光标所在行数据,粘贴到光标所在行的下一行
yy + p
2. 复制光标所在行数据,粘贴到光标所在行的上一行
yy + P
3. 复制包含光标所在行的3行数据,粘贴到光标所在行的下一行
3yy + p
执行删除
x向后删除字符,X向前删除字符
1. 删除光标所在行数据
dd
2. 删除包含光标所在的3行数据
3dd
3. 删除光标所在行到文件的末尾
d + G
撤销:u
进入文件的最后一行:G
进入文件的第一行: gg
:进入行命令模式:
搜索和替换:
1. 替换当前行,光标要定位到要替换的行
:s/目标/替换/g
2. 替换全文,光标不需要定位到要替换的行
:%s/目标/替换/g
/代表查找,n向下查找,N反向查找
显示行号:
:set nu
取消显示行号:
:set nonu
进入编辑模式:
i 从光标所在处插入
o 从光标所在下一行插入
参看视频:
【【海牛大数据】Linux教程(装什么虚拟机啊太OUT,直接练起)】https://www.bilibili.com/video/BV1K8411J7qV?p=51&vd_source=24c4af34d5c7196f301016bf3b610c3f