[RHEL7基础篇-2] 文本编辑器、基础命令与SSH服务

文本编辑器

Linux下的文本编辑器有两种模式,一种是图形化界面的文本编辑器代表有:包含在KDE当中的kwrite和包含在Gnome当中的gedit;另一种则是终端下的命令行文本编辑器,其中代表有:vi与vim;下面将逐一介绍这两类的文本编辑器的使用方法

kwrite与gedit

这两种图形化界面的文本编辑器分别属于KDE和Gnome这两类型的桌面环境,其中Ubuntu的图形化界面就是属于KDE桌面环境的,而Redhat的图形化界面则是属于Gnome桌面环境,而我们本次学习的Linux为Redhat,所以kwrite在这里并不适用,那下面就展示gedit在Redhat当中的使用方法

#使用gedit需要在Redhat图形化界面下操作,后续会讲述如何从多用户模式下安装图形化界面
#如果图形化界面已经安装完毕,那只需要在终端当中输入以下命令即可调用
#直接打开gedit(无指定文件)
> gedit
#指定文件使用gedit打开(anaconda-ks.cfg为某一个指定文件)
> gedit anaconda-ks.cfg

使用gedit前必须要确定已经安装图形化界面Gnome,下面将会演示如何从多用户模式下安装图形化界面并调用gedit
注:由于[RHEL7基础篇-1] 简介及安装当中已经成功安装了有图形化界面的系统,所以下面将会对已安装的系统进行改造
由于需要使用到yum,所以我们需要先创建yum创库来让yum对已安装的包进行管理,我们使用RHEL7.6的iso镜像作为yum仓库进行挂载在/mnt/rhel7.6上,操作如下
在这里插入图片描述
在这里插入图片描述

#配置yum仓库需要先把iso挂载到上述所说的/mnt/rhel7.6目录下
> mkdir /mnt/rhel7.6
> mount /dev/sr0 /mnt/rhel7.6
#若/etc/yum.repos.d下有其他的.repo文件可以对该文件进行删除
> vim /etc/yum.repos.d/base.repo
####################
[base]
name=base
baseurl=file:///mnt/rhel7.6/
gpgcheck=0
####################
#先清除所有yum库的缓存,之后查看yum的列表进行测试
> yum clean all
> yum list

若yum的列表当中可以看到base即为yum配置成功
在这里插入图片描述

#Redhat的图形化界面分别是由这几类包进行支撑的,分别是xorg*、gnome*、glx*
#下面要把原先安装的这几类包给卸载
> yum -y remove "xorg*"
> yum -y remove "gnome*"
> yum -y remove "glx*"
#然后需要把systemd的target进行更改,需要输入以下命令
#get-default可以查看当前的target
> systemctl get-default
> systemctl set-default multi-user.target
#该项操作与reboot同样效果,为激活改变当前调用target的模式
> systemctl isolate multi-user.target

最后在VMware的界面可以看到系统已经进入了multi-user的界面了
在这里插入图片描述
在多用户模式当中需要先登录root帐号,之后需要对之前的步骤进行反操作即可,即安装包与改变target,操作如下

#使用yum安装图形化三大组件xorg*、gnome*、glx*
> yum -y install "xorg*"
> yum -y install "gnome*"
> yum -y install "glx*"
#修改默认target
> systemctl set-default graphical.target
#激活当前的target模式为graphical.target
> systemctl isolate graphical.target

经过上述的操作之后图形化界面就已经可以正常运作了,之后运行gedit只需要在系统终端当中输入命令就可以使用gedit了

vi与vim

