第五篇:linux之vim编辑器、用户相关

第五篇:linux之vim编辑器、用户相关

一、vim编辑器

1、什么是vim?

vi和vim是linux下的一个文本编辑器。

2、为什么要使用vim?

因为linux系统一切皆文件,而我们工作中最多的就是修改某个服务的配置(其实就是修改文件内容)。

也就是说如果没有vi或vim,很多工作便无法完成。

3、vi和vim有什么区别?

vi和vim都是文本编辑器,只不过vim是vi的增强版,比vi多了语法高亮显示,其它的编辑功能基本无差。

ps:因为前期安装我们使用了最小化安装centos系统,所以默认情况下没有vim,我们需要通过yum install vim -y进行安装。

4、vim编辑器三种模式

  • 普通模式

    主要用于光标移动,可以对文本进行复制、粘贴、删除等功能。使用vim 文件名编辑一个文件时,已进入该文件就是普通模式。

    在这个模式下,可以进行光标移动、复制、删除、粘贴等操作。

"""1、命令光标移动"""
gg  # 光标跳转到文件顶端
G  # 光标跳转到文件末端
Ngg  # 光标跳转到当前文件内的第N行【常用】

"""2、单词和字符串移动"""
h  # 左移
l  # 右移
j  # 下移
k  # 上移
^/0  # 移动到行首,【0包含缩进字符,^不包含缩进字符】 【常用】
$  # 光标跳转到当前光标所在行的尾部 【常用】
w/W  # 正向移动到下一个单词开头 【常用】
b/B  # 反向移动到下一个单词开头 【常用】
e  # 正向移动到下一个单词词尾 【常用】
ge  # 反向移动到上一个单词词尾 【词尾】

"""3、文件内容较多"""
ctrl + b  # 向上翻页 【常用】
ctrl + f  # 向下翻页 【常用】

"""4、复制与粘贴"""
y  # 复制当前单个字符 
yy  # 复制当前光标所在行 【常用】
5yy  # 复制当前光标以及光标向下的4行
p(小写)  # 粘贴至当前光标的下一行 【常用】
P(大写)  # 粘贴至当前光标的上一行

"""5、剪切与删除"""
d  # 删除所选中区域【与v模式结合使用】
dd  # 剪切当前光标所在的行 【常用】
4dd  # 剪切当前光标所在的行以及往下3行
dG  # 删除当前光标以后的所有行 
D  # 删除当前行中光标及光标以后的内容  【常用】
x(小写)  # 删除当前光标所在位置的一个字符
X(大写)  # 删除当前光标所在位置之前的一个字符
di" # 删除引号之中的内容【常用】
da" # 删除包含引号的内容【常用】
df指定字符  # 删除光标到指定字符的内容

"""6、剪切、撤销"""
dd  # 其实也是剪切
u  # 撤销上一次的操作 【常用】
ctrl+r  # 恢复之前的操作

"""7、替换"""
r  # 替换当前光标标记的单个字符
R  # 进入REPLICE模式,连续进行替换,按ESC退出 

"""8、缩进"""
>> # 右缩进
m,n>  # m到n行缩进
  • 编辑模式

    主要进行对文本内容的编辑和修改,从普通模式进入到编辑模式,只需按一个键(i,l,a,A,o,O),当进入编辑模式时,会在屏幕最下一行出现INSERT标记,从编辑模式回到普通模式只需要按ESC键即可。

i  # 进入编辑模式,光标不做任何处理
a  # 进入编辑模式,将光标往后一位
o  # 进入编辑模式,并在当前光标下添加一行空白内容

I  # 进入编辑模式,并且光标会跳转至本行的头部
A  # 进入编辑模式,将光标移动至本行的尾部
O  # 进入编辑模式,并在当前光标上添加一行空白字符

v: # 进入可视模式
  • 命令模式

    主要用于保存、退出操作。在普通模式下,输入":"或者"/"即可进入命令模式。编辑模式不能进行命令模式。同时,退出命令模式也使用ESC

    在命令模式下,可以执行的操作有显示行号、搜索、替换、保存、退出。

"""1、文件的保存与退出"""
:w  # 保存当前状态
:w!  # 强制保存当前状态
:q  # 退出当前文档(文档必须保存才能退出)
:q!  # 强制退出当前文档不会修改当前内容
:wq  # 先保存,再退出
:wq!  # 强制保存并退出
:x  # 先保存,再退出
:number  # 跳转到数字number对应的行号 【常用】
:set nu  # 显示行号 【number】
:set nonu  # 不显示行号【nonumber】

"""2、文件内容查找"""
:/string  # 需要搜索的内容(查找)

"""3、文件内容替换"""
:1,5s/nb/yangyi  # 将1-5行中的nb改为yangyi
:s/yangyi/leichao/g  # 将当前行中的yangyi改为leichao
:%s/yangyi/leichao/g  # 将整个文本中的yangyi替换成leichao
    
"""4、另存为"""
:w /root/test.txt  # 将所有内容另存到/root/test.txt文件中

"""补充"""
vim编辑器中tab键默认是8位,不太美观,我们可以在/etc/vimrc中进行修改即可
set tabstop=4
set shiftwidth=4

二、用户相关

1、什么是用户?

用户指的是能够正常登录linux或windows系统。linux和windows用户的不同之处在于,linux支持多个用户同时登陆,且登录后之间操作并不影响。而windows虽可以创建多个用户,但不允许同一时间多个用户同时登陆。

