linux (简单了解)
目录
一 文件管理
二 用户管理
三 权限管理
四 软件管理
命令的解释,用来翻译用户输入的命令
Bash Shell 能做什么?
文件管理 软件管理 用户管理 权限管理 网络管理
Bash Shell
单行命令 脚本命令
4 linux 的登录提示符
[root@liuun2 /]#
root 当前登录的用户
liuun2 当前主机名称
/ 当前用户所在的路径
# 表示超级管理员
$ 表示普通用户
命令 | 选项 | 参数 |
ls | 命令 | 查看当前目录下的所有文件 |
ls -l | 命令+ 选项 | 以列表的形式显示所有文件 |
ls -l /tmp | 命令=选项+参数 | 查看某路路径下的所有文件 |
文件管理
对文件可以进行的操作
创建 删除 压缩 移动 复制 编辑 查看 查找
1. 文件的基础命令
bin | 普通用户可以操作的命令 |
sbin | 管理员可以操作的命令 |
home | 普通用户的家目录 |
root | 管理员用户的家目录 |
boot |
存放启动系统时需要的文件 grub 引导菜单.内核文件 |
dev |
设备(硬盘.光盘.终端) /dev/rendom (摇钱树) /dev/null 黑洞 |
etc |
配置 (网卡,系统配置,服务配置) /etc/hostname 主机名称 /etc/sysconfig/network-script/ (网卡配置信息) |
proc | 实时反馈当前系统的状态 |
tmp | 临时文件,那个用户上传的,那个用户删除 |
usr | 用户文件 |
var |
可变的目录 log pid 存放服务器进程的id -->Python ->30119 -->/var/pid/python.pid ( 30119 ) |
常用命令表单
which |
命令 | 查找命令的绝对路径 |
touch | /路径/要创建的文件 | 创建文件 |
cp | /原路径/复制的文件/复制到的路径 | 复制(拷贝) |
rm | ( -f | -fr ) /路径/文件名 | 删除文件 |
cat |
(-A | -n) /路径/文件名 | 查看文件中的内容 |
head | (- n) /路径/文件名 | n选着查看的行数 |
tail | (- f ) /路径/ |
(符实时追踪文件末尾的变化) 仅查看文件末尾的10行 |
more less |
/路径/文件名 | 分页查看文件内容 |
mkdir | ( -p | -v) |
创建文件夹 (递归创建) (显示创建的过程) |
mv | /要移动的路径/文件名 /移动到的路径 | 文件移动 |
上传和下载
下载:
互联网到服务器
服务器到本地
上传:
本地到服务器
rz: 从本地上传到文件到 server
sz: 从server 下载文件到本地电脑
wget 获取互联网上的资源到本地
yum install wget -y
wget http://nginx.org/download/nginx-1.16.1.tar.gz
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
linux 编辑工具 vim
vim的基本介绍
1. 什么是vim?
文本文件对的编辑工具.
2. 为什么要使用vim?
linux中一切皆文件,需要修改配置文件,让软件按照我们的期望运行,所以使用编辑工具.
3.VI\VIM 的区别:
vim 有高亮显示
vi 没有高亮显示
VIM 的命令模式
复制: yy
粘贴: p
撤销: u
删除: dd | D 删除本行光标之后的所有内容
剪贴: (删除+粘贴)
光标操作
文件首行: gg
文件尾行: G
翻页操作:: ctrl+f向上翻页 Ctrl+b向下翻页
行首: ^ | 0
行尾: $
进入编辑模式
i: 直接进入编辑模式
o: 插入新的行,并且进入编辑模式
A: 光标移动到行尾,并且进入编辑模式
a: 光标向后移动一位,并且进入编辑模式
快速切换到你想要的行
vim file.py +Number
200gg 快速跳转到200行
:200 快速跳到200行
VIM 的编辑模式 (输入自己想写的代码)
VIM 的末行模式
保存: :w
退出: :q
保存并退出:: :wq
搜索: /search N 向上查 n向下查
替换:
:%s#要替换对的#替换成的#g
:1,5s#要替换的#替换成的#g
视图模式
shift+v 行模式:
复制 y
删除 d
Ctrl+v 块模式
加注释 shift+i -->输入#号注释符 -> 按ESC
删注释: 选中后,按 x 删除 一个字符
其他的操作
1. 开启行号: :set number
2. 搜索忽略大小写 :set ic
3. 取消高亮: :noh
vim 编辑故障:
打开文件,做了修改,关闭会话.
E: 直接编辑,会忽略关闭之前写的内容
R: 将之前编写没有及时保存的内容显示出来.确认没有错误保存退出
再次确认文件可以选择 D 删除或者是交换的swp文件,则不会再有提示
linux 文件类型
一切皆文件
- 文件
d 目录
s socket
c 字符设备
b 块设备 (磁盘)
file 查看文件的具体属性
linux 文件属性
-rw-r--r--. 1 root root 32 9月 27 11:46 test.py
- 文件;类型
rw-r--r-- 文件权限
1 硬链接次数
root 文件所属用户
root 文件所属组
32 文件大小
9月 27 11:46 最后修改时间 stat 详细时间记录
tas.py 文件名称
文件的压缩和打包
1.什么是打包?
压缩包是一种特殊的格式.将多个文件或者目录整理在一个文件中
2. 为什么要使用压缩包?
便于传输 压缩后体积会变小
3. 实现打包与压缩有哪些工具:
windows: zip tar
linux zip tar.gz
4. 压缩包如何实现:
gzip:(仅针对文件)
压缩: gzip /etc/yum.repos,d/CentOS-Bsae.repo
查看: zcat /etc/yum.repos.d/centOS-Base.repo.gz
解压: gzip -d /ect/yum.repos.d/CentOS-Base.repo.gz
zip:(针对文件和目录)
压缩: yum install zip unzip -y (原文件消失)
查看: zip -r yum_local.zip /etc/yum,repos.d/ /tmp/
解压: unzip yum_local.zip -d /pot/
tar.gz
c: 创建 z:压缩类型 f:指定文件名称 x:自动识别文件类型
创建 tar czf etc.tar.gz /ect/ /home/
压缩 tar xf etc.tar.gz
指定解压路径 tar xf etc.tar,gz -C /home/
用户管理
什么是用户
值能够正常登录操作系统
为什么要有用户
进程要依赖一个特定的用户身份,才可以正常的运行
服务器可能有多个用户,root的权限最大
用户分类
类型 名称 ID编号
超级用户 root 0
系统用户 1-999 为系统正常运转而使用的用户 系统用户 虚拟用户
普通用户 1000+ 能够正常登陆系统的用户 普通用户
进程能够以什么样的方式去访问文件或目录 . 取决于进程运行的'用户身份'对该目录或文件是否拥有对应的权限.
如何查询用户
id root (id+ 用户名)
得到 uid=0(root) gid=0(root) 组=0(root)
如何创建用户
useradd liuun (useradd 用户名)
id liuun 查看是否创建成功
uid=1001(liuun) gid=1001(liuun) 组= 1001(liuun)
创建的用户信息都放在那里 (存储用户信息以冒号为分割符,有7列)
cat /ect/passwd 查看用户信息
root:x:0:0:root:/root:/bin/bash
liuun:x:1001:1001:/home/liuun:/bin/bash
第一列 用户名称
第二列 密码占位符.(密码存放在 /ect/shadow 文件中)
第三列 用户的uid
第四列 用户的gid
第五列 描述信息 commit
第六列 用户的家目录
第七列 用户登录的Bash类型
用户的密码放在那里
/ect/shadow 文件中
创建用户的参数
-u: 指定用户的uid
-g: 指定用户的基本组 (不指定,默认创建与用户同名的组)
-G: 指定附属组
-c: 指定 注释消息
-s: 指定登录的bsah类型,(默认是 /斌/bash
-r: 指定系统用户
-M: 不创建用户的家目录
创建liuun用户,UID为5000.基本组为students.附属组为撒.注释信息为9211 new student.登录shell:/bin/bash
groupadd student
group sa
useradd liuun -u 5000 -g students -G sa -c '9211 new student' -s /bin/bash
创建mysql系统用户,-M不建立家目录 -s 指定Nologin使其用户无法登录系统
useradd mysql -人-M -s /sbin/nologin
如何删除用户
userdel -r username 删除用户,并删除用户的家目录 (不建议使用 -r )
如何为用户设置密码
设定密码的方式
交互式: passwd [username]
非交互式: passwd --srdin root 固定密码
echo $RANDOM | mdSsum | cut -c 2-10 | tee 1.txt | passwd --stdin root
批量创建用户
for user_name in old-{1..100}
do
pass=$(echo $RANDOM | md5sum | cut -c 2-10)
# 判断用户是否存在,如果存在则不创建
id $user_name &>/dev/null
if [ $? -eq 0 ];then
continue
else
# 创建用户
useradd $user_name
# 设定密码
echo "$pass" | passwd --stdin $user_name &>/dev/null # 设定密码,将结尾打到空
echo "Username: $user_name Password: $pass ok.." # 将用户名和密码输出到面板
echo "Username: $user_name Password: $pass ok.." >> user_password.txt #将用户名和密码输出到文件中
fi
done
交互式创建用户和密码
#!/usr/bin/bash
read -p "请输入你要创建的用户名称: " User
read -p "请输入你要创建的用户数量: " Number
#1.如何批量创建用户
for i in $(seq $Number)
do
user_name=$User-$i
pass=$(echo $RANDOM | md5sum | cut -c 2-10)
# 判断用户是否存在,如果存在则不创建
id $user_name &>/dev/null
if [ $? -eq 0 ];then
continue
else
# 创建用户
useradd $user_name
# 设定密码
echo "$pass" | passwd --stdin $user_name &>/dev/null
echo "Username: $user_name Password: $pass ok.."
echo "Username: $user_name Password: $pass ok.." >> user_password.txt
fi
done
用户组
组基本概念: 便于管理
组的分类: 所属组: 当创建一个用户时,如果不指定主组,会自动创建一个同名的组
附加组: 创建用户时可以指定我们新加入的附属组.此时用户就可以具有附加的组的权限
(主组只能有一个.附属组可以有多个)
创建组
-g 指定gid (默认不指定.则从1000+开始)
groupaddu -个5001 devops
删除组
groupdel decops
groupdel devops
groupdel:不能移动用户 'liuun' 的主组
userdel -r liuun
groupdel students
用户提权相关
su 切换身份
sudo 提权
权限管理
1. 什么是权限?
权限主要用来约束用户能对系统所做的操作
2. 为什么要使用权限?
因为系统中不可能只存在一个人root用户,一定还有其他的户, 为了保护每个登录的用户的隐私和工作环境,所以就有了权限
3.权限和用户之间的关系?
1) 系统给每个文件定义了三个身份 属性 属组 其它
2) 每个身份分别对应了三种权限 r读4 w写2 x执行1
4. 为什么要设置权限?
进程运行需要一个用户,而进程在完成上传的操作时.需要条用对应的用户来执行,能否执行成功,取决于给用户对该文件是否拥有权限
5. 怎么修改权限? (chmod)
chmod 640 文件名
6. 变更一个文件属主和属组/
chown -R www.www 文档-demo/
7 通过一个文件 文件上传和下载的demo?
1)安装PHP环境
setenforce 0 #关闭selinux
systenctl stopfirewalld #关闭fireewalld防火请
yum install httpd php -y
systenctl start httpd
wget http://fj.xuliangwei.com/public/kaoshi.zip
unzip kaoshi.zip -d /var/www/html/
2) 如果不调整权限,前台会提示成功,但实际是失败的
tail -f /var/log/ httpd/error_log
3) 变更写入目录的属主和属组(不要修改为777,权限太大不好)
1检查进程运行的用户身份是什么: apache
ps -ef | grep httpd | head -2
root 24130 1 0 10:13 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND #Master进程
apache 24132 24130 0 10:13 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND #Worker进程
2 检查进程要写入的目录是什么权限:
ll -d /var/www/html/
drwxr-xr-x. 2 root root 77 9月 29 10:21 /var/www/html/
总结: 写布景区的原因: 进程会调用apache用户往 /var/www/html目录写, 而apache用户对/var/www/html目录仅拥有 读和执行,所以会失败.
. 3 调整/var/www/html 属主和属组
[root@oldboy-pythonedu ~]# chown apache.apache /var/www/html/
[root@oldboy-pythonedu ~]# ll -d /var/www/html/
drwxr-xr-x. 2 apache apache 77 9月 29 10:21 /var/www/html/
3.4) 最后验证程序是否能正常上传文件至/var/www/html/中
[root@oldboy-pythonedu ~]# ll /var/www/html/2020-09-29/ -d
drwxr-xr-x. 2 apache apache 25 9月 29 10:27 /var/www/html/2020-09-29/
[root@oldboy-pythonedu ~]# ll /var/www/html/2020-09-29/
-rw-r--r--. 1 apache apache 438 9月 29 10:27 2_oldxu.txt
rpm软件包管理
2.二进制包 解压即用
3.源码包 编译 ---> 二进制可执行文件
A包 -> B包 -> C包
--> D包 --> E包
---> F包
安装
[root@oldboy-pythonedu ~]# rpm -ivh https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/vsftpd-3.0.2-27.el7.x86_64.rpm
卸载
[root@oldboy-pythonedu ~]# rpm -e vsftpd
升级:Uvh
[root@oldboy-pythonedu ~]# rpm -ivh https://mirrors.aliyun.com/mongodb/yum/redhat/7/mongodb-org/3.0/x86_64/RPMS/mongodb-org-shell-3.0.0-1.el7.x86_64.rpm
查询结果
[root@oldboy-pythonedu ~]# rpm -qa | grep mongodb
mongodb-org-shell-3.0.0-1.el7.x86_64
升级版本
[root@oldboy-pythonedu ~]# rpm -Uvh https://mirrors.aliyun.com/mongodb/yum/redhat/7/mongodb-org/3.2/x86_64/RPMS/mongodb-org-shell-3.2.0-1.el7.x86_64.rpm
再次检查
[root@oldboy-pythonedu ~]# rpm -qa | grep mongodb
mongodb-org-shell-3.2.0-1.el7.x86_64
查询命令:
[root@oldboy-pythonedu ~]# rpm -q httpd #查询安装或者没有安装
[root@oldboy-pythonedu ~]# rpm -qa #显示系统中所有已安装的软件包
[root@oldboy-pythonedu ~]# rpm -qa | grep httpd #查询所有系统已安装的软件包,过滤指定的包名
[root@oldboy-pythonedu ~]# rpm -qc httpd #仅查看httpd这个包的配置在哪里
[root@oldboy-pythonedu ~]# rpm -ql httpd #查看httpd这个包所有的文件存储的路径
痛点: rpm工具还是无法解决依赖间关系, 所有就有了 yum工具.
源: 存储在服务器中的一个repo文件, 文件中存储的是仓库的地址
仓库: 一推软件包的集合,源如果指向这个仓库,那么服务器就可以直接获取该仓库中的软件包
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
安装
[root@oldboy-pythonedu ~]# yum install samba -y
更新
[root@oldboy-pythonedu ~]# yum update samba -y
卸载
[root@oldboy-pythonedu ~]# yum remove samba -y
查询
知道命令,但是不知道安装哪个软件包,
知道配置文件的路径,但是不知道是哪个软件包生成出来的.
[root@oldboy-pythonedu ~]# yum provides ifconfig
[root@oldboy-pythonedu ~]# yum provides /etc/my.cnf
[root@oldboy-pythonedu ~]# yum clean all #清理所有的缓存
[root@oldboy-pythonedu ~]# yum makecache #生成缓存
[root@oldboy-pythonedu ~]# yum repolist #查看仓库中的软件包