vi是一款由加州大学伯克利分校,Bill Joy研究开发的文本编辑器。多使用与UNIX与Linux当中。而vim则是vi的一款增强版本,vim在搜索文本文件时可使用正则表达式来提高搜索效率,其还具有多级撤销、易用性、语法加亮、可视化操作、对vi完全兼容、高度可配置性等特点,目前在Linux当中最为常用的终端下的命令行文本编辑器则为vim,vim在unix、windows 、mac等多操作平台当中均有使用,下面将主要介绍在Linux当中最常用的vim文本编辑器,以下为vi与vim的主要注意点

  • vi和vim的主要区别是,vim具有颜色显示并支持程序语法
  • vim对比起vi,其拥有自己的配置文件,分别为"/etc/vimrc",“用户家目录下的.vimrc”,“用户家目录下的.viminfo”,其中包含Vim核心全局设置(称为vimrc)的文件可以在各个Vim安装之间共享
  • vi与vim当在编辑文件时会出现.swp为后续的隐藏文件,编辑时所做的修改会临时存入.swp文件,系统死机时且未保存时,下次编辑时,可(R)恢复至修改过程的样子,而不是源文件

vi的三种模式

  • 一般模式(浏览模式)
  • 编辑模式(ESC回到一般模式)
    在一般模式可键入i、INSERT、a、o、R来进入编辑模式,其中o会换行
  • 命令行模式(ESC回到一般模式)
    当在一般模式下时可以键入:,/,?进入命令行模式。

一般模式和命令行模式下可使用多种不同的命令对文本文件进行操作,如下表所示

  • 一般模式下
命令效果
0光标所在行行头
$光标所在行行尾
G到文件最后一行
nG到文件第n行
gg到文件第一行
nENTER光标向下移动n行
n向下重复前一个搜索的动作
N向上重复前一个搜索的动作
x向后删除
X向前删除
dd剪切整行
ndd从光标位置开始剪切n行
d1G从第一行开始剪切到(包括)光标行
dG剪切光标位置到最后一行
d$剪切光标位置到该行行尾
yy复制光标所在行
yny,nyy复制光标所在行以下(包含光标所在行)的第n行
ynG复制第n行到最后后一行
yG复制光标所在行(包含光标所在行)到最后一行
y$复制光标位置到该行行尾
P粘贴到光标行前一行
p粘贴到光标行后一行
u撤消前一操作
.重复前一操作
  • 命令行模式下
命令效果
/word向下查找word字符串
?word向上查找word字符串
:n1,n2 s/word/new/gn1到n2间word替换成new
:n1,n2 s/word/new/n1到n2间第一个word替换成new
:w保存数据
:wq保存并退出
:wq!强制存储后退出(权限相关,强制写入)
:w[filename]将编辑的数据另存为filename
:r[filename]读入filename内容到光标行后面
:n1,n2 w[filename]n1到n2行内容另存为filename
  • 命令行模式下vim的环境参数设置
命令效果
:set nu设置行号
:set nonu取消设置行号
:set ruler显示状态行
:set showmode显示INSERT编辑模式状态
:set all显示当前所有的环境参数设置值
:syntax(offon)

Linux基础命令

Linux相比于Windows是相对比较难入手的一个计算机系统,主要是因为Linux主要面对的人群并不是大众,而是一众的技术人员,他们大多都经过专业的培训,并且熟悉Linux的操作命令与方法。下面将介绍在Linux当中的帮助命令与基础命令,只有学会了这些基本的命令才能基本的把Linux用起来

帮助命令

在RHEL7当中有两种形式的帮助,一是该命令储存在/usr/share/man当中的man帮助文档,另一个则是命令本身的帮助提示,即-h/–help,但这一个并不是所有的命令都拥有这一个参数,大多数的命令都会有man帮助文档,该帮助文档当在安装包的时候就已经把man帮助文档放到了/usr/share/man的目录下了,而通常man所提供的帮助是最全面与详细的(因为这些文档都是由开发者自己编写的),-h/–help则是简单的提示,下面将介绍这两种求助方法的使用

  • man

使用方法:man [-option] {command/file}

参数用法:

参数备注
-a默认情况下,man将在显示找到的最合适的手册页后退出。 使用此选项将强制man显示名称与搜索条件匹配的所有手册页。
-f等同whatis,将会查询whatis数据库并放回关键字相关的帮助信息
-h显示帮助信息
-M指定搜索帮助文档的路径
5配置文件的帮助文档
上述为最常用的参数,如果需要更详细的了解man的更多参数可在终端输入"man man"

