2018.09.23

1.vim的三种模式

普通模式:浏览文件
插入模式:对文件进行编辑
命令模式:临时更改vim的工作方式,需要更改/etc/vimrc文件

##命令模式##

2.字符管理

y       复制
y(3)l       复制单(3)个字母
y(3)w       复制单(3)个单词
y(3)y       复制单(3)行
y(G)y       复制全部

注:单词之间需要分割符号
d       删除
d(3)l       删除单(3)个字母
d(3)w       删除单(3)个单词
d(3)d       删除单(3)行
c       剪切
c(3)l       剪切单(3)个字母
c(3)w       剪切单(3)个单词
c(3)c       剪切单(3)行
注:在剪切之后vim会进入插入模式,要粘贴需要按[Esc]后[p]键粘贴
p       粘贴
u       撤销
ctrl+r      恢复撤销

linux基础学习【2】_第1张图片

vim编辑文件liuyu

linux基础学习【2】_第2张图片

yGy复制全部并按p粘贴

linux基础学习【2】_第3张图片

d8d删除后8行

linux基础学习【2】

c3l后在行尾P粘贴

linux基础学习【2】_第4张图片

u(3次,剪切,移动光标,粘贴)撤销3步

linux基础学习【2】_第5张图片

ctrl+r(3次,粘贴,移动光标,剪切)撤销恢复

3.vim可视化模式

v       字符可视化
V       行可视化
ctrl + v    块可视化

linux基础学习【2】_第6张图片

【v】移动光标实现字符可视化

linux基础学习【2】_第7张图片

【V】移动光标实现行可视化

linux基础学习【2】_第8张图片

【ctrl】+【V】移动光标实现块可视化

4.字符的替换

:%s/要替换的字符/替换成的字符/g
:%s/a/b/g
:1,5s/a/b/g             用b替换1到5行的a

linux基础学习【2】_第9张图片

按【:】输入2,4s/bin/haha/g,将2-4行中的bin字符串替换成haha

linux基础学习【2】_第10张图片

替换后

5.vim的分屏功能

ctrl+w s        上下分屏
ctrl+w v        左右分屏
ctrl+w c        关闭光标所在屏幕
ctrl+w 上下左右     光标移动到指定屏幕
:sp file2       同时编辑当前文件和file2

linux基础学习【2】_第11张图片

vim编辑文件liuyu

linux基础学习【2】_第12张图片

ctrl+w后按s,上下分屏

linux基础学习【2】_第13张图片

ctrl+w后按v,左右分屏

linux基础学习【2】_第14张图片

ctrl+w后按下方向键,光标移动至下方分屏上

linux基础学习【2】_第15张图片

ctrl+w后按c,关闭光标所在下方分屏

linux基础学习【2】_第16张图片

单屏编辑文件liuyu状态下【:】输入sp passwd,同时编辑两个文件。

6.在命令模式下光标的移动

gg      光标移动到文件的第一行
G       光标移动到文件的最后
:数字     光标移动到指定行
ZZ      保存退出
注意:ZZ在普通模式下使用

linux基础学习【2】_第17张图片

gg 光标移动至文件起点

linux基础学习【2】_第18张图片

G 光标移动到文件末尾

linux基础学习【2】_第19张图片

:5 光标跳至第5行

##插入模式##

7.在插入模式下光标的移动

i       在光标当前位置插入
I       在光标所在行首进行插入
o       在光标所在行另起一行插入
O       在光表所在行上一行起一行插入
a       在光标所在位置下一字符插入
A       在光标所在行尾进行插入
s       删除单个字符并进入插入模式
S       删除整行并进入插入模式

linux基础学习【2】_第20张图片

光标位于文件1行1列按【i】,直接在文章开头插入

linux基础学习【2】_第21张图片

光标位于文件3行2列按【S】,删除第3行并插入

8.vim的退出