linux系统会将用户的信息存放在/etc/passwd,记录用户的信息,但没有密码信息,密码被存放在/etc/shadow中,也就是说这两个文件相当重要,不可轻易进行修改和删除。

我们先打开/etc/passws进行查看。

root:x:0:0:root:/root:/bin/bash

我们接着来看/etc/shadow文件。

root:$6$VYtJxrzUXZo.7Glk$UDi6.yzxi0IvQh012U8lVQnYJ.CE4pywPp8XMNiZfcCmZL7XLANH9/d/OYHD1glh/.x2mLDArs6AI4OfhsRRE0::0:99999:7:::

我们接着了解一下相关的约定。

用户UID 系统中约定的含义
0 超级管理员,最高权限,具有极强的破环能力
1~200 系统用户,用来进行系统自带的进程,默认已创建
201~999 系统用户,用来运行用户安装的程序,所以此类用户无需登录系统
1000+ 普通用户,可以正常登录系统的用户,权限比较小,能执行的任务有限

2、相关操作

  • 查看用户的信息
"""查看当前登录用户的信息"""
id 
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
# uid: 用户id,系统只能识别uid,不能识别名字。
# gid: 组id

"""查看其它用户的信息"""
id yangyi1
uid=1000(yangyi1) gid=1000(yangyi1) groups=1000(yangyi1)

"""每一个进程都会由一个用户身份运行"""

"""查看更详细的信息"""
yum install finger
finger yangyi3
  • 用户相关命令

    下面我们围绕用户的创建、变更、删除等来进行阐述涉及到的命令:useradd、usermod、userdel

"""新增用户:useradd/adduser"""
useradd yangyi1  # 新增用户
passwd yangyi1  # 设置密码
输入密码[不设置为空]

"""为什么adduser也可以创建用户?"""
ls -l /sbin/adduser  
# adduser软链接到了useradd上
lrwxrwxrwx. 1 root root 7 Jul 29 20:10 /sbin/adduser -> useradd
    
"""为用户新建详细信息"""
# 先添加三个组【一个用户只能属于一个主组,属于多个附加组】
groupadd sa1
groupadd sa2
groupadd sa3
# 新增用户
useradd -u 5001 -g sa1 -G sa2,sa3 -c "new user" -s /bin/bash yangyi3
# 查看创建的用户
id yangyi3
uid=5001(yangyi3) gid=1002(sa1) groups=1002(sa1),1003(sa2),1004(sa3)

"""创建系统用户【重要】"""
创建mysql系统用户,-M不建立用户家目录 -s指定nologin使其用户无法登陆系统 
useradd mysql -M -s /sbin/nologin
"""修改用户:usermod"""
grep yangyi3 /etc/passwd  # 过滤出刚刚创建的用户信息
yangyi3:x:5001:1002:new user:/home/yangyi3:/bin/bash
# 举例【了解即可】
-usermod -c "new student" -md /bgx -s /bin/sh -l change_yangyi3 yangyi3

usermod -L yangyi3  # 锁定用户,之后无法登陆系统【lock】
usermod -U yangyi3  # 解锁用户【unlock】
"""删除用户:userdel"""
选项: -r 删除用户的同时删除用户的家目录
    
userdel yangyi3  # 删除yangyi3用户,但不删除用户的家目录
userdel -r yangyi3  # 删除用户,删家目录【慎用】

"""组的增删改"""
# 没创建一个用户,如果不指定组,则会创建一个同名的组,放在/etc/group中,密码放在/etc/gshadow中
cat /etc/group
...
yangyi1:x:1000:
yangyi2:x:1001:
sa1:x:1002:
sa2:x:1003:
sa3:x:1004:
            
groupadd sa   # 新增组
groupmod -g 1111 sa  # 改组id号
groupmod sa -n student  # 改组名字
groupdel sa  # 删除组(组下没有人,把人删除,再删)

3、su和sudo

  • su

    切换用户

su - yangyi1  # 打开新的shell,会加载自己的环境变量
su yangyi2  # 不打开新的shell,不会加载它的环境变量
  • sudo

    su命令在切换用户身份时,如果每个用户都能拿到root用户的密码,当某个用户泄露了root密码,系统就会变得不安全,为了解决这一问题,产生了sudo这个命令。

    sudo使得普通用户可以拥有一些root用户的权限,不需要输入密码。

usermod yangyi1 -G wheel  # 把yangyi1用户加入到了wheel这个附加组
sudo mkdir ll  # 就可以在/home/【公共区域】路径下创建文件夹了,如果不行,是因为超级管理员没有给你分配权限,让管理员配一下即可。

4、特殊权限

选项: + 增加权限 -减少权限 = 等于某个权限
a  让文件或目录仅可追加内容
i  不得任意更动文件或目录

"""举例使用"""
chattr +a test.txt
chattr +i test.txt
chattr -a test.txt
chattr -i test.txt

lsattr test.txt  # 可以查看文件具有哪些特殊属性

三、paramiko模块使用

使用python代码快速操作服务器。

import paramiko

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='10.0.0.100', post=22, username='root', password='123')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('yum install vim -y')
# 获取命令结果
result = stdout.read()
# 打印输出结果
print(result.decode('utf-8'))
# 关闭连接
ssh.close()
posted @ 2021-08-06 11:33  YangYi215  阅读(187)  评论(0编辑  收藏  举报