使用示例:

#显示cp的帮助文档
> man cp
#在whatis数据库当中查找cp的帮助信息
> man -f cp
#显示shadow的配置帮助
> man 5 shadow

源代码编译软件包的man使用

#-M参数则为指定帮助文档的路径为/usr/local/ntfs-3g/share/man
> man -M /usr/local/ntfs-3g/share/man ntfs-3g
#修改man配置文件,RHEL6是man.config
> vim /etc/man_db.conf
####################
...
MANDATORY_MANPATH                       /usr/local/ntfs-3g/share/man
...
####################
#测试
> man ntfs-3g
  • -h/–help

使用方法:command {-h/–help}

使用示例:

#man拥有-h与--help两个帮助参数
> man -h
> man --help
#cp是只有--help的参数,并没有-h的参数
> cp --help

基础命令

Linux当中的基础命令常用的这几种:cp(复制文件)、cat(输出文件内容在终端)、less(浏览文件,但不会加载文件所有内容)、more(与less类似,但是并不能往前查看)、vim(详细可查看文本编辑器当中的内容)、tail(默认显示文件从末尾数起10行的内容)、head(默认显示文件从开头数起10行的内容)、mv(移动文件,剪切,重命名)、mkdir(创建目录)、touch(创建文件)、pwd(显示当前路径)、rm(删除文件或目录,删除目录)等,下面将会给出以上命令的相关示例

