第五篇: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()