q       文件未进行编辑操作辑时退出
wq      保存并退出
q!      强制退出不保存
wq!     强制退出保存,对只读文件编写,仅用户对当前文件有写权限使用
![](https://s1.51cto.com/images/blog/201809/27/e76bbe728e1a8e65380503ca40158862.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

按【:】后输入wq,保存文件并退出,重新进入文件修改内容已保存

linux基础学习【2】_第22张图片

文件内容修改后:q无法退出,:q!退出成功不保存

linux基础学习【2】_第23张图片

如图,当前用户对one文件仅有读权限

linux基础学习【2】_第24张图片

vim编辑时提示只读

linux基础学习【2】_第25张图片

:wq无法保存退出,:wq!强制保存退出,文件拥有者转换为当前用户

9.用户(组)的意义

系统最底层安全设定方式之一
方便限定使用者或组的权限

10.用户的查看

id a        查看a用户的id信息
    -u  查看用户的uid
    -g  查看用户的gid
    -G  查看用户的所有组id
    -n  用名称代替id号,要配合-ugG使用

linux基础学习【2】_第26张图片

分别查看用户的uid,组id,附加组id,配合-n使用显示对应的名称(图中为kiosk)

11.切换用户

su- a       切换至a用户

注:
1.-表示切换用户的同时切换环境。
2.高级用户切换低级用户不用密码,低级向高级或平级切换需要密码。
3.每切换一次用户都会在对应用户进程中打开一个shell
编辑完成后需要及时退出(exit或ctrl+d)
linux基础学习【2】_第27张图片

如图,kiosk用户切换至root时需输入密码,而root向较低级用户kiosk切换时无需

12.用户在系统中的存储方式

/etc/passwd     用户信息文件  用户名:密码:uid:gid:说明文字:家目录:配置文件
/etc/group      用户组信息文件 组名:组密码:组id:组成员
/etc/shadow     认证信息文件
/home/username      用户的家目录

linux基础学习【2】_第28张图片

如图,为存储的用户信息

13.用户管理命令

userdel a           删除用户a
    -r      删除用户所有信息
useradd a           添加用户a
    -u 88       指定用户uid为88
    -g 55       指定用户gid为55,55组必须存在
    -G 55       指定用户附加组id,55组必须存在
    -d h        指定用户的家目录名为h
    -c ha       指定用户的说明文字为ha 
    -s bin/bash 指定用户的登陆配置文件为bin/bash
groupadd a          建立用户组a
    -g 88       建立用户组并指定用户组id为88
groupdel a          删除用户组a
usermod 
usermod -l   b      a   将用户a的名称改为b
usermod -u   b      a   将用户a的uid改为b
usermod -g   b      a   将用户a的gid改为b
usermod -G   b      a   将用户a的附加组改为b
usermod -G   ""     a   删除用户a的所有附加组
usermod -c   ha     a   将用户a的说明文字改为ha
usermod -md      /jia       a   将用户a的家目录改为jia
usermod -s   /sbin/nologin  a   更改用户a的shell
usermod -L          a   冻结用户
usermod -U          a   解锁用户

linux基础学习【2】_第29张图片

建立uid为88,说明文字为haha的用户liuyu

linux基础学习【2】_第30张图片

递归删除用户liuyu的所有信息

linux基础学习【2】_第31张图片

root用户冻结用户liuyu,普通用户kiosk无法切换至liuyu,liuyu无法登入

14.用户认证信息

/etc/shadow
共有9列
用户名称:用户密码:用户密码最后一次被更改的时间:密码最短有效期:密码最长有效期:密码警告期限:用户非活跃天数:用户到期日:用户自定义列

15.用户密码

passwd      a   更改a用户密码
passwd  -l  a   加锁a用户的密码
passwd  -e  a   更改用户最后一次修改用户的时间为0,强制用户a修改密码
passwd  -u  a   解锁a用户的密码
passwd  -d  a   清空a用户的密码
passwd  -n 1    a   a用户在1天之内不能修改密码
chage   -E  2018-09-23  a   a用户在2018年9月23日到期

linux基础学习【2】_第32张图片

root修改用户kiosk密码

linux基础学习【2】_第33张图片

root用户设置liuyu在1天内不能修改密码,用户liuyu暂时无法更改。

##文件权限##

16.文件权限存在的意义

系统最底层安全设定方式之一
保证文件可以被相应的用户做相应的操作

17.文件权限的查看

ls -l   a(A)    列表显示a文件(A目录中所有文件)的属性
ls -ld  A   列表显示A目录本身的属性        
ll  a(A)    列表显示a文件(A目录中所有文件)的属性
ll -d   A   列表显示A目录本身的属性

linux基础学习【2】_第34张图片

ls -l显示当前目录中的文件属性ll等效,ls -ld显示目录file本身属性ll -d等效。

18.读取文件权限信息

- | rw-rw-r-- | 1 | kiosk | group | 4189 | Sep 23 22:21| 0923
1       2       3     4       5      6          7         8

1文件类型
-   空文件或者文本
d   目录
l   软链接(类比windows环境下的快捷方式)
s   socket套接字(类比模块的接口)
b   block块设备
c   字符设备

2权限
1-3:文件所有者的权限
4-6:文件所有者所在组其他成员的权限
7-9:文件所有者所在组之外,其他人的权限

3
文件:文件的硬链接个数(文件内容被记录的次数)
目录:目录中子目录的个数

4文件的所有者
文件的所有者为kiosk

5文件所有者所在的初始组
文件所有人所在的初始组为group

6
文件:文件的大小
目录:目录中字文件元数据大小(即文件的基础属性)
                注:其中文件名称每字符占一个字节

7文件内容最后被修改的时间

8文件名称

19.修改所有人和所有组

(a已存在的用户名 A已存在的用户组名 b要修改的文件名 B需要修改的目录名)
chown       a   b(B)    修改文件b(目录B)的所有者为a
chown       a.A b(B)    修改文件b(目录B)的所有者为a所有组为A
chown -R    a.A B   修改目录B及其中所有文件的所有者为a所有组为A
chgrp       A   b(B)    修改文件b(目录B)的所有组为A
chgrp -R    A   B   修改目录B及其中所有文件的所有组为A

##文件的权限##
    @权限的理解
    r:  对文件:是否可以查看文件中内容
        对目录:是否可以查看目录中有什么子文件或子目录
    w:  对文件:是否可以改变文件里面记录的字符
        对目录:是否可以对目录中子目录或子文件元数据进行更改
    x:  对文件:是否可以通过文件名称调用文件内记录的程序
        对目录:是否可以进入目录
    @更改方式
    chmod <+-=>   a(A)
    chmod u+x       a(A)    给a文件(A目录)的所有者添加执行权限
    chmod g-r       a(A)    给a文件(A目录)的所在组成员删去读权限
    chmod o=rwx     a(A)    给a文件(A目录)的其他成员添加读/写/执行权限
    chmod 421       a(A)    给a文件(A目录)的所有者添加r所在组添加w其他添加x
    注:对于文件而言最危险的权限为x。(二进制代码文件运行需要执行权限)
            对于目录而言最危险的权限为w。(对目录拥有写权限意味可以随意删除)
            系统默认不添加危险的权限。rwx分别对应421即(7表示rwx,5表示-wx,1表示--x)

linux基础学习【2】_第35张图片

练习

linux基础学习【2】_第36张图片

创建规定组

linux基础学习【2】

tom附加组为shengchan,harry附加组为caiwu,leo附加组为jishu 。

linux基础学习【2】_第37张图片

修改权限,仅shengchan组成员能写入sc,caiwu组成员能写入cw

linux基础学习【2】_第38张图片

如图,经测试leo能写入/pub,tom能写入/pub和/sc,harry能写入/pub和/cw,功能实现。