#复制文件到指定目录
> cp source_file destination_folder
#输出全部文件内容到终端
> cat file_path
#文件内容显示在阅读器当中,但并没有全部读取文件内容,并且可以往前往后翻看
> less file_path
#输出文件内容在终端,并无全部读取文件,在末尾有显示已读取百分之几的文件内容,但无法往前翻看
> more file_path
#vim可翻看前面的章节
> vim file_path
#显示文件末尾内容,-n参数可以设置显示行数,默认为10,-f可实时更新文件内容(主要用于查看日志文件)
> tail file_path
> tail -n 20 file_path
> tail -n 20 -f /var/log/messages
#显示文件开头内容,-n参数可以设置显示行数,默认为10
> head file_path
> head -n 20 file_path
#移动文件到指定目录或重命名文件
> mv source_file destination_folder
> mv old_name new_name
#创建目录,当要创建多级目录(上级目录并无创建)时需要加上-p参数,在同一目录下创建多个目录
> mkdir path
> mkdir {a,b}
> mkdir -p path
#创建文件,如需编辑则需要使用vi/vim打开该文件进行编辑
> touch "file_name"
#显示当前所在路径
> pwd
#删除文件或目录
#当删除目录是需要加-r参数
#-f为强制删除(当不加f是删除文件时会向你确认是否要删除文件)
#-v为删除过程可见 ,当文件过多,远程删除会产生流量
#-i为删除时确认
> rm file_path
> rm -iv file_path
> rm -vf file_path
> rm -rvf folder_name
#删除海量小文件,如邮件队列邮件
#若删除文件的文件名存在空格等特殊字符应该要使用“”或者‘’来表示是一个整体与强制转换
> cd /var/spool/clientmqueue/
> ls | xargs rm -rvf
#显示文件或目录列表,"ll"等同于"ls -l",但是ll并不是一个命令,而是一个别名,无法用man获取帮助
#别名可在/etc/profile当中进行全局配置(需要执行配置完成后的profile文件)
#在用户家目录下的~/.bashrc可以设置单独用户的别名设置(需要执行配置完成后的.bashrc文件)
#添加别名命令为
> vim /etc/profile
#在末尾添加
####################
...
alias alading='echo "神灯"'
####################
#测试,~/.bashrc配置完成后也需要同样操作
> . /etc/profile
> alading
#查看目录文件列表(不包含隐藏文件)
> ls
#查看目录文件列表(包含隐藏文件)
> ls -a
#查看目录文件列表(显示用户读写权限,但不包含隐藏文件)
> ls -l
#查看目录文件上下文
> ls -z
#查看指定目录文件(显示用户读写权限)
> ls -dl
#查看目录文件大小(以K为单位,不带单位,从小到大)
> ls -s
#查看目录文件大小(以K为单位,带单位,从小到大)
> ls -sh
#查看目录文件大小(以K为单位,不带单位,从大到小)
> ls -S
#查看目录文件大小(以K为单位,带单位,从大到小)
> ls -Sh
#用于切换目录
#.当前目录 ..上一层目录 -前一个工作目录 ./file_name相对路径 /file_name绝对路径
#~ 当前用户家目录 * 匹配任意字符(0或多个) ? 匹配一个字符
> cd path
> cd ..
> cd -
> cd ~
> cd /etc/*
> cd /etc/file_nam?

经过上面的长篇大论,掌握了上面的基本命令后基本上就已经可以满足最基本使用Linux的要求了,即增删改查,下面将提出一个思考题,题目1-1如下:

  • 创建目录/tmp/lsidr并在其中,用如下方式创建三个不同名文件(a对应1,b对应2,c对应3),使用以下命令对三个文件大小进行填充"dd if=/dev/zero of=a bs=4k count=1",要求从大到小排序出文件名和对应的文件大小
  • 注:"dd if=/dev/zero of=a bs=4k count=1"命令的意思为把一份为4k的/dev/zero填充到a文件当中
    参考答案

SSH服务

SSH服务是Linux当中的一个基础服务,在安装系统是就已经默认安装,并且随机启动,在日常的运维与管理当中常用到的远程管理模式主要就是telnet与SSH,这两这最大的区别在于SSH是加密传输,而telnet则是明文传输,在这传输过程当中如果在中途被黑客拦截了带有密码的telnet数据包则很容易的获取到服务器的用户密码,从而对服务器进行攻击

SSH 的缩写为 Secure Shell ,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH,下面将介绍SSH在RHEL7当中的相关操作与配置

SSH安装与管理

安装

  1. Secure Shell(ssh)用于在远程系统上安全运行shell
  2. 安装
> yum install "openssh*"
  1. 其它方式安装(源代码或rpm)

管理

  1. 默认服务在22端口监听
#查看是否有监听22端口

> netstat -ntpl | grep :22
  • 启动和关闭
#RHEL6
> service sshd restart
> service sshd start
> service sshd stop
#RHEL7
> systemctl start sshd.service
> systemctl stop sshd.service
> systemctl restart sshd.service
  • 随机启动
    在RHEL6和RHEL7当中随机启动有所改变,RHEL6当中随机启动是由chkconfig来进行控制的,而RHEL7则是由systemd来控制的,由于RHEL6的随机启动会涉及运行级问题,将会在进阶篇进行讲解
#RHEL6
> chkconfig --level 2345 sshd on
> chkconfig --level 2345 sshd off
#RHEL7
> systemctl enable sshd.service
> systemctl disable sshd.service

SSH配置

  • SSH的配置文件在/etc/ssh/sshd_config当中,在每次修改该配置文件后需要重启sshd.service,下面将对配置文件进行讲解
#使用vim来对/etc/ssh/sshd_config进行修改

> vim /etc/ssh/sshd_config
#默认为监听0.0.0.0:22,并允许root远程登录
####################
#设置监听端口
Port 22
#设置监听地址
ListenAddress 0.0.0.0
#设置是否禁止root远程登录
PermitRootLogin yes/no
####################
  • 验证方式
  • 密码验证
#相当于 ssh root@192.168.116.3 -p 22
> ssh 192.168.116.3
#输入对应IP上指定用户名的密码方可登录
> ssh user@192.168.116.3
#如果配置当中修改了监听端口,需要加上-p来指定端口
> ssh 192.168.116.3 -p 21
  • 无密码验证
    无密码验证有两种方法实现,下面设定客户端:192.168.77.131,服务器端:192.168.77.128
    第一种方法:
#生成公钥和密钥
#ssh-keygen不加-t默认就是用rss加密方式(也可以使用ssh-keygen -t dsa)
#生成成功后,会在/root/.ssh/目录下,产生两个文件id_rsa(私钥)id_rsa.pub(公钥)
#如果是其他用户使用则需要su - other_user,下面服务端对应的root也要修改为other_user
> ssh-keygen -t rsa
#使用scp(Secure Copy,安全复制)把公钥传输给服务器端
> scp /root/.ssh/id_rsa.pub root@192.168.77.128:/home/
#下面的操作在服务器端进行
#这个文件若不存在的话,先创建,把通过scp传输到服务器的公钥内容输入到/root/.ssh/authorized_keys
> touch /root/.ssh/authorized_keys
> cat /home/id_rsa.pub >> /root/.ssh/authorized_keys
#测试:在客户端上进行操作192.168.77.131,远程登录到服务器端192.168.77.128,看是否需要密码验证
> ssh root@192.168.77.128

第二种方法:

#生成公钥和密钥,如果是其他用户使用则需要su - other_user
> ssh-keygen
#把公钥传输给服务器端
> ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.77.128
#测试
> ssh root@192.168.77.128

两种方法均可以使用,但是第二种方法相对于第一种方法较为简单,推荐使用第二种方法,下面是关于SSH无密码登录的三个思考题,题目2-1如下:

局域网内有三台机器A=192.168.116.1,B =192.168.116.3,C =192.168.116.4另外一个IP 192.168.116.2暂未分配给任何机器

  • A能无密码方式登录root@B, 当B上面的root密码发生改变后,A是否还能无密码方式登录B机器吗?
  • 当B的IP变成了116.2,A是否能无密码方式登录B?
  • 当A机器重新生成密钥对,A机器是否还能无密码方式登录B?
    参考答案

操作命令

这一部分将介绍上面测试与建立所用到的相关命令主要介绍SCP与SSH登录方式。

SCP(Secure Copy,安全复制)是一款在网络上的主机之间复制文件的程序,其使用SSH进行传输数据,并使用SSH来进行身份验证从而保障安全性,如果验证过程当中需要密码,SCP则会询问密码来进行身份验证,下面是相关示例

#传输file到192.168.116.3的/tmp当中
> scp file user@192.168.116.3:/tmp
#传输目录directory到192.168.116.3的/tmp当中
#当已文件存在、目录存在或目录存在文件时,则不会被覆盖!
> scp -r directory user@192.168.116.3:/tmp

下面是SSH登录方式的相关示例

#遥控操作:在192.168.116.3运行命令command
> ssh 192.168.116.3 "command"
> ssh 192.168.116.3 "ifconfig eth0"

题目答案

1-1

#创建目录/tmp/lsidr
> mkdir /tmp/lsidr
> cd /tmp/lsidr
> dd if=/dev/zero of=a bs=4k count=1
> dd if=/dev/zero of=b bs=4k count=2
> dd if=/dev/zero of=c bs=4k count=3
> ls -Slh

2-1

  • A能无密码方式登录root@B,当B上面的root密码发生改变后,A是否还能无密码方式登录B机器吗?

能,因为A与B此时的验证方式为公私钥验证,所以只要公私钥没有发生改变则没有影响

  • 当B的IP变成了116.2,A是否能无密码方式登录B?

能,因为A与B此时的验证方式为公私钥验证,这里只改变了B的IP,所以没有影响

  • 当A机器重新生成密钥对,A机器是否还能无密码方式登录B?

不能,当A重新生成密钥是已经改变了公私钥,所以无法成功通过公私钥验证身份,所以会登录失败

总结

该篇介绍了文本编辑器vi/vim,与一众基础命令,以及SSH服务,这里面我们已经开始跟Linux我了下手,基本已经算是认识Linux了,可以基本的应用Linux的一些基本功能了。

参考文献:
[1]: https://baike.baidu.com/item/Vi/8987313?fr=aladdin Vi(Unix及Linux系统下标准的编辑器)_百度百科
[2]: https://baike.baidu.com/item/VIM/60410?fr=aladdin VIM (Unix及类Unix系统文本编辑器)_百度百科

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JovaZou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值