#Linux基础(三)
###vi/vim的特点
- vi/vim是一种纯文本编辑工具,它不像world可以排版,可以调整字体大小,可以改变字体颜色。
- vi/vim正是一个文本编辑工具,只能对文本的内容进行操作,比如新增内容、修改内容、删除内容等等。
- 全屏显示
###vi/vim的三种编辑模式 - 命令模式
- 输入模式
- 末行模式
| 编辑模式 | 作用 |
| :-------- |--------|
| 命令模式 | 用户执行命令,vi/vim的三种编辑模式比如复制行、粘贴行等等 |
| 输入模式 | 用于输入文本、修改文本等等 |
| 末行模式 | 用于查找文本、保存修改等等 |
###vi/vim的三种编辑模式间转换的方式 - 命令模式–>输入模式
i:insert,在当前光标所在字符的前面,转为输入模式
# Run the Setup Agent on first boot
-- INSERT
I:大写的i,在当前光标所在行的行首转换为输入模式
(I)#version=RHEL8
# Use graphical install
graphical
a:append,在当前光标所在字符的后面转换为输入模式
%end
%(a)naConda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
-- INSERT --
A:在当前光标所在行的行尾转换为输入模式
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty()
%end
-- INSERT -
o:open,在当前光标所在行的下方新建一行并转为输入模式
%end
()
-- INSERT -
O:大写的o,不是数字0,在当前光标所在行的上方新建一行并转换为输入模式
()
%end
-- INSERT --
输入模式–>命令模式
ESC
%end
命令模式–>末行模式
:
%end
:
末行模式–>命令模式
ESC ESC
###打开文件方式
- 文件打开后默认处于命令模式下
vim filename //打开文件
[root@localhost ~]# vim anaconda-ks.cfg
vim +n filename //打开文件并定位到第n行
[root@localhost ~]# vim +2 anaconda-ks.cfg
vim +/pattern filename //打开文件并定位到第一次被/pattern匹配到的内容行首
#version=RHEL8
# Use graphical install
graphical
###关闭文件方式
命令 | 意义 |
---|---|
q | 退出 |
wq | 保存并退出 |
q! | 不保存退出 |
w | 保存但不退出 |
w! | 强行保存 |
wq! | 强行保存并退出 |
x | 强行保存并退出 |
###关闭文件方式 | |
命令模式下关闭文件 | |
ZZ | |
###移动光标的方式 | |
移动光标方式 | 移动方法 |
:-------- | --------: |
逐字符移动 | h,l,j,k,#h,#l,#j,#k |
以单词为单位移动 | w,e,b,#w,#e,#b |
行内跳转 | 0,^,$ |
行间跳转 | gg,G,#gg,#G |
翻屏 | ctrl+f,ctrl+b,ctrl+d,ctrl+u |
###字符编辑 | |
字符编辑 | |
编辑命令 | 意义 |
:-------- | -------- |
x | 删除光标所在处的单个字符 |
#x | 删除光标所在处及其向后共#个字符 |
xp | 交换光标所在处的字符及其后面字符的位置 |
- x
()end
- #x
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
( )
end
- xp
(%ad_dukmp --enable --kkkkkrkkkkkkkkekserve-mb='auto')
###删除命令:d
- 命令模式下d命令常与跳转命令组合使用,如
d$:表示删除当前光标所在位置到行尾的内容
%packages
@(我的第一个笔记本)
kexec-tools
d^:表示删除当前光标所在位置到第一个行首非空白字符位置的内容
# Keyboard layouts
( )
# System language
d0:表示删除当前光标所在位置到绝对行首的内容
( )boot --enable
(#d)跳转符:删除跳转符指定范围内的#个,例如
(#dw)
(#de)
(#db)
dd:删除当前光标所在行整行
( )autopart
(#dd):删除包括当前光标所在行在内的#行
timezone Asia( )
D:删除当前光标所在行的内容,保留空行
%ad_dukmp --ena( )
###删除命令:d
- 末行模式下d命令的使用 :StartADD,EndADDd
这里的StartADD与EndADD是指一个范围,例如:
1,5d:表示删除第1到第5行
范围表示方法:
表示方法 | 意义 |
---|---|
. | 光标所在当前行 |
$ | 最后一行 |
+# | 光标所在行往后#行 |
$-# | 倒数第#行 |
% | 全文 |
###复制与粘贴 | |
复制命令:yy |
粘贴命令:p
p:小写p
若删除或复制的为整行内容,则粘贴至光标所在行的下方
若删除或复制的为非整行,则粘贴至光标所在字符的后面
P:大写p
若删除或复制的为整行内容,则粘贴至光标所在行的上方
若删除或复制的为非整行,则粘贴至光标所在字符的前面
###替换、撤销编辑与重复编辑操作
替换:r
R:替换模式,替换多个字符
r#:将当前光标的字符替换为#,这里的#可以是任何字符
撤销编辑:u
u:撤销前一次的编辑操作,连接u命令可以撤销此前的n次编辑操作
(#u):直接撤销此前的#次编辑操作
ctrl+r:还原最近一次的撤销操作
重复前一次编辑操作:.
###可视化与文本查找
视化模式:可视化模式下可以对选取的内容进行前面讲的所有编辑操作
v:按字符选取内容
V:ctrl+V按矩形块(行)选取内容
文本查找:
/pattern:从上往下查找匹配的内容
?pattern:从下往上查找匹配的内容
n:从上往下查找匹配到的内容的下一条
N:从下往上查找匹配到的内容的下一条
###查找并替换与行号控制
查找并替换:s
s命令只能在末行模式下使用,语法如下:
:ADDR1,ADDR2 s/pattern/string/gi
示例:
:1,5 s/abc/def/g 表示把第一行到第五行的所有abc替换为def
末行模式下显示或取消显示行号:
set nu:显示行号
set nonu:取消显示行号
###用户和组管理
- 用户分类
Linux用户分为管理员和普通用户两种:
| 用户类别 | 用户id |
| :-------- | --------|
|管理员|0|
|普通用户|1-65535|
其中普通用户又分为系统用户和登录用户两种:
| 用户类别 | 用户id |
| :-------- | --------|
|系统用户|1-999(为守护类进程获取系统资源而完成权限指派的用户|
|登录用户|1000-60000(为了完成交互式登录使用的用户| - Linux安全上下文
运行中的程序:进程(process)
以进程发起者的身份运行
root:cat
tom:cat
进程所能够访问的所有资源的权限取决于进程的发起者的身份
Linux通过安全上下文的概念完成用户权限的指派。
先判断用户是否是某文件的属主
再判断用户是否属于某个组
最后定其为其他用户
- Linux用户组类别
| 用户类别 | 特性 |
| :-------- | --------|
|私有组|创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名相同的组|
|基本组|用户的默认组|
|附加组(额外组) |默认组以外的其它组 |
Linux用户和组相关的配置文件
- 各配置文件说明
| 配置文件 | 作用 |
| :-------- | --------|
|/etc/passwd|用户及其属性信息(名称、uid、基本组id等等)|
|/etc/group|组及其属性信息|
|/etc/shadow|用户密码及其相关属性|
|/etc/gshadow|组密码及其相关属性。在用户执行基本组切换时使用|
配置文件 | /etc/passwd | /etc/group |
---|---|---|
第一字段 | 用户名 | 组名 |
第二字段 | 密码占位符 | 组密码 |
第三字段 | UID | GID |
第四字段 | GID | 以当前组为附加组的用户列表(分隔符为逗号) |
第五字段 | 用户的描述信息 | |
第六字段 | 用户家目录 | |
第七字段 | 用户的登录shell |
配置文件 | /etc/passwd |
---|---|
第一字段 | 登录名 |
第二字段 | |
第三字段 | UID |
第四字段 | 加密后的密码 |
第五字段 | 密码的最大使用期限 |
第六字段 | 密码警告时间段 |
第七字段 | 密码禁用期 |
第八字段 | 帐号的过期日期 |
第九字段 | 保留字段 |
sync :x :5 :0 :sync :/sbin :/bin/sync
//用户名 密码占位符 UID GID 用户描述信息 用户家目录 用户的登录shell
ftp :x :50 :
//组名 组密码 GID 以当前组为附加组的用户列表
halt :* :18397 :0 :99999
//登录名 加密后的密码 最近一次更改密码的日期 密码的最小使用期限 密码的最大使用期限
:7 : : :
密码警告时间段 密码禁用期 账号的过期日期 保留字段
root : : :
// 组名 加密密码 组管理员密码 组附加用户表
-
密码复杂性
密码复杂性策略:-
使用数字、大写字母、小写字母及特殊字符中至少3种
-
足够长
-
使用随机密码,不要使用有意义的单词或数字
-
定期更换,不要使用最近曾经使用过的密码
###用户和组相关的管理命令
-
-
用户管理
用户创建命令useradd
u UID //[UID_MIN,UID_MAX]定义在/etc/login.defs文件中
-u UID //[UID_MIN,UID_MAX]定义在/etc/login.defs文件中
[root@localhost ~]# useradd -u 1002 ll
[root@localhost ~]# id ll
uid=1002(ll) gid=1002(ll) groups=1002(ll)
-g GID //指定用户所属基本组,可为组名或GID
[root@localhost ~]# groupadd jj
[root@localhost ~]# useradd -g jj lo
[root@localhost ~]# id lo
uid=1003(lo) gid=1003(jj) groups=1003(jj)
-G groupname,… //附加组,可以有多个,用逗号隔开。组groupname必须事先存在
[root@localhost ~]# useradd -G jj vv
[root@localhost ~]# id vv
uid=1004(vv) gid=1004(vv) groups=1004(vv),1003(jj)
-c “COMMENT” //注释信息
[root@localhost ~]# cat /etc/passwd | grep yy
yy:x:1005:1005:hihi:/home/yy:/bin/bash
-d /path/to/directory //指定用户的家目录。此目录必须不能事先存在, //否则将不会从/etc/skel中复制环境设置文件
[root@localhost ~]# useradd -d /opt/tt tt
[root@localhost ~]# ll /opt/
total 28
-rw-r--r--. 1 root root 158 Jun 30 00:41 123.zip
-rw-r--r--. 1 root root 6 Jul 1 16:58 a.txt
-rw-r--r--. 1 root root 0 Jun 30 00:52 aa
-rw-r--r--. 1 root root 104 Jun 30 00:53 aa.tar.gz
-rw-r--r--. 1 root root 46 Jun 30 00:54 aaa.tar.bz2
-rw-r--r--. 1 root root 14 Jun 30 00:02 abc.bz2
-rw-r--r--. 1 root root 109 Jun 30 00:54 bb.tar.bz2
-rw-r--r--. 1 root root 160 Jun 30 00:57 cc.tar.xz
drwx------. 3 tt tt 78 Jul 4 16:29 tt
drwxr-xr-x. 2 root root 6 Jun 30 00:39 www
-s shell //这里的shell最好使用/etc/shells里面有的shell, \ // /etc/shells指定了当前系统可用的安全shell
[root@localhost ~]# useradd -s /sbin/nologin oo
[root@localhost ~]# cat /etc/passwd |grep oo
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
setroubleshoot:x:979:979::/var/lib/setroubleshoot:/sbin/nologin
roo:x:1000:1000:root:/home/roo:/bin/bash
oo:x:1007:1007::/home/oo:/sbin/nologin
-M //创建用户时不给其创建家目录
[root@localhost ~]# useradd -M bb
[root@localhost ~]# cat /etc/passwd |grep bb
bb:x:1008:1008::/home/bb:/bin/bash
-r //添加一个系统用户
[root@localhost ~]# cat /etc/passwd |grep xx
xx:x:975:974::/home/xx:/bin/bash
-D //直接打印/etc/default/useradd文件的内容或配合其它选项 \ /(例如-s SHELL)直接修改/etc/default/useradd文件中的默认值
[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@localhost